Linux device driver functional testing - testing

For the development of device driver in linux kernel, is there any general-purpose and automated test suite to cover the basic/minimal functionality of a specific kind of device driver? For example, if we test NIC driver, we can make sure that the basic function like send/receive packets and network configuration can be handled in a correct way. As for some unique functions of a specific device driver, we do not need to pay too much attention to it and only assure that its minimal functionality is correct. I assume this kind of test suite should leverage high level applications to verify functional correctness of the device driver instead of low level unit test.
Thanks

Among other things, Autotest is worth looking at. I used the tests it provides to check the drivers related to wireless networking some time ago.
Apart from that, the tests from the Linux Test Project could also be useful here.

Related

Zigbee sniffer to Penetrate Testing Zigbee network at home

I have installed Smart home temperature sensors with Zigbee network. I am trying to do a Penetrate Testing. I have installed WirelessShark. I purchased a CEL ME357 USB stick. But
I could not find driver for it. To proceed the test, can anyone suggest a working solution for me ?
It's a little hard to know exactly what you are trying to acheive, or what OS you are using etc, but hopefully the following helps answer your question.
I purchased a CEL ME357 USB stick. But I could not find driver for it.
Drivers for the CEL MeshConnect sticks are available on their website for both Windows and Mac -:
http://www.cel.com/parts.do?command=load&idRootPart=2707
Scroll down to the bottom of the page and there are downloads.
I have installed WirelessShark
There is sniffer software available that will work with standard Silabs software and runs on Java (so is portable across most operating systems). You can find the Java sniffer software which will work with Wireshark here -:
https://github.com/zsmartsystems/com.zsmartsystems.zigbee.sniffer
Note though that you will need to program firmware into the CEL stick as it does not come pre-installed. This normally requires that you purchase a developers kit from Silicon Labs in order to a) get the hardware, and b) get access to the firmware.
One of the easyest way is to use Zboss sniffer with Wireshark and one of the supported USB 802.15.4 dongle. For example TI CC2531EMK. It will need to be flashed with a specific firmware so you will also need a CC-debugger to perform programming.
An other solution is to use the Ubisys sniffer dongle directly with Wireshark but it is not same price.
I suppose there are lots of other sniffers but I personally used these and the first one is especially easy to setup.

Solution for a testing platform

We are looking for an automated testing software for our web application. We need to come up with a solution or software that our non-it staffs could write test cases as well as the developers.
For example I've run through some of them such as: SmartBear, National Instrument and IBM. Most of these guys are MS Windows based or commercial Linux distros which remove them from our list since we are all Debian based.
Any recommendation or guideline would be much appreciated.
Ps. We don't have any budget limit!
You're going to have a hard time getting tooling for non-technical testers to build test cases if you limit yourselves to Debian OS for developing and running the tests on. There's no reason you couldn't have a few Windows system to manage your test suites from -- those would run against your web site just fine, regardless of what stack it's hosted on. That would open you up to the tools you mentioned (and Telerik's Test Studio, the tool I help promote).
Those Windows systems could easily be run via whatever virtualization host you prefer, so you wouldn't even need physical systems to deal with that. You could easily share the same source control repository as your devs, too, since nearly every decent SCM has Windows clients.
If you're unwilling to consider having a few Windows boxes around for your testing, then you'll need to have a look at getting all your testers proficient in APIs and frameworks like WebDriver and Robot Framework. The Pages gem from Jeff Morgan (#chzy) in Ruby would be another option, as would Adam Goucher's Saunter (in Python).

Verifying IPv6 implementation

My development team is looking to implement IPv6 on embedded platform. One the primary issues we're encountering at this stage is creating our test environment. Currently the only verification suite that we have found is the one created by TAHI.org. Running through an initial setup of this suite, it appears to only be for *NIX based implementations.
Is there an available solution for creating a test environment other than this or going to UNH?
The TAHI tests, while they require a FreeBSD box to run, do not require that the target be UNIX based. In fact, we ran them against a VxWorks-based embedded device.
If memory serves, there are several "remote" scripts that you must implement, however, to (for example) reboot your target device so that compliance can be tested in cases where the IPv6 interface must go down and come back up.
UNH uses essentially the same tests as the TAHI suite. Running the TAHI tests is therefore highly recommended.

What is the best way to test clients of different programming languages with a server?

We have written clients in different programming languages (Java, .NET/Silverlight, Flash, Javascript) that communicate with a server, as our target is to support various technologies on client side. The functionality they are supposed to perform is the same.
One of the main challenges we are having now is finding a simple and effective approach for testing this variety of client technologies against the server. Currently we use maven, hooked with many maven plugins such as JSTestDriver, Flexmojo, NPanday and others which we have developed by our own to do this. Is there any better approach?
Any help would be appreciated, whether it is recommendation for available frameworks/tools or innovative ideas to do this.
Thanks
What you need is a clean design, otherwise everything is a mess and you have to test everything together.
Your server should have an interface with other systems (Browsers, desktop applications, mobile apps) and then test thoroughly this API. You can do that by using the appropriate framework, depending on technology used for the server. This should be your main test effort and then try to keep API stable, so that for every new version of the server you just run a regression test.
Meanwhile you can test the client applications alone by creating a mock server that uses the same API.
Last one would be your integration test where you run a live version of your server and your client application and you run integration tests.
expect is a good framework for testing program-external text interfaces such as client-server interaction. It operates with tests formulated in Tcl on a purely black-box logic level.

Programming USB in embedded system for sending some data to host for printing

I have been tasked with writing a USB driver for our embedded software to send raw data to Host. This will be used to send some logging data to host. We are using iMX31 litekit for development.
From the documents that I have read on USB, my understanding is that the embedded device will be in device mode only. Also it will only be communicating with host machine.
So can any one guide me here? Any article, reference or code is welcome.
Some things to consider:
Is this a high bandwidth device like a camera or data recorder, or a low bandwidth device?
For low bandwidth, I would strongly consider making your device act as a USB HID class. This is the device class that supports keyboards, mice, joysticks, gamepads, and the like. It is relatively easy to send data to nearly any application, and it generally doesn't require that you write a custom device driver on the host side. That latter feature alone is often worth the cost of lightly contorting your data into the shape assumed by the HID class. All the desktop operating systems that do USB can use HID devices, so you get broad compatibility fairly easily.
For high bandwidth, you would still be better served if your device fits one of the well established device classes, where a stock device driver on the host end of the wire can be used. One approach that often works is to use the Mass Storage class, and emulate a disk drive containing one file. Then, your device simply mounts on the host as if it were a disk, and you communicate by reading and writing to one (or a few) file.
I would expect there to be a fair amount of sample code out there for any serious USB device chipset that implements either or both of HID and Mass Storage.
If you really must wander into fully custom device territory, then you will need to be building device drivers for each host platform. The open source libusb library can be of some help, if its license is compatible with your project. There are also ways in newer versions of Windows to develop USB drivers that run in user mode using the User Mode Driver Framework that have many of the same advantages of libusb, but are not portable off the Windows platform.
The last custom device I worked on was based on a Cypress device, and we were able to ship their driver and an associated DLL to make our application code easier to build. I don't know off the cuff if there is any equivalent available for your device.
For a really good overview, I recommend the USB FAQ, and the latest edition of Jan's book, USB Complete.