Over-The-Wire Unit Test App
Posted: Fri Oct 07, 2011 11:38 am
I want to start unit testing the firmware in earnest! I can't do that in an efficient way with hand rolled binary packets, and writing this app myself would detract from my work on the firmware and project as a whole.
What The App Must Do
CLI or GUI are both fine, perhaps even a tab in Tunix could handle this, unsure.
Test Setup Format
The packet types/payload IDs are:
And the format of the data is defined by the ID under test, however the test app doesn't need to know about this.
So, anyone care to write this? I'd say it would take a decent dev less than a day to knock out. Longer with a GUI or in Tunix.
Fred.
What The App Must Do
- Send a hard reset to ensure a consistent state (though this shouldn't matter, perhaps make it an optional thing)
- Disable log streaming before commencing (again, this shouldn't matter, but will ease the logic in this app, again, optional, if the app can filter packets)
- Query information about the firmware that it is connected to and include them in the results
- Send predefined data in appropriate packet wrappers to the device and correlate replies with this
- Compare the reply with the defined expected reply
- Summarise the results of all tests in some sort of output (console and/or gui and optionally file)
- Read in individual test files or a test file with many tests in it and execute them all
- Nice-to-have: Be able to enter data into some sort of UI to execute as a test live
CLI or GUI are both fine, perhaps even a tab in Tunix could handle this, unsure.
Test Setup Format
- TestName = <arbitrary string>
- TestDescription = <arbitrary string>
- IDOfFunctionUnderTest = <0 - 65535>
- ArgumentData = <string of comma separated hex values>
- ExpectedReturnState = Error/OK
- ExpectedReturnData = <empty or up to about 2k of whatever, including required error code if expecting an error>
The packet types/payload IDs are:
Code: Select all
#define requestInterfaceVersion 0x0000
#define requestFirmwareVersion 0x0002
#define requestHardSystemReset 0x000A
#define requestUnitTestOverSerial 0x6666
#define requestDecoderName 0xEEEE
So, anyone care to write this? I'd say it would take a decent dev less than a day to knock out. Longer with a GUI or in Tunix.
Fred.