Unit test framework development

This project aims to develop a unit testing framework to improve code coverage and efficiency of firmware testing and development for a Global Navigation Satellite System (GNSS) device, which is also termed the device under test (DUT). The goal of the framework is to allow test cases targeting a spe...

Full description

Bibliographic Details
Main Author: Foo, Xiang Bing
Other Authors: Gwee Bah Hwee
Format: Final Year Project (FYP)
Language:English
Published: Nanyang Technological University 2020
Subjects:
Online Access:https://hdl.handle.net/10356/136931
Description
Summary:This project aims to develop a unit testing framework to improve code coverage and efficiency of firmware testing and development for a Global Navigation Satellite System (GNSS) device, which is also termed the device under test (DUT). The goal of the framework is to allow test cases targeting a specific feature or routine of the DUT to be developed easily and independently, which would lead to better code testing coverage. To achieve this, it was decided that a unit test framework employing scripting would be most ideal. The test cases will be developed in a script, which would then be interpreted by a script engine running on different hardware proxies communicating with the DUT. Libraries will be developed to create an abstraction layer of the proxy hardware such that test cases are proxy agnostic, unless proxy specific features are being tested. As such, development of test cases will be independent from the development of the DUT firmware, as well as other test cases. This allows the author of specific features and routines to develop their own tests which would be more comprehensive as they would know their own code well. These test cases also serve well when testing for regression on firmware revisions to verify that existing features and routines have not been compromised. Eventually, a test framework meeting the objectives of this project was implemented, incorporating the Pawn script engine. The test framework was able to meet performance and feature requirements, although its effectiveness could not be studied as the framework was not rolled out within the timespan of the project.