Context
Back in April, Codethink announced the Quality Assurance Daemon (QAD) tool: a lightweight Linux daemon designed to aid functional testing of software applications by interacting with the User Interface (UI) of an embedded system. We've recently made some enhancements to the tooling, and will be covering these in this blog post.
We have also added a notable feature in tandem to QAD: the QAnvas Web UI (pronounced 'canvas') designed to assist both in the creation of test scenarios and in facilitating remote access to the system under test. This allows us to easily visualise the remote system's display and monitor software behavior and simulate input injection events into the system, allowing for dynamic interactions with the software under test.
QAnvas web UI
While QAnvas can function independently, its functions are significantly enhanced when paired with QAD. Designed as a complementary software tool, QAnvas augments the QAD testing framework, creating depth and versatility to create a more flexible and user-friendly testing environment.
QAD specialises in automated device testing, but for integration with openQA, needles become essential to identify and verify UI elements. QAnvas steps in as a substitute for crafting and modifying needle files; an integral part of openQA. These files consist of images paired with JSON data, defining expected UI elements. QAnvas simplifies test creation by providing a visual interface to identify and map relevant UI areas, aligning seamlessly with the structural functionality of OpenQA. This makes QAnvas a versatile and translateable tool, facilitating effortless integration with the OpenQA testing framework.
Improvements
Keyboard API
QAD has been updated to accept keyboard inputs for sending keycodes to the test device. This allows for comprehensive testing via text based input fields, allowing QAD to simulate user interactions based on keypress events. Testers can verify that all keys work as expected, including letters, numbers, special characters, and function keys and evaluate the responsiveness and functionality of UI elements like buttons, menus, and dialogs to its corresponding input event. It can be taken one step further for multilingual and localisation testing across a global market supporting multiple languages and character sets, ensuring that the software is localised correctly.
QAnvas multi-click support
Modern vehicle infotainment systems feature a multi-layered interface which provides for a simpler UI experience but increases the need for comprehensive testing. In order to increase the efficiency of functional testing, the multi-clickpoint support in QAnvas reduces the need to create a new distinct testing parameter for every test sequence.
This feature simplifies the testing process by allowing the use of a single needle for navigation, in cases involving multiple destination screens. Rather than creating multiple individual needles for each screen, the multitouch feature allows testers to generate robust and efficient navigation and test scripts.
This feature becomes essential as the depth/complexity of the UI increases and a clear and efficient test sequence needs to be created.
ILM optimisations
The previous ILM backend captures screenshots, encodes them to a BMP file and then reads from the file to bypass the buffer. The extra save to file process has been deprecated and optimisated to remove the unnecessary file indirection by instead reading the pixels directly from memory-mapped file and then encoding and sending it through the network.
Static linking
QAD compiled with statically linked libraries ensures that all the dependencies required for the proper functioning of the system are included directly in the binary, making it more self-contained. This makes QAD more portable as it doesn't rely on the presence or version of external libraries on the target system and will demonstrate a predictable behavior. This also allows us to isolate the testing environment from the host system's configuration, which can be critical for consistency and repeatability in testing scenarios.
Conclusion
While QAD takes care of interacting with the hardware's UI, the QAnvas tool works as a visual feedback and interactive user interface tool. The two tools working in conjunction provide for a comprehensive testing ecosystem that allows the tester to navigate, observe, and control the device remotely.
The latest updates to QAD enhance its capabilities as a versatile and powerful tool for functional testing and quality assurance of software applications. The addition of a keyboard API, multi-clickpoint support, ILM optimisations, and static linking make QAD more efficient, compatible, and self-contained. These improvements empower testers and developers to conduct comprehensive and realistic testing, ensuring the reliability and performance of their software applications. QAD continues to evolve as a vital resource for maintaining software quality and reliability.
If you would like to learn more about this solution, please reach out to sales@codethink.co.uk.
Other Content
- Codethink/Arm White Paper: Arm STLs at Runtime on Linux
- Speed Up Embedded Software Testing with QEMU
- Open Source Summit Europe (OSSEU) 2024
- Watch: Real-time Scheduling Fault Simulation
- Improving systemd’s integration testing infrastructure (part 2)
- Meet the Team: Laurence Urhegyi
- A new way to develop on Linux - Part II
- Shaping the future of GNOME: GUADEC 2024
- Developing a cryptographically secure bootloader for RISC-V in Rust
- Meet the Team: Philip Martin
- Improving systemd’s integration testing infrastructure (part 1)
- A new way to develop on Linux
- RISC-V Summit Europe 2024
- Safety Frontier: A Retrospective on ELISA
- Codethink sponsors Outreachy
- The Linux kernel is a CNA - so what?
- GNOME OS + systemd-sysupdate
- Codethink has achieved ISO 9001:2015 accreditation
- Outreachy internship: Improving end-to-end testing for GNOME
- Lessons learnt from building a distributed system in Rust
- FOSDEM 2024
- Outreachy: Supporting the open source community through mentorship programmes
- Using Git LFS and fast-import together
- Testing in a Box: Streamlining Embedded Systems Testing
- SDV Europe: What Codethink has planned
- How do Hardware Security Modules impact the automotive sector? The final blog in a three part discussion
- How do Hardware Security Modules impact the automotive sector? Part two of a three part discussion
- How do Hardware Security Modules impact the automotive sector? Part one of a three part discussion
- Automated Kernel Testing on RISC-V Hardware
- Automated end-to-end testing for Android Automotive on Hardware
- GUADEC 2023
- Embedded Open Source Summit 2023
- RISC-V: Exploring a Bug in Stack Unwinding
- Adding RISC-V Vector Cryptography Extension support to QEMU
- Introducing Our New Open-Source Tool: Quality Assurance Daemon
- Achieving Long-Term Maintainability with Open Source
- FOSDEM 2023
- Think before you Pip
- BuildStream 2.0 is here, just in time for the holidays!
- A Valuable & Comprehensive Firmware Code Review by Codethink
- GNOME OS & Atomic Upgrades on the PinePhone
- Flathub-Codethink Collaboration
- Codethink proudly sponsors GUADEC 2022
- Tracking Down an Obscure Reproducibility Bug in glibc
- Web app test automation with `cdt`
- FOSDEM Testing and Automation talk
- Protecting your project from dependency access problems
- Full archive