Conference PaperPDF Available

Embedded software testing in research environment. A practical guide for non-experts

Authors:

Abstract and Figures

Testing is nowadays one of the most important part of product development lifecycle. The goal of this publication is to provide brief description of embedded software testing in research environment. It is divided into several parts and addresses the problem of testing embedded devices not only from the source code perspective, but it also takes into consideration testing the complete system behavior. The first part of the article focuses on comparison between automatic and manual tests, trying to decide when automated tests are useful and when useless or at least not cost effective. The paper describes mainly testing industrial automation devices and some methodologies dedicated for testing this type of devices. A significant part of the paper is related to unit testing and certification tests of device’s safety critical functions. Applicability of Test Driven Development is considered. In succeeding parts, functional tests, testing support tools and test documentation are described. An important step is automatic test report generation including coverage estimation methods. The last part is related to integration tests which often require building large testing infrastructure that consist of certified equipment and dedicated testing environment.
Content may be subject to copyright.
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
Embedded Software Testing in Research
Environment.
A practical guide for non-experts.
Marcin Bajer, Marek Szlagor, Marek Wrzesniak
ABB Corporate Research Center
Krakow, Poland
marcin.bajer@pl.abb.com, marek.szlagor@pl.abb.com, marek.wrzesniak@pl.abb.com
Abstract – Testing is nowadays one of the most important part
of product development lifecycle. The goal of this publication is
to provide brief description of embedded software testing in
research environment. It is divided into several parts and
addresses the problem of testing embedded devices not only from
the source code perspective, but it also takes into consideration
testing the complete system behavior. The first part of the article
focuses on comparison between automatic and manual tests,
trying to decide when automated tests are useful and when
useless or at least not cost effective. The paper describes mainly
testing industrial automation devices and some methodologies
dedicated for testing this type of devices. A significant part of the
paper is related to unit testing and certification tests of device’s
safety critical functions. Applicability of Test Driven
Development is considered. In succeeding parts, functional tests,
testing support tools and test documentation are described. An
important step is automatic test report generation including
coverage estimation methods. The last part is related to
integration tests which often require building large testing
infrastructure that consist of certified equipment and dedicated
testing environment.
Keywords—testing, functional tests, unit tests, integration tests,
software quality, test automation, manual tests, industrial
equipment, embedded software verification
I. INTRODUCTION
Testing is one of the last, and probably the most important
parts of developing new product life cycle. Although,
embedded software in research projects is often developed as a
technology scouting or feasibility studies, it is also crucial to
validate proper functionality and ensure appropriate level of
reliability of such devices.
For scientists who develop the software, programing is very
often secondary task apart from research activities. Rarely,
there is dedicated Quality Assurance (QA) team responsible for
tests implementation. This publication is a practical guideline
for non-experts who a re eager to improve software testing
techniques in their projects. It focuses on solutions and tools
which fit to specific requirements of research projects. Even
though, the main area of interest of this paper is testing
software for research project in industrial automation devices
many of presented methodologies can be used for testing
embedded software in general as well as desktop applications.
II. TYPE OF TESTS
Developing new industrial product can be divided into
several parts which often overlap each other. First of all there
are market requirements that determine necessity of building
them. Second, there is a part of product specification
(hardware selection, architecture and detailed timeline).
Afterwards, there is an embedded software development
section. Finally, it is a time to verify conformity of product
specification with a product real functionality. This huge part
is called testing. Software testing is very labor-intensive and
expensive; it accounts for approximately 50% of the cost of a
software system development [1].
In general, testing can be split into three major parts:
preparation of test specification, implementation of test cases
and finally test report generation. The first part is a key to
success. It requires a lot of system knowledge to define how
the product should work, what the proper reaction is and when
faults or warnings should appear. As a result of this section a
whole detailed test cases specification should be delivered. It
is recommended to keep this document under version control
system.
The most important part are the test cases themselves. The
main purpose of testing is to reduce risk [3]. Depending on
their correctness a firmware developer can fix bugs as well as
add some additional features. Every test case should be
described in details, which could be used for generating final
report. Report document should be some kind of a product
certificate that confirms proper behavior of all devices
functionalities and what has really been delivered. This
document should also provide straight information about
embedded firmware version.
ïðð
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
Methodology and scope of tests depend on type of the
product under tests, but there can be distinguished a few test
categories which are related with phases of software
development process. Figure 1 shows a graphical
representation of this idea called V-model. In this model
testers are involved from the requirements specification.
Testing starts from small components and goes up to high
level full system acceptance tests. Creation of a test sequences
can be done in parallel with a corresponding phase of
development to ensure that the project is moving forward as
planned. Although, V-model is not the most commonly used
one, it shows different test phases and links them with product
development phases. In subsequent paragraphs all type of tests
will be described in details.
Requirements
System Design
Accept ance T ests
Archi tecture Desi gn
System Tests
Module Design
Integration Tests
Code
Unit Tests
Figure 1. Standard testing V-model [4]
III. MANUAL VS AUTOMATIC TESTS
A. Manual tests
This type of tests excludes a usage of any automated tool or
script. It requires tester to take over an end-user role to check
whether device under test behaves correctly. The most popular
manual tests are some visual reactions that are easiest to check
by human, e.g. LED blinking tests, display tests, etc.
B. Automatic tests
This type of tests include usage of external testing
environment. Sometimes this software need to be written or
enhanced by the tester. The whole idea behind automatic tests
is to prepare them once and launch them many times. Thus, it
is applicable for big amount of different tests and in the system
that is changing all the time and requires many test repetition
[5].
Additional advantage, which testing environment often
delivers, is a possibility of automatic test report generation and
sometimes also test case coverage report.
C. What is better? Cost efficiency
Answer for this question is more complicated without
knowing an embedded software or a device that is going to be
tested. It is always a comparison of time (costs) to spend. There
are several rules that define that (excluding test specification
work), but in general there are:
Manual tests time to spend for preparing and
launching the tests
Automatic tests time to spend for creating or
adapting additional testing environment, preparing
tests and launching the tests
Looking from the first perspective it is easy to choose the
shortest one, however everything ch anges when going into
details and treating the above assumption as only start of whole
testing process. When a software or device is going to be tested
only once (one software/hardware version) the manual method
may be better. However the reality is otherwise. In the
development process there are a lot of different versions and
changes and all of them need to be tested separately. In this
case, creating automated tests might be the best solution,
because a time to be spent for this, is only at the beginning.
Later there is merely a retest process based on ready schemas.
In [6] a case study which details the cost for test automation
is presented.
Costof
testing
Test r uns
manual
testing (Am )
automated
testing (Aa )
Vm
Va
Da
break even
poi nt
Figure 2. Break-even point for Automated Testing
The break-even point can be calculated by comparing the
cost for automated testing (Aa) to the cost of manual testing
(Am) as:
E(n) = Aa / Am = (Va + n * Da) / (Vm + n * Dm),
where:
V - Expenditure for test specification and implementation
D - Expenditure for single test execution
n – number of automated test executions
According to this model, benefit of test automation seems
clear. It requires a much higher initial investment than manual
test execution, but after reaching a break-even point there are
purely profits.
IV.TEST SUPPORT TOOLS AND MAINTENANCE
Software test tools can be divided into two major
categories. First group includes tools for testing code itself. In
this case tools are usually strongly correlated with selected
development toolchain. Lot of companies offer whole
framework that includes both development and testing tools.
It is often preferred solution because of good support and
integration. Second group of tools is related with device
features. Test tool set depends on device application domain,
existence of time critical features and development process
ïðï
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
maturity itself. As majority of devices must meet numerous
and often very different features, more than one tool is
needed. General approach is to use tools that do as many
work automatically as possible, do not require special skills to
create test cases and are able to easily and quickly modify
whole sets of tests. Selected tools should be able to generate
clear and useful report from performed tests automatically.
When it comes to test maintenance, it is important to
remember that modification in product requirements should
be possible or even expected. Taking into account such a
possibility can save lot of future work. Similarly as during
software implementation process, test cases repositories
should be used. When doing so it is easy to track changes and
tests history.
V.CONTINUES INTEGRATION FOR EMBEDDED SOFTWARE
DEVELOPMENT
Continuous integration is a development strategy where
changes are included in product mainline and tested as often
as possible [7]. For committed changes, tests are performed
optimally on each change to verify product stability. In
practice, for embedded development it is advised to
accomplish it by creating separate build-machine that runs
unit tests, compiles and after that deploys firmware and runs
automatic tests. Due to the different projects sizes, various
building frequencies are used, from nightly up to weekend
builds. It is worth remembering that defect costs are lower if
less time will pass from committing up to detection. What is
more as every change in source is tracked it is often possible
to find the reason of test fail without debugging.
Testing
Development Bui ld
Code repository
Report
Commit Scheduled build
Deployment on
target hardware
Figure 3. Continues integration workflow
VI.BLACK AND WHITE BOX TESTING
First type of unit testing is black-box testing in which
knowledge of internal structure of tested module is not
required. This kind of tests assumes only that with given
inputs a tested unit will product expected results. It is enough
to create tests basing on product specification. In contrast,
white-box tests are created using the knowledge and
understanding of internal structure of tested module. When
designing white-box tests it is required to examine source
code and run tests with input which will bring desired internal
states and in this way test as many of them as possible.
Following internal state coverage levels are taken into
account:
Function coverage - during testing all function should
be tested.
Branch coverage - each conditional instruction
should be evaluated to both true and false.
Statement coverage informs about percentage of
source code lines that were verified during tests. Testing
all possible lines is desirable.
Code coverage is often required in certification process.
White and black box tests can be performed on any level of
testing, but usually refers to code unit testing. Combination of
both black and white box tests is often called gray-box testing
[8].
Black box
White b ox
Figure 4. White and black box tests
VII.UNIT TESTS
A. Unit tests and Test driven development
Unit testing is a software testing method that is based on
verifying correct behavior of invalid part of source code,
usually each function [9]. It is one of the lowest level possible
test. That is why in development processes, unit tests should
be performed in first row. When once created can be used in
safe refactoring by automatically checking regression each
time run. Unit tests are often used as an executable
documentation that provides warranty that created code is
compatible with it. [11].
Additional benefit may be design improvement. It is
especially visible when test-driven development process is
used. In this approach unit test is created in advance to
writing code. Then minimal amount of code is written to pass
them and when passed, the code can be safely refactored. This
improves design by not including code that is not required
and by assuring relative code separation.
Embedded development differs in many aspects from
standard software development. Algorithms that work
properly compiled for desktop computers, often do not need
to do the same on target hardware. Running test in parallel
with software development is often hard due to the time that it
takes to deploy firmware or even impossible when it is too
expensive to provide each developed in its own hardware.
Also there is often a need to mock some components that are
not a part of tested unit, but are required for the device to run
properly. This kind of mocking is very difficult in embedded
environment.
Developer needs to remember that unit tests will not find
majority of bugs related with time dependencies or ones that
involve interrupt handling.
ïðî
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
B. Tessy – Unit testing of embedded software
Tessy is an example of a testing environment tool for
creating automatic unit tests. It is a PC tool that automates unit
testing for C code of embedded software. It provides a
possibility to test each specific C function in complete isolation
from all other functions.
Figure 5. Tessy classification tree
Tessy can automatically schedule and execute test cases,
evaluate the test results and generate report in several, most
typical formats. A big advantage of using this software is a
code coverage viewer showing a path through the software for
the single highlighted test case.
Tessy does not have built-in compiler which is a very good
solution because it only supports external C language
compilers and all embedded microprocessors.
VIII. FUNCTIONAL TESTS
Functional verification of an embedded device is done to
ensure that the system fulfils its requirements. It is based on
black box testing appro ach. In contrast to unit and component
testing it does not require any knowledge about system
internals [10]. Functional tests are meant to validate device
behavior against its specification.
Figure 6 shows in practice how functional tests of industrial
automation device can be realized. To interact with the Device
Under Test (DUT), Programmable Logic Controller is used
(PLC) this allows to handle most of industrial fieldbuses used
at the factory level and easy simulates inputs to DUT and reads
its outputs. OPC technology is used for interacting with PLC.
This allows to split tests environment into two parts. First part
is a dedicated test engineering environment which is basically a
PC application to prepare and execute test sequences. Second
part is a test rack where DUT and PLC are installed. In theory,
both parts can be placed in distant locations, because Ethernet
is used for interconnection. In this configuration PLC is used
only as a proxy device which just tunnels image of DUT inputs
and outputs. Test logic is created in PC application by a test
engineer based on test specification. To provide system
description in user-friendly version (i.e. text instead of binary
data) test design platform parses system specification prepared
in special form (i.e. Excel files).
The main drawback of presented solution is performance of
OPC server. In presented test system refresh rate of OPC was
limited to 100ms. In case fast reaction of test system is
required, additional logic need to be implemented in the PLC
software. For example, for testing DUTs response time it is
required to program timer in PLC logic which is triggered on
DI/communication bit change.
PLC
DUT
Digital inp uts Analog inputs
Communica tion fieldbus
Digital outpu ts
Anal og ouput s
Testdesignplatform
(OPC clien t)
Ethernet
System
specific ation
TestCoverage
Report
Test Execution
Report
Test
specific ation
Test
engineer
OPC ser ver
Figure 6. Functional tests implementation
Modified version of this approach is presented in Figure 7. In
this case PLC was used in two rules first, as before, it is a
gateway between DUT and test platform and second it is used
for simulating device on DUTs expansion bus. In PLC
memory buffers with different types of telegrams were defined,
based on implemented logic PLC response on DUTs telegram
with the content of appropriate buffer. Additional assumption
is that in DUTs source code communication telegrams are
defined in form of structures. Test design platform is able to
parse it to help test engineer filling telegram buffers in PLC.
PLC/simulato r of DUT
expansion module
DUT
Testdesignplatform
OPC
DUT expansion modul e bus (RS 485)
Communicationfie ldbus
DUT source code
struct {
uint8 Address;
enum Functio nCo de;
uint32 Data ;
uint16 CRC;
}Telegram1;
...
Figure 7. Modified functional tests implementation
Modification of methodology presented in Figure 8 was
done to perform integration tests of DUT ant DUTs expansion
module. The stream of communication was sniffed by the PC.
To distinguish telegrams it was assumed that each message is
shorter than maximal telegram length and ends with two bytes
CRC. In the end test engineer could filter telegrams and verify
its content.
DUT expansion module
DUT
Test design platform
OPC
DUT expansion modul eb us (RS 485)
Commun ication fieldbu s
struct {
uint8 Address;
enum FunctionCode;
uint32 Data;
uint16 CRC;
}Telegram1;
...
PLC
Expansion bus s niffer
Figure 8. Functional validation of DUTs expansion module
IX.FUNCTIONAL SAFETY FOR EMBEDDED SYSTEMS
This chapter presents requirements for testing, verification
and validation of the embedded systems from the functional
safety perspective.
ïðí
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
A. Definitions
Functional Safety is a part of the overall safety related to
the equipment under control and its control system that
depends on the correct functioning of the safety-related
systems and other risk reduction measures [12].
Safety Instrumented System (SIS) is designed to respond to
conditions, where the embedded device works, that may be
hazardous and must generate the correct outputs to prevent the
hazard or mitigate the consequences.
Safety Integrity Level (SIL) is a discrete level (one of four)
that specifies the probability of safety-related system
satisfactorily performing the specified safety functions under
all the stated conditions within a stated period of time [13].
B. Verification, Validation, Audit and Assessment
Overall safety lifecycle process distinguishes dedicated
phase to decide whether the build system meet the
requirements of SIS and granted SIL.
In general it is divided into four major parts:
1) Verification: the objective of this clause is to
demonstrate by review, analysis and testing that the required
outputs satisfy the defined requirements for the appropriate
phase of the safety lifecycle identified by the verification
planning [6]. It is also important to create a plan that would
select appropriate techniques and measures to avoid
systematic failures. For each application software, there must
be a completed code review form.
PHASE INP UTS
Objectives and
Requirements
Phase
Activities
PHASE OUTPUT S
VERIFICATION
Lifecycle Phas e
Completnessand
Co rrectne ss
Figure 9. Verification Model
2) Validation: the objective of this clause is to validate,
through inspection and testing, that the installed and
commissioned safety instrumented system and its associated
safety instrumented functions achieve the requirements as
stated in the safety requirements specification.
Factory Acceptance
Test Specification
Validatio n planning Earlier Lif ecycle Phases
Safe ty
Requirements
Specification
Site Acceptance
Test Specification
FAT Testing
of System
SAT Testing
of System
Validation
Figure 10. Validation Model
Factory Acceptance Tests (FAT) demonstrate that the
application software and project specific hardware have been
configured in accordance with client requirements and that the
tests are an effective verification method.
Site Acceptance Tests (SAT) define how an organization
shall test the Safety System after installation at site to
demonstrate the following:
The system has been delivered and installed without
damage or change in basic operation and performance
The system has been correctly installed, inter-
connected and connections to power and earth are
correct
3) Functional Safety Audit: systematic and independent
examination to determine whether the procedures specific to
the functional safety requirements comply with the planned
arrangements and are suitable to achieve the specified
objectives. No specific judgment of functional safety and
integrity is done.
4) Functional Safety Assessment (FSA): investigation,
based on evidence, to judge the functional safety achieved by
one or more safety-related system. The FSA is a mandatory
requirement and shall be applied to all phases of the safety
lifecycle.
X.INTEGRATION TESTS
Term integration tests can be confusing since they can be
understood as testing of interactions inside final system where
the developed device is installed or integration testing of
software parts as elements of complete subsystem. Therefore
integration tests are often split between subsystem level
integration tests and system level integration tests.
Subsystem-level integration tests are required in every
project that contains even few independent modules. Testing
correct behavior of each component separately is helpful, but
not enough to confirm correct behavior of completed device.
Usually this type of tests is carried in similar way as white-
box test but without inspecting modules inside structures,
only as many as possible modules interoperability cases.
System-level integration is especially important for
embedded devices. It is very common that implemented
ïðì
4th Mediterranean Conference on Embedded Computing MECO - 2015 Budva, Montenegro
device needs to cooperate with already existing devices, often
produced by other companies. Verification if our product is
working with market devices is crucial. Tests on this level are
usually conducted by preparing special test environment with
conditions similar with real life installation and run typical
usage scenarios.
A practical example of system-level integration tests can
be a test of interoperability of automation protocols gateway.
Expected behavior is that all major companies controllers
will be able to connect to slave devices using this gateway.
System integration in this case would require running some
functional tests in several such environment. As a word of
caution it is worth to ensure proper behavior even if all
devices ar e declared as having protocols implemented in
accordance with the specification. During system-level
integration tests it is worth performing also stress tests. In
those tests it is needed to verify if product performs as
expected in maximum network load, when communication is
interrupted by other devices, when there is maximum number
of slave devices connected etc.
On this test level detecting source of bug gets very
hard. That is why it is important to do as much testing on unit
level as possible.
XI.CERTIFICATION TESTS
Additionally of ensuring that product meets requirement
specification, tests are often used to obtain certification. Those
tests are usually carried out in external test laboratory. They
may concern hardware, software and functional tests. EMC
(Electromagnetic Compatibility) tests can be an example of
hardware certification tests. Their role is to verify that device
will not produce electromagnetic interferences that could
interrupt other devices of work. Example of software test that
is required for certification, is ATEX [14]. In general, it is a
set of rules that each device used in explosion endangered
environments need to conform. A part of the process of
obtaining a certificate is presenting the reports from unit tests
of embedded firmware. In addition, implementation process
needs to be documented in accordance to required standards.
Functional tests are most common ones regarding
certification. Example of such tests are those performed by
Profibus Organization. During this type of tests all features
specific for tested protocol are verified and also basic
integration tests are performed.
As certification tests tend to be expensive, it is
recommended to run pretests before shipping device for
certification.
XII.SUMMARY
To sum up, this paper provides only a brief description of
chosen aspects of testing software for embedded devices.
Knowledge of presented techniques is strongly recommended
for every scientist who make software for embedded devices.
In part where functional tests are described focus was placed
on testing software for industrial devices. Selected techniques
for testing such devices were described, but it is easy to
accommodate them to testing other types of embedded
software.
REFERENCES
[1] B. Korel, Automated Software Test Data Generation, IEEE 1990.
[2] G. J. Myers, C. Sandler, T. Badgett The Art of Software Testing, 3rd
ed., Wiley, 2012.
[3] N. Jenkins A software Testing Primer. And introduction to Software
Testing, 2008, unpublished.
[4] K.H. Pries, J.M. Quigley, Testing Complex and Embedded Systems,
CRC Press, 2010
[5] L. G. Hayes, The Automated Testing Handbook, 2nd ed., Software
Testing Inst, 2004.
[6] V.N. Maurya, R. Kumar Analytical Study on Manual vs. Automated
Testing Using with Simplistic Cost Mode, ISSN, 2277-7040, Volume 2
Issue 1, 2012.
[7] W. Bereza, M. Fletcher, M. Karlesky, G. Williams, Mocking the
Embedded World: Test-Driven Development, Continuous Integration,
and Design Patterns, Methods & Tools, 2007.
[8] I. Jovanovi , Software Testing Methods and Techniques, 2008.
[9] IEEE Standard for Software Unit Testing, ISBN 1-55937-672-4,
SH10587, 1986.
[10] J. Zander, I. Schieferdecker, P. J. Mosterman, Model-Based Testing for
Embedded Systems, CRC Press, 2011.
[11] C. Kaner,, "What Is a Good Test Case?", STAR East, 2003.
[12] IEC 61508-4:2010, edition 2.0, part 4, clause 3.
[13] IEC 61511-1:2003(E), edition 1, part 1 clause 7.
[14] Directive 94/9/EC on equipment and protective systems intended for
use in potentially explosive atmospheres (ATEX), European Parliament
and the Council, 1994.
ïðë
... Particularmente en el contexto de pruebas de caja blanca Costa [19] desarrolló un método que calcula la cobertura de un código con base en la observabilidad para programas de software. Teniendo en cuenta las métricas de cobertura basadas en observabilidad para modelos de hardware, desarrolló una metodología de verificación mixta de hardware-software que supera el resultado obtenido de la cobertura de sentencias. ...
... Las pruebas unitarias normalmente verifican los atributos funcionales de un módulo, pero también pueden probar otras cosas tales como el rendimiento, facilidad de uso, entre otras características, comúnmente se emplean las técnicas de caja negra o caja blanca. El desarrollador debe recordar que las pruebas unitarias no encontrarán la mayoría de los errores relacionados con las dependencias de tiempo o los que implican la manipulación de interrupciones [19]. ...
... El desarrollo de sistemas embebidos difiere en muchos aspectos del desarrollo de software estándar [24]. A menudo ocurre que los algoritmos que funcionan correctamente en los equipos de escritorio no lo hacen así cuando son llevados al hardware de destino [19]. Así, la validación de los requisitos para estos sistemas debe ser asegurada. ...
Article
The aim of this paper is to provide a review on verification and validation of embedded software. An embedded software is a product that contains a microprocessor and software to perform certain function. The growing demand for new features and functionalities as automated test generation, model-based testing and formal verification of embedded systems makes the design and implementation reach a higher level of complexity. We focused on identifying research trends in order to provide a review of the challenges that emerge during the verification and validation processes of embedded software. The research works are grouped by related themes in order to find problems that persist nowadays.
... Simultaneously, there are also costs to set up the servers and online storage which are used for storing and retaining all information throughout the project [8]. Besides that, some costs may need to be invested for project management tools in order to manage the project in distributed settings [6], [34] and test tools to manage the testing activities in particular [7], [35]. The project may also need to consider the costs for other facilities such as the storage room and office space which are commonly required to store physical materials generated throughout the project [19], [36]. ...
... Table 1 summarizes the categories and its reference's sources. Fig. 1 presents the findings in a diagram form and the results of data analysis are presented in the following paragraphs Test case complexity [15], [17] Test type [17] Test change frequency [7], [12] Infrastructure Communication tools [3], [7], [26], [33] Repository tools Management tools [6], [34] Test tools [7], [35] Facilities [19], [36] Travelling Transportation [19] Accommodation [21] Immigration [19] Human Resource ...
Article
Software testing outsourcing appears to be the best alternative to acquire better software quality with competent ratification by extrinsic parties who have the capability to do it. Through the effort, organizations are peeking to promising benefits constitute in it such as current testing technology, experts, an abridgment of the project's duration and more concentration on the main organisation's activity. Along with these benefits, one important reason that encourages the decision is optimization of cost expenditure, which the strategy is perceived as a good move for a competitive organization. However, implementing such preference eventually results in a different outcome. Organizations have to bear the higher cost and incur losses of cost deviation from the expected estimation. The conflicting between cost and benefits raises an important concern of striving better cost estimation for such projects. This paper aims to address this interest by analyzing the existing literature in order to identify the contributing factors towards better cost estimation for software testing outsourcing project-context. The analysis is done using the content analysis method. The results could be divided into two categories; which are the cost items and contributing factors. Cost items consist of direct cost and indirect cost, which refers to the expenses for the project. While the contributing factors consist of people and environment, which are needed to produce accurate cost estimation. The findings provide an insight to excogitate attentively the essentials in the endeavor of improving the exactitude of cost estimation for software testing outsourcing project.
... They enable not only the automatic execution of designed test cases, but often also the automatic generation of test cases based on code or software architecture (UML diagrams). Test execution reports can also be automatically generated [12]. ...
Article
Full-text available
In the epoch characterized by the anticipation of autonomous vehicles, the quality of the embedded system software, its reliability, safety, and security is significant. The testing of embedded software is an increasingly significant element of the development process. The application of artificial intelligence (AI) algorithms in the process of testing embedded software in vehicles constitutes a significant area of both research and practical consideration, arising from the escalating complexity of these systems. This paper presents the preliminary development of the AVESYS framework which facilitates the application of open-source artificial intelligence algorithms in the embedded system testing process. The aim of this work is to evaluate its effectiveness in identifying anomalies in the test environment that could potentially affect testing results. The raw data from the test environment, mainly communication signals and readings from temperature, as well as current and voltage sensors are pre-processed and used to train machine learning models. A verification study is carried out, proving the high practical potential of the application of AI algorithms in embedded software testing.
... Testing is one of the last and probably the most important parts of the development of new product life cycle. In [9], Bajer, Szlagor, and Wrzesniak provide a description of the chosen aspects of testing software for embedded devices, describe the advantages of automated testing, give an overview of many different types of tests (black and white box testing, functional tests, integration tests, certification tests, etc.) that are used in embedded systems. Knowledge of the presented techniques is strongly recommended for all scientists who design software for embedded devices. ...
Article
Full-text available
With the widespread use of embedded software in consumer electronics, automotive industry, medical devices, and industrial environments, embedded software testing is gaining significance as an indispensable part of development and deployment of embedded products. With more than 20 years of research, development, and testing of various consumer technologies and products based on digital signal processors (DSPs) and advanced reduced instruction set computers (ARMs), we obtained insight into typical embedded development process and testing, and the pros and cons of various testing approaches and environments. In this paper, we propose the Smart Multi-Agent Framework based on IoT and Jenkins agents, customised for audio technologies in the Home Audio domain. We evaluated our solution on several complex immersive audio technologies implemented on a multicore DSP. Our uniform, customised, fully automated approach proved to be time efficient, error resilient, easy to replicate and use across all development, certification, and deployment phases of the product life cycle.
... Embedded software is written for these two microcontrollers. As per User Interface panel instructions, UI microcontroller sends Message to the Main controller through any one of standard protocol [2,3,4] Step2:Select wash type1 cycle and start; Tester can select washtype1 at UI panel to start the washtype1 cycle. ...
Article
Full-text available
The focus of this paper is about the method of test automation for testing embedded software using NI’s Test Stand and LabVIEW. Software testing is a process to check the functionality of the software application to know whether it is developed properly to meet the specified requirements or not. It is an important phase in the software development life cycle because any product before being released into the market needs to be defect free. To produce the quality product and meet costumers needs it must undergo this process. For the testing of software, tester generates several different test cases based upon the requirement. software requirement specifications include both functional and non-functional requirements of the software. In this paper, we describe the current method of manual test process and same how to automate this manual testing process using NI’s Test stand and LabVIEW.
Book
Full-text available
http://site.ebrary.com/lib/alltitles/docDetail.action?docID=10519709 - Clarifies theory and practice associated with test specification and validation of complex software-intensive embedded systems - Includes detailed examples from industry to illustrate real-world solutions - Provides a global view of the current practices in Model-Based Testing, helping engineers choose the most appropriate solution - Presents model-based testing from various perspectives, combining aspects of embedded systems and software
Article
Full-text available
Despite a prevalent industry perception to the contrary, the agile practices of Test-Driven Development and Continuous Integration can be successfully applied to embedded software. We present here a holistic set of practices, platform independent tools, and a new design pattern (Model Conductor Hardware -MCH) that together produce: good design from tests programmed first, logic decoupled from hardware, and systems testable under automation. Ultimately, this approach yields an order of magnitude or more reduction in software flaws, predictable progress, and measurable velocity for data-driven project management. We use the approach discussed herein for real-world production systems and have included a full C-based sample project (using an Atmel AT91SAM7X ARM7) to illustrate it. This example demonstrates transforming requirements into test code, system, integration, and unit tests driving development, daily "micro design" fleshing out a system's architecture, the use of the MCH itself, and the use of mock functions in tests.
Article
Many enterprises regard system-level testing as the final piece of the development effort, rather than as a tool that should be integrated throughout the development process. As a consequence, test teams often execute critical test plans just before product launch, resulting in much of the corrective work being performed in a rush and at the last minute. Presenting combinatorial approaches for improving test coverage, Testing Complex and Embedded Systems details techniques to help you streamline testing and identify problems before they occurincluding turbocharged testing using Six Sigma and exploratory testing methods. Rather than present the continuum of testing for particular products or design attributes, the text focuses on boundary conditions. Examining systems and software testing, it explains how to use simulation and emulation to complement testing. Details how to manage multiple test hardware and software deliveries Examines the contradictory perspectives of testingincluding ordered/ random, structured /unstructured, bench/field, and repeatable/non repeatable Covers essential planning activities prior to testing, how to scope the work, and how to reach a successful conclusion Explains how to determine when testing is complete Where you find organizations that are successful at product development, you are likely to find groups that practice disciplined, strategic, and thorough testing. Tapping into the authors decades of experience managing test groups in the automotive industry, this book provides the understanding to help ensure your organization joins the likes of these groups.
Article
Designing good test cases is a complex art. The complexity comes from three sources: É Test cases help us discover information. Different types of tests are more effective for different classes of information.
Conference Paper
A novel approach to automating test data generation for distributed programs is presented. The approach is based on actual execution of the program under test, a run-time scheduler, function minimization methods, and dynamic dataflow analysis. Test data are developed for the program using actual values of the input variables. When the program is executed, the program execution flow is monitored. If during program execution an undesirable execution flow is observed then function minimization search algorithms are used to automatically locate the values of input variables for which the selected path is traversed. In addition, dynamic dataflow analysis is used to determine those input variables responsible for the undesirable program behavior, which can lead to significant speed-up of the search process
Article
An alternative approach to test-data generation based on actual execution of the program under test, function-minimization methods and dynamic data-flow analysis is presented. Test data are developed for the program using actual values of input variables. When the program is executed, the program execution flow is monitored. If during program execution an undesirable execution flow is observed then function-minimization search algorithms are used to automatically locate the values of input variables for which the selected path is traversed. In addition, dynamic data-flow analysis is used to determine those input variables responsible for the undesirable program behavior, significantly increasing the speed of the search process. The approach to generating test data is then extended to programs with dynamic data structures and a search method based on dynamic data-flow analysis and backtracking is presented. In the approach described, values of array indexes and pointers are known at each step of program execution; this information is used to overcome difficulties of array and pointer handling
Analytical Study on Manual vs. Automated Testing Using with Simplistic Cost Mode
  • V N Maurya
  • R Kumar
V.N. Maurya, R. Kumar “Analytical Study on Manual vs. Automated Testing Using with Simplistic Cost Mode”, ISSN, 2277-7040, Volume 2