嵌入式软件自动化单元测试研究及应用
嵌入式软件测试方法详解
![嵌入式软件测试方法详解](https://img.taocdn.com/s3/m/8ae7282d6d175f0e7cd184254b35eefdc8d315f7.png)
嵌入式软件测试方法详解嵌入式软件测试是指针对嵌入式系统中的软件进行测试的过程。
嵌入式系统是指集成了软件和硬件的复杂系统,这些系统通常嵌入在一些设备中,如手机、汽车、电视等。
为了确保嵌入式系统的正常运行和稳定性,嵌入式软件测试变得极其重要。
本文将详细介绍嵌入式软件测试的方法。
一、静态测试方法静态测试方法是在嵌入式软件开发的早期阶段就进行的测试方法。
它主要通过代码审查和静态分析来发现潜在的问题和错误。
代码审查是指通过人工检查代码的规范性、可读性和实现逻辑等方面的错误和问题。
静态分析是指使用工具对代码进行扫描,以发现潜在的问题和错误。
静态测试方法可以帮助开发人员在开发的早期阶段就发现并修复问题,从而减少后期测试阶段的工作量。
二、单元测试方法单元测试方法是对嵌入式软件中的各个模块进行独立测试的方法。
它通常是使用白盒测试技术,开发人员可以直接查看代码并编写测试用例。
单元测试旨在检查模块是否按照预期执行,并验证其输出是否正确。
单元测试方法可以帮助开发人员在开发过程中对每个模块进行细致的测试,以确保其功能的正确性和稳定性。
三、集成测试方法集成测试方法是对嵌入式软件的各个模块进行整合测试的方法。
在嵌入式系统中,各个模块通常是独立开发的,集成测试旨在测试模块之间的接口和交互是否正常。
通过集成测试,可以发现并解决模块之间的兼容性问题、数据传输问题以及接口交互问题。
集成测试可以确保整个系统的功能正常运行,并保证各个模块之间的协调性。
四、系统测试方法系统测试方法是对整个嵌入式系统进行测试的方法。
系统测试旨在验证系统是否满足需求规格说明书中的要求,并检查系统在不同环境下的性能和稳定性。
系统测试一般包括功能测试、性能测试、兼容性测试、安全性测试等多个方面。
通过系统测试,可以发现并修复系统中的问题,确保系统的完整性和可靠性。
五、回归测试方法回归测试方法是在系统发生变更后对系统进行重新测试的方法。
嵌入式软件开发过程中,经常需要对系统进行改进和升级,回归测试旨在验证系统的改动是否对原有功能和模块产生了影响。
浅谈Testbed在嵌入式软件单元测试的应用
![浅谈Testbed在嵌入式软件单元测试的应用](https://img.taocdn.com/s3/m/464e12981ed9ad51f11df273.png)
浅谈Testbed在嵌入式软件单元测试的应用嵌入式软件作为嵌入式系统的重要组成部分,嵌入式软件质量问题可能会带来设备的损坏和人员的伤亡,因而用户对其质量有较高的要求。
软件测试是对软件质量检验的一个非常重要的手段。
而软件测试中动态测试最基础的测试就是单元测试。
如何开展单元测试以及如何提高单元测试的效率是一个值得研究的问题。
1 软件单元测试的要求及重点软件单元测试是对软件基本组成单元进行测试,测试软件单元是否正确地实现规定的功能,是否满足软件性能和接口要求。
并验证程序与详细设计说明的一致性。
因此在单元测试时,需要模拟被测单元与其他模块之间的交互,开发驱动模块和桩模块两种辅助模块,构建一个可执行的环境,驱动模块用于模拟被测单元的上层模块,测试执行时由驱动模块调用被测单元使其运行;桩模块用于模拟被测单元在执行过程中所调用的模块。
单元测试重点考虑的测试类型有:(1)接口测试。
接口测试主要检查实参与形参的数目是否相等、实参与形参的属性是否匹配、实参与形参的单位是否一致、传到被调用模块的实参的属性是否与形参的属性匹配、是否把常量当作变量传递等内容。
(2)功能测试。
功能测试主要是对照软件单元的设计说明,验证软件是否完成了所需的功能。
(3)重要执行路径测试。
应设计测试用例以发现错误的计算、不正确的比较和不正常的控制流向等错误。
在计算中比较常见的错误是:误解或错误处理算术运算的优先次序、混用不同类的操作、计算精度不够等。
另外在控制软件执行流程的比较操作中比较常见的错误有:不同数据类型的比较、不正确的逻辑操作符或不正确的优先次序、因精度不够使本应相等的数不相等(如浮点数)等。
(4)软件单元的局部数据结构测试。
软件单元的局部数据结构是一个主要的错误来源,应设计测试用例来发现不正确的或不一致的数据说明、初始化有错或没有赋初值、不正确的变量名、不一致的数据类型、上溢/下溢或引用错误等类型的错误。
(5)错误处理路径测试。
一般软件错误处理路径测试应考虑下面几种可能的错误:对错误的描述不易理解、指出的错误并不是所遇到的错误、出错时还没有进行出错处理就先进行系统干预、错误边界条件的处理不正确、描述错误的信息不正确从而不足以确定出错的原因等。
关于嵌入式软件测试的研究
![关于嵌入式软件测试的研究](https://img.taocdn.com/s3/m/8a9226791ed9ad51f01df2c1.png)
关于嵌入式软件测试的研究作者:滕昭跃来源:《科学与财富》2016年第12期摘要:随着近些年嵌入式软件技术的迅猛发展,为了确保这一软件技术的质量,有必要测试嵌入式软件,本文在此背景下,阐述嵌入式软件测试的概念、环境、策略、特征,可以为测试嵌入式软件提供一定参考。
关键词:嵌入式;软件技术;测试1 嵌入式软件测试基本情况1.1 嵌入式软件测试概念界定为了对嵌入式软件测试进行分析,首先则是应该对其概念了解,基于概念这一层面,可以将嵌入式软件测试看成是交叉测试,不管是嵌入式软件测试还是非嵌入式软件,往往目的都会相同。
硬件在设计嵌入式系统当中逐步被软件替代,为了降低系统成本与增加灵活性,应该通过性能更佳的测试工具与方法测试嵌入式与实时软件[1]。
为确保嵌入式系统作用的发挥,在这里应该让其可靠性存在十分高的要求。
从安全性这一层面进行分析,昂嵌入式系统安全性失效,可能引发十分严重后果。
这就应该严格验证、确认、测试嵌入式软件。
1.2 嵌入式软件测试特征根据对嵌入式软件测试进行分析,其主要存在以下特征:一是嵌入式软件测试实施相应的运行则必须应该立足于相应的某种特定硬件环境当中;二是应该为嵌入式软件所具备的实时性要求提供必要的保证;三是在实施嵌入式软件测试环节当中除了应该做好性能测试之外,还必须测试GUI与覆盖分析,运行嵌入式软件并不应该出现泄漏,应该测试嵌入式软件内存;四是嵌入式产品可以将全部功能满足的过程当中,测试最终目的就是可靠安全运行,这就必须实施产品测试[2]。
2 嵌入式软件测试环境分析2.1 仿真测试环境一是全实物。
被测软件处于这样的绝对真实的仿真测试环境下运行,测试就是直接把整个系统与交联物理设备相助建立真实链接而逐步形成闭环[3]。
其侧重点是测试被测系统和别的设备接口,相对来说拥有比较低的测试环境要求。
二是半实物。
仿真测试的半实物环节则是指凭借着充分有效利用所建立的仿真模型来仿真被测系统交联系统,在这一过程当中,需要值得重点关注的问题是,被测系统则是处于真实性的环境当中。
电子电器产品嵌入式软件单元测试技术研究
![电子电器产品嵌入式软件单元测试技术研究](https://img.taocdn.com/s3/m/e95aed24647d27284b7351d8.png)
试工具 R T R T( R a t i o n a l T e s t R e a l T i me ) 的 分 析及 利 用 R T R T进 行 实 际 电 器 产 品 软 件 单 元 测 试 的 试 验 , 结果表明 R T R T是
一
个 可 以有 效 得 应 用 于 电子 电 器产 品 嵌 入 式 软 件 开 发 和 测 试 阶段 的 自动 化 测 试 工 具 , 利用 R T R T进 行 软 件 单 元 测 试 可 以
t o ol an d t e t i qg on t he a c t u al el ec t r i c al pr o du ct s wi t h RTRT, i t sh o ws t h at RTRT ca n e f f ec t i v e l y be ap pl i ed t o embe dde d s of t war e de v el opmen t an d t e s t i ng ph as e s o f el ec t r i c al a nd el e ct r o ni c pr o duc t s So f t wa r e u ni t t e s t i n g by R TRT ca n r e du ce t e s t i n g e f f or t , s pe e d up t h e pr ogr e ss of t h e t e s t an d i mpr o v e s of t war e t e s t i n g qu al i t y. Ke y wo r d s: e l e c t r i c al an d el ec t r o ni c, e m be dded s of t wa r e, u ni t t e s t i n g. Ra t i o na l Te s t Re al Ti me
嵌入式软件单元测试方法研究
![嵌入式软件单元测试方法研究](https://img.taocdn.com/s3/m/c4250fb8b9f3f90f76c61b97.png)
嵌入式软件单元测试方法研究作者:刘佳杨永文李金华来源:《软件工程》2019年第08期摘; 要:嵌入式软件通常采用交叉开发的方式,尽早进行软件测试可以及时发现软件开发初期的不足。
单元测试是嵌入式软件开发过程中最基础级别的测试活动。
本文对嵌入式软件的单元测试进行了分析,主要包括测试工具的选择、测试内容的梳理和测试过程的优化,重点阐述了注意事项及原则。
通过总结分析,提出了适宜操作的嵌入式软件单元测试方法。
实践证明,该方法大大提高了软件测试水平和软件产品代码的质量。
关键词:测试计划;单元测试;测试过程;嵌入式软件中图分类号:TP311.5; ; ;文献标识码:AAbstract:As the cross-development method is usually applied for embedded software,software testing is conducted early,so as to promptly find out the defects and problems at the early stage of software development.Unit testing is the basic testing in the process of embedded software development.This paper analyses embedded software unit testing,including the choice of testing tools,the analysis of testing content and the optimization of testing process,mainly describing the notes and principles.Through the comprehensive summary and analysis,the paper proposes an easy-to-operate and suitable unit testing method for embedded software.Practice indicates that this method greatly improves the level of software testing and software product quality.Keywords:testing plan;unit testing;testing process;embedded software1; ;引言(Introduction)由于嵌入式软件运行在嵌入式计算机系统中,且实时性强。
嵌入式软件测试技术与实践
![嵌入式软件测试技术与实践](https://img.taocdn.com/s3/m/8c0229c4951ea76e58fafab069dc5022abea4666.png)
嵌入式软件测试技术与实践嵌入式软件在现代社会中应用广泛,其对各行各业的重要性不言而喻。
随着嵌入式软件的复杂性不断增加,对其质量的要求也越来越高。
而软件测试作为保障软件质量的重要环节,对于嵌入式软件来说更是至关重要。
本文将介绍嵌入式软件测试的相关技术与实践,旨在提供一些有效的方法和策略。
一、嵌入式软件测试的特点嵌入式软件是集成于其他硬件设备中的软件,其测试具有以下特点:1. 硬件依赖性:嵌入式软件与特定的硬件设备密切相关,测试过程需要考虑硬件和软件之间的交互关系。
2. 实时性要求高:许多嵌入式系统需要实时响应,对软件测试的时效性和准确性提出了更高的要求。
3. 系统复杂性高:嵌入式软件通常包含多个模块和子系统,测试过程需要充分考虑系统整体的一致性和稳定性。
二、嵌入式软件测试的方法与技术1. 黑盒测试:黑盒测试是基于需求规格说明书进行测试,关注软件的功能和输入输出的关系。
在嵌入式软件测试中,黑盒测试可以验证软件的功能是否符合需求,并检测潜在的错误和异常情况。
2. 白盒测试:白盒测试是基于软件内部结构的测试方法,通过分析代码和执行路径来验证软件的正确性。
在嵌入式软件测试中,白盒测试可以对软件的逻辑和数据流进行测试,发现隐藏的错误和漏洞。
3. 单元测试:单元测试是对软件中最小单元的功能进行测试,通常以函数或模块为单位进行测试。
嵌入式软件中,单元测试可以确保每个功能模块的正确性,并在集成测试之前排除单元级的错误。
4. 集成测试:集成测试是将已测试通过的单元模块进行组合,进行功能和接口的集成测试。
通过集成测试,可以验证不同模块之间的交互是否正常,确保整个系统的一致性和稳定性。
5. 性能测试:性能测试是针对嵌入式软件的运行效率和资源消耗进行测试。
通过性能测试,可以评估嵌入式软件在不同负载条件下的稳定性和响应能力。
三、嵌入式软件测试的实践策略1. 设立清晰的测试目标和需求:在进行嵌入式软件测试之前,需要明确测试的目标和需求,包括功能需求、性能需求等。
嵌入式系统的调试与测试技术研究
![嵌入式系统的调试与测试技术研究](https://img.taocdn.com/s3/m/fd81a886f021dd36a32d7375a417866fb84ac08f.png)
嵌入式系统的调试与测试技术研究嵌入式系统是一种高度集成的各种硬件和软件系统,其应用范围广泛,包括汽车、医疗设备、航空航天、工业自动化等领域。
嵌入式系统的调试和测试是确保系统可靠性和稳定性的重要步骤。
本文将从嵌入式系统的调试和测试技术入手,深入探讨如何提高嵌入式系统的可靠性和稳定性。
一、嵌入式系统的调试和测试方法嵌入式系统的调试和测试在整个系统开发过程中起着至关重要的作用。
常见的嵌入式系统调试和测试方法包括:仿真测试、单元测试、集成测试、验收测试等。
其中,仿真测试是利用仿真器或者模拟器对嵌入式系统进行各种测试,可以帮助开发人员在没有实际硬件的情况下快速进行开发和调试;单元测试是对嵌入式系统中的各个模块进行测试,确保每个模块的功能正确性;集成测试是对整个系统进行测试,确保各个模块之间的协同工作正常;验收测试是为了验证开发的系统是否符合客户的需求和要求。
二、硬件调试测试技术硬件调试测试技术是指对嵌入式系统硬件进行测试和调试,主要包括CPU分析器、电路分析仪、万用表、示波器等设备。
在进行硬件调试时,一般首先要进行硬件电路图的设计和分析,确保电路图的正确性和稳定性。
其次,要对板子进行功率测试、时钟测试、引脚测试等测试,保证板子的正常工作。
最后,要进行连通性测试,确保各个模块之间的连接正常。
三、软件调试测试技术软件调试测试技术是指对嵌入式系统软件进行测试和调试,主要包括GDB调试、Trace调试、代码覆盖率测试、文本比对测试等技术。
在进行软件调试时,一般首先要对软件进行静态分析和代码审查,发现潜在的错误和问题。
其次,要利用GDB调试器进行调试,对函数的输入、输出进行跟踪和观察。
最后,要进行文本比对测试,确保程序输出结果的正确性和稳定性。
四、嵌入式系统测试工具嵌入式系统测试工具是指针对嵌入式系统进行测试和调试的软件工具,包括MBIST、JTAG debugger、FileScope、Coverity等工具。
MBIST是一种存储器内置自检工具,可以帮助开发人员快速发现存储器中的问题。
嵌入式软件测试方法
![嵌入式软件测试方法](https://img.taocdn.com/s3/m/4a696f9e7e192279168884868762caaedd33bae8.png)
嵌入式软件测试方法嵌入式软件测试方法是针对嵌入式系统开发的软件测试方法。
嵌入式系统是指嵌入在各种设备中的计算机系统,如智能手机、家庭电器、汽车、医疗设备等。
嵌入式软件测试的目标是确保嵌入式系统的软件质量和可靠性。
以下是常用的嵌入式软件测试方法:1.静态分析:静态分析是一种基于源代码或二进制代码的分析方法,用于检查代码中的错误和潜在的问题。
它通常包括代码审查、代码规范和代码耦合分析等。
静态分析可以在开发早期识别问题,并且可以帮助改进代码质量。
2.单元测试:单元测试是针对软件模块或功能的测试方法。
在嵌入式系统中,软件通常被分为多个模块,每个模块都有其特定的功能。
单元测试通过对每个模块进行测试,以确保它们按照预期运行。
单元测试可以使用各种测试技术,如白盒测试和黑盒测试。
3.集成测试:集成测试是将不同的模块或功能组合在一起进行测试的方法。
在嵌入式系统中,不同的模块通常需要相互协作才能实现系统的功能。
集成测试通过模拟实际的运行环境,测试模块之间的接口和交互,确保整个系统按照预期工作。
4.验收测试:验收测试是在开发完成后对整个系统进行的一系列测试。
验收测试的目标是确认系统是否符合用户需求和规格说明。
它通常由系统开发人员和最终用户共同进行,以确保系统的功能和性能满足用户的期望。
5.性能测试:性能测试是评估系统在不同负载条件下的性能和响应时间的方法。
在嵌入式系统中,性能测试可以用来评估系统的运行速度、内存使用情况和功耗等。
性能测试可以通过模拟实际的使用情况或使用工具和设备进行。
6.可靠性测试:可靠性测试是评估系统在长时间运行中的稳定性和可靠性的方法。
在嵌入式系统中,可靠性测试可以通过模拟不同的环境和使用条件,以确保系统在各种情况下都能正常工作。
7.安全测试:安全测试是评估系统的安全性和防护措施的方法。
嵌入式系统通常需要保护用户的隐私和数据安全。
安全测试可以通过模拟攻击、检查系统的漏洞和弱点等方式进行。
总的来说,嵌入式软件测试方法是多样的,旨在保证嵌入式系统的软件质量和可靠性。
嵌入式系统中的自动化测试技术研究
![嵌入式系统中的自动化测试技术研究](https://img.taocdn.com/s3/m/68d2ac29b6360b4c2e3f5727a5e9856a5612260c.png)
嵌入式系统中的自动化测试技术研究在嵌入式系统的开发中,自动化测试技术已经成为越来越重要的一环。
自动化测试技术可以帮助开发人员有效地提高测试效率,减少测试和开发人员的工作量,最终提高产品质量。
本文将就嵌入式系统中的自动化测试技术进行探讨。
一、嵌入式系统的特点嵌入式系统是一种集成了硬件和软件的系统,通常被用于控制其他设备或执行特定任务。
与通用计算机不同,嵌入式系统通常有以下几个特点:1、资源受限:由于嵌入式系统的成本和功耗要求,通常具有非常有限的资源。
2、去中心化:嵌入式系统通常工作于不同的场景,很少有或没有能够通过网络互联的中心节点,如医疗器械、智能家居设备等。
3、实时性:嵌入式系统通常被用于控制或监控实时任务,如智能家居设备、工业自动化设备等。
4、可靠性:嵌入式系统在工业、医疗、安防、交通等领域扮演着重要角色,对可靠性的需求是非常高的。
由于这些特点的存在,嵌入式系统测试相比一般软件测试是更加困难的。
嵌入式系统测试需要综合考虑多种因素,如系统硬件和软件的交互、外部设备的使用、大量测试数据集等。
二、自动化测试技术在嵌入式系统中的应用自动化测试技术在嵌入式系统中的应用,可以分为单元测试、集成测试、界面测试和性能测试。
1、单元测试单元测试是对嵌入式系统中各模块的测试。
测试人员可以使用自动化测试工具来完成单元测试并生成详细的测试报告。
在单元测试中,测试人员可以采用不同的测试框架,以确保测试结果的准确性和可靠性。
测试框架包括JUnit、CTest等。
在测试过程中,可以采用模拟器和调试器,在电脑上进行远程测试和调试。
2、集成测试集成测试是对嵌入式软件与硬件的集成测试。
集成测试需要进行一些复杂的测试,如接口测试、模块测试等,以确保系统各部分可以正常协同工作。
在集成测试中,需要进行多个嵌入式系统之间的集成测试和数据传输测试。
测试人员需要使用一些自动化测试工具来模拟和测试数据传输和文件传输等功能。
3、界面测试界面测试是对嵌入式系统中的交互界面进行测试。
嵌入式系统软件测试及测试案例开发
![嵌入式系统软件测试及测试案例开发](https://img.taocdn.com/s3/m/09608cda3968011ca200913f.png)
嵌入式系统软件测试及测试案例开发测试是传统软件开发的最后一步。
整个软件开发过程,需要收集要求、进行高层次的设计、详细设计、创建代码、进行部分单元测试,然后集成,最后才开始最终测试。
最佳的开发实践应包含代码检查这个步骤。
然而代码检查一般只能找出70%的系统错误,因此完美的测试环节绝对必不可少。
测试就像个复式记帐系统,可以确保将缺陷扼杀在最终推出的产品之前。
在所有其它的工程实践中,测试都被视为基本环节。
比如,在美国,每一座联邦政府出资修建的桥都必须经过大量的风洞测试。
而在软件领域,测试并没有很受重视。
尽管测试是所有工程实践准则的关键部分,但编写测试程序却感觉是在浪费时间。
好在嵌入式系统设计界内的许多领域已经将测试作为其工作的核心部分,他们认识到将这个关键步骤放在项目末期极不明智,因而主张同步地编写测试程序和应用程序。
嵌入式系统软件测试在诸多方面都与应用软件测试一样。
不过,应用测试与嵌入式系统测试之间还是存在一些重要差异。
嵌入式开发人员一般会用到基于硬件的测试工具,而这类工具通常不会用于应用开发过程中。
此外,嵌入式系统一般都有些独一无二的特性,这些特性应该在测试计划中得以体现。
本文将介绍测试和测试案例开发的基础知识,并指出整个嵌入式系统测试工作的特有细节。
何时测试以及如何测试从图1可以看出,在可行的条件下,测试应尽早展开。
一般来讲,最早的测试是由最初的开发人员进行的模块或单元测试。
遗憾的是,开发人员大多对如何建构一整套测试例程以进行测试所知不足。
由于精心设计的测试例程通常直到集成测试时才能使用,因此许多在单元测试过程中就能找出的缺陷直到集成测试时才会被发现。
比如,硅谷的一家大型网络设备厂商为找出其软件集成问题的关键原因,进行了一项研究。
这家厂商发现,在项目集成阶段找出的缺陷中,有70%是由在集成之前从没被执行过的程序所产生的。
图1:改正问题的成本。
单元测试:开发人员在单独进行模块级测试时一般是编写存根代码(stub code)取代余下的系统软硬件。
嵌入式软件单元测试计划
![嵌入式软件单元测试计划](https://img.taocdn.com/s3/m/e222126f580102020740be1e650e52ea5418ce7f.png)
嵌入式软件单元测试计划英文回答:Embedded software unit testing is a crucial part of the software development process. It involves testingindividual units or components of the software to ensure their functionality, reliability, and performance. The purpose of unit testing is to identify and fix any defectsor bugs in the code at an early stage, before integratingall the components together.To create an effective embedded software unit testing plan, several key steps need to be followed. Firstly, it is important to define the objectives and scope of the testing. This includes identifying the specific units or components that need to be tested, as well as the desired outcomes of the testing process.Next, a comprehensive test strategy should be developed. This includes determining the appropriate testingtechniques and methodologies to be used, such as white-box testing, black-box testing, or a combination of both. The test strategy should also outline the test environment, including the hardware and software tools required for testing.Once the test strategy is in place, the next step is to design the test cases. Test cases are specific scenarios or inputs that are used to validate the functionality of a unit. They should cover all possible scenarios and edge cases to ensure thorough testing. It is also important to prioritize the test cases based on their criticality and impact on the overall system.After designing the test cases, the actual testing phase can begin. This involves executing the test cases and analyzing the results. Any deviations or failures should be carefully documented and reported. It is important to track the test coverage and ensure that all units are adequately tested.Finally, the test results should be reviewed andanalyzed to identify any patterns or trends. This can help in identifying common issues or areas of improvement. Based on the test results, necessary modifications or bug fixes can be made to the code.In conclusion, an embedded software unit testing plan is essential for ensuring the quality and reliability of the software. It helps in identifying and fixing defects at an early stage, reducing the risk of costly errors in the final product. By following a systematic approach and using appropriate testing techniques, developers can ensure that their embedded software meets the desired standards and requirements.中文回答:嵌入式软件单元测试是软件开发过程中的关键部分。
keil单元检测
![keil单元检测](https://img.taocdn.com/s3/m/ea2aa249bfd5b9f3f90f76c66137ee06eff94e28.png)
keil单元检测Keil单元检测是一种常用的嵌入式系统软件测试方法,用于验证程序的功能和正确性。
本文将介绍Keil单元检测的原理、流程和应用,并探讨其在软件开发中的重要性。
1. Keil单元检测概述Keil单元检测是指对程序中的最小功能模块进行测试,主要用于验证代码的正确性、稳定性和功能性。
单元检测的核心思想是分离出程序中的独立部分进行测试,并用于发现和修复潜在的错误。
2. Keil单元检测的原理Keil单元检测的原理基于黑盒测试和白盒测试相结合的思想。
在进行单元测试时,测试人员不需要了解程序的内部结构,只需了解输入和输出之间的对应关系。
同时,测试人员也可以根据代码的结构和逻辑,进行白盒测试,以测试代码的各个分支和路径。
3. Keil单元检测的流程3.1 单元测试用例设计:根据功能模块的需求和设计文档,编写测试用例,包括输入数据、预期结果和测试步骤。
3.2 环境搭建:安装Keil开发环境,并配置测试环境,包括编译器、调试器等。
3.3 测试代码编写:根据测试用例,编写测试代码,包括输入数据的准备、调用被测试模块的函数以及检查输出结果的正确性。
3.4 单元测试执行:将编写好的测试代码加载到目标系统中,执行测试用例,并记录测试结果。
3.5 测试结果分析:根据测试结果,判断被测试模块的功能是否正确,如果不正确,需要进行修改和重测。
4. Keil单元检测的应用4.1 功能验证:Keil单元检测能够验证程序的各个功能是否按照需求进行实现,发现并修复可能存在的问题。
4.2 稳定性测试:通过Keil单元检测,可以对程序的边界情况进行测试,发现潜在的错误和异常情况,并进行改进。
4.3 回归测试:当程序的其他部分发生了变动时,可以通过Keil单元检测对代码进行回归测试,确保被修改模块的功能不会受到影响。
4.4 协作开发:Keil单元检测有助于团队协作开发,每个开发人员负责不同的功能模块,可以通过单元检测进行独立测试,提高开发效率和代码质量。
Testbed在嵌入式软件单元测试中的应用
![Testbed在嵌入式软件单元测试中的应用](https://img.taocdn.com/s3/m/03e8c1cf4028915f804dc2e5.png)
(5)错误处理路径测试 。一般软件错误处理路径 测试应考 虑 下 面 几 种 可 能 的错 误 : 对 错 误 的描 述 不 易 理 解 、指 出 的 错误 并不是所 遇到 的错误 、出错时还没有进 行出错处理就 先进行 系统干预 、错误边 界条件 的处理 不正确 、描述错误 的信 息不 正确从而不足以确定 出错 的原 因等。(6)边界测试。 边界测试是检测软件在其输入 /输 出域 、过程参数 、状 态转 换 、功能界 限等具有一定 范围的边界或端点 条件下 的运行 情况 ,考核 软件的功能 或性能在其边界 条件下或边界 的邻 近 区域 内是否依然满 足设计要求 。按照 上去要求进行单元 测试 时,为 达到要求 的覆盖条件 ,还需采取 一定 的技术手 段对测试覆 盖率进行记 录和分析 ,确保 达到相应 的覆盖率 指标 。采 用 Wlmn单元 级测试工 具 ,能 自动产 生软件测试 驱动 、桩模块 ,提供友好 的输入输 出人机交 互和覆盖率统 计功能 ,能有效提高单元测试 的测试效率。
单元测试重点考虑的测试类型有 : (1)接 El测试 。接 口测 试主要检 查实参 与形参的数 目是否相等 、实参与形参 的属性是 否匹配 、实参 与形参 的单 位是 否一致 、传 到被调 用模 块 的实参 的属性是 否与形参 的属性匹配 、是 否把常量 当作 变量传递等 内容。 (2)功能测试 。功能测试 主要是对 照软件单元 的设计说明 ,验证软件是否完成了所需的功 能。 (3)重要执行路径测试 。应设计测试用例 以发现错误 的计 算 、不正确 的 比较和不正 常的控制 流向等错误 。在计算 中 比较 常见 的错误是:误解 或错误处理算术运算的优先次序 、 混 用不 同类 的操作 、计算 精度不够 等。另外在控 制软件执 行 流程 的 比较 操作 中比较常见 的错 误有 :不 同数 据类型 的 比较 、不正确 的逻辑操作符 或不正确 的优先 次序 、因精度 不够 使本应相等的数不相等 (如浮点数 )等 。 (4)软件单 元 的局部数据 结构测试 。软件单元 的局 部数据结 构是一个 主要 的错误来 源 ,应设计测 试用例来发 现不正确 的或不一 致 的数据说明 、初 始化有错或没有赋初值 、不正确的变量名 、 不一致 的数据类型 、上溢 /下溢或引用错误等类 型的错误 。
嵌入式软件测试技术研究
![嵌入式软件测试技术研究](https://img.taocdn.com/s3/m/93523edbb9f3f90f76c61b65.png)
嵌入式软件测试技术研究摘要:随着嵌入式软件结构的日益复杂,嵌入式软件的测试也越来越重要。
在对嵌入式软件的特点以及嵌入式软件测试环境和策略分析的基础上,对嵌入式软件基本测试方法进行了研究。
关键词:嵌入式软件;软件测试技术;静态测试;动态测试0引言随着信息技术的不断发展,与硬件发展日益稳定相比,软件故障却日益突出,因此软件测试的重要性已经越来越被人们所重视。
嵌入式软件有着开发工具昂贵、内存较小、实时性要求较高、CPU种类繁多、I/O通道较少等特点,为此,嵌入式软件的测试也与一般PC 应用软件的测试有很大的差异。
1嵌入式软件测试概述1.1嵌入式软件特点分析嵌入式软件测试的主要目的在于验证软件的可靠性,与通常的PC应用软件相比,嵌入式软件的测试有如下几个特点:①嵌入式软件是针对在特定硬件环境下开发的,其运行和测试也需要依据特定的硬件环境;②实施性要求较高,除了要求有正确的输出结果以外,还需要考虑是否能够在规定的时间内得到运行结果。
1.2嵌入式软件测试环境分析一般采用交叉开发环境来搭建嵌入式软件的测试环境。
例如单元测试、集成测试等可以在PC机上完成的测试,通常都在PC机上进行测试,从而可以避免硬件环境的影响,提高测试效率。
在后期的集成测试中,需要在具体的嵌入式软件硬件环境中,搭建交叉测试环境来完成嵌入式软件的测试。
交叉测试环境的搭建需要注意以下几个方面的内容:(1)主机与目标机之间的通信问题。
可以通过以太网或者串口进行主机与目标机之间的物理连接,主机与目标机之间的数据格式可以预先进行定义。
(2)主机对目标机的测试控制。
主要包括主机如何向目标机发送测试用例,如何跟踪目标机的测试,查看是否正常进行。
(3)目标机测试结果的反馈。
通常运行嵌入式系统的目标机没有视频显示等便利的测试结果输出端口,因此目标机上的异常、错误信息和正常响应信息等测试结果都需要返回到主机上进行显示和输出。
在嵌入式软件测试环境的搭建过程中,需要测试嵌入式系统与已建设备是否协调,硬件设备电气特征是否正常,以及主机与目标机之间的物理信道是否通畅等,从而保证测试结果不受到嵌入式软件以外其它因素的影响。
Tessy — 嵌入式软件单元测试、集成测试工具
![Tessy — 嵌入式软件单元测试、集成测试工具](https://img.taocdn.com/s3/m/2ea88470bd64783e09122b66.png)
Tessy —嵌入式软件单元测试/ 集成测试工具Tessy是一款专门针对嵌入式软件进行单元/ 集成测试的工具。
它可以对C/C++ 代码进行单元、集成测试,可以自动化搭建测试环境、执行测试、评估测试结果并生成测试报告,其多样化的测试用例导入生成方式和与测试需求关联的特色,使Tessy 在测试组织和测试管理上也发挥了良好的作用。
目前Tessy广泛应用在汽车电子主流客户中。
主要特点在V 模型开发中,Tessy 主要应用在单元测试和集成测试阶段。
单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。
基于越早发现bug 开发成本越低的原则,在进行代码功能验证的过程中,按照V 流程右半部分先完成单元测试再进行集成测试的测试顺序更为有效。
另外,Tessy 也可以满足各类标准(如ISO26262、IEC61508、EN 50128/50129 等)对测试的需求,比如Tessy 可以满足ISO26262 中各等级对单元/ 集成测试的要求,当然Tessy 本身也通过了TUV 的认证,证明该软件是安全可靠的,可以在安全相关的软件研发过程中使用。
主要功能•自动生成测试环境、一键执行及评估结果Tessy 可以自动生成驱动程序、桩函数,帮助测试人员提高单元测试效率。
Tessy 支持一键执行测试,并自动对测试结果进行评估,可生成多种形式的报告。
•便捷的测试用例设计方式除软件界面手动设计测试用例外,Tessy 还支持导入导出多种格式的测试用例。
另外,Tessy 集成了分类树编辑器CTE,有效利用等价类划分以及边界值法,辅助设计出更全面更有效的测试用例。
•高度自动化的回归测试Tessy 通过分析源文件自动识别函数及相关接口,在接口发生变更时,支持通过简便的操作进行测试数据复用,保证便捷有效的回归测试。
•测试覆盖度分析Tessy 提供分支覆盖、修正条件/ 判定覆盖MC/DC(Modified Codition/Decision Coverage)、多条件覆盖MCC(Multiple ConditionCoverage) 等多种覆盖度分析。
嵌入式软件的测试方法与技术
![嵌入式软件的测试方法与技术](https://img.taocdn.com/s3/m/68e4b41d4a73f242336c1eb91a37f111f1850d9f.png)
嵌入式软件的测试方法与技术摘要嵌入式软件的测试是保证嵌入式系统安全性和可靠性的重要工作。
本文介绍了嵌入式软件测试的概念、测试策略、测试方法和测试技术,旨在为嵌入式软件测试工作提供参考。
关键词:嵌入式软件;测试;测试策略;测试方法;测试技术引言随着嵌入式系统的应用越来越广泛,其软件对嵌入式系统的安全性和可靠性的要求也越来越高。
嵌入式软件测试是保证嵌入式系统安全性和可靠性的重要工作。
本文将对嵌入式软件测试的概念、测试策略、测试方法和测试技术进行研究。
嵌入式软件测试的概念嵌入式软件测试是指对嵌入式系统中的软件进行测试,包括测试软件的完整性、正确性等方面的测试。
嵌入式软件测试的目的是为了发现软件中的缺陷并改进软件,以提高软件的安全性、可靠性、稳定性和性能等方面的指标。
嵌入式软件测试的策略嵌入式软件测试的策略是指制定用于测试嵌入式软件的方法和计划的过程。
测试策略应结合开发实践、对系统的需求和要求的理解、系统内在的限制、测试工具和根据项目的关键性和复杂度来制定。
嵌入式软件测试策略的主要内容包括以下方面:1.需求分析:分析嵌入式系统的需求和用户的需求,并将需求转换为测试用例。
2.测试设计:设计测试用例,并制定测试计划,包括定义测试环境、测试时间、测试人员、测试工具等。
3.测试执行:执行测试计划,记录测试结果,分析测试结果并发现和跟踪问题。
4.测试管理:对测试过程进行管理,包括测试跟踪、版本控制、测试报告等。
嵌入式软件测试方法嵌入式软件测试方法是指通过不同的测试手段,对嵌入式软件进行测试的方法。
常见的嵌入式软件测试方法包括:1.黑盒测试:黑盒测试是指根据需求规格书的功能描述,设计测试用例进行测试。
黑盒测试的优点是易于实施,可覆盖大部分的应用场景,但无法检查内部实现的错误。
2.白盒测试:白盒测试是指对软件的内部结构进行测试,包括代码分析、代码覆盖率分析、结构测试等。
白盒测试的优点是可以深入了解软件内部结构,发现潜在的错误和缺陷。
阐述嵌入式软件测试的十大方法
![阐述嵌入式软件测试的十大方法](https://img.taocdn.com/s3/m/f3a029715b8102d276a20029bd64783e08127d58.png)
阐述嵌入式软件测试的十大方法嵌入式软件测试是指对嵌入式系统中运行的软件进行测试,确保其功能和性能符合规格要求。
它具有以下特点:系统复杂性高、资源有限、实时性要求强、环境限制多等。
为了提高嵌入式软件的质量和可靠性,测试人员需要采用一些专门的测试方法。
下面将阐述嵌入式软件测试的十大方法。
1.黑盒测试:黑盒测试是一种将系统视为一个整体的测试方法,只关注输入和输出之间的关系,不考虑具体的实现细节。
通过给系统输入合理和非法的输入数据,验证系统能否按照预期的方式返回正确的输出结果。
2.白盒测试:白盒测试是一种以系统内部实现为依据的测试方法。
它通过分析代码的逻辑结构和执行路径来设计测试用例,覆盖所有可能的分支和条件,以发现潜在的错误或漏洞。
3.单元测试:单元测试是对软件模块最小单位的测试方法,用于确认模块是否按照要求进行了正确的设计和实现。
在嵌入式软件测试中,单元测试可以通过模拟外部环境,对模块的输入输出进行验证。
4.集成测试:集成测试是将单独测试的模块组合起来进行测试,验证它们在集成后是否能够正确地协同工作。
在嵌入式软件测试中,常采用自底向上的方法进行集成测试,先将低层模块集成测试通过后再进行高层模块的集成测试。
5.功能测试:功能测试是一种对系统功能进行验证的测试方法,通过输入不同的操作指令,测试系统是否按照预期的功能和行为进行响应。
在嵌入式软件测试中,功能测试通常包括输入验证、操作验证和输出验证等多个方面。
6.性能测试:性能测试是一种测试软件在特定条件下是否能够满足性能要求的方法。
在嵌入式软件测试中,可以通过模拟出真实环境下的各种条件和负载,来测试系统的响应时间、处理能力和资源利用率等指标。
7.安全性测试:安全性测试是一种针对系统的安全性进行验证的测试方法。
在嵌入式软件测试中,安全性测试可以通过模拟各种攻击和漏洞来测试系统的抵御能力,如缓冲区溢出、命令注入、拒绝服务等。
8.可靠性测试:可靠性测试是一种验证系统在长时间运行和各种异常条件下是否能够保持稳定和可靠的方法。
基于IBM RTRT的嵌入式软件单元测试
![基于IBM RTRT的嵌入式软件单元测试](https://img.taocdn.com/s3/m/e8a49178f242336c1eb95e9d.png)
基于IBM RTRT的嵌入式软件单元测试摘要:单元测试是对嵌入式软件进行测试的最低级别的活动,是保障整个测试效果、保证产品质量的基础。
rtrt(rational test realtime)是ibm ratioanl提供的典型嵌入式软件代码级自动化测试工具,可同时对宿主机和目标机进行测试和调试,自动生成测试脚本、测试桩和测试报告。
通过研究应用表明利用rtrt进行嵌入式软件单元测试实现自动化,能大量减少测试工作量,有效提高测试效率和软件质量。
关键词:单元测试;嵌入式软件;rtrt信息技术的飞速发展带动在嵌入式系统中软件越来越多地取代硬件的功能,研究嵌入式软件测试技术用以保证软件质量成为近年来关注的热点。
单元测试作为软件测试过程中的第一阶段,是软件测试的基础,效果会直接影响后期测试;另外,从修复软件缺陷与花费的成本关系考虑,在单元测试阶段修复缺陷将比在后一个阶段发现缺陷节约5~10倍的成本,可见无论从质量还是成本的角度单元测试都是非常关键的。
但在实际测试中,仅依靠人工编写函数并统计分析结果的测试方法已不能满足测试准确性和测试效率的要求,要引进自动化的测试工具。
rtrt是一个跨平台组件和运行时分析测试工具,支持测试的各个阶段,其单元测试自动生成测试用例模板,自动生成测试桩程序,自动运行测试程序,自动生成测试报告。
一、单元测试基本理论(一)单元测试定义单元测试是对每个最小的软件模块进行的正确性检验的测试,在于发现各模块内部可能存在的各种差错。
包含模块接口测试、局部数据结构测试、路径测试、错误处理测试和边界测试,依据详细设计说明书和源程序清单,从程序的内部结构出发设计测试用例。
主要采用白盒测试的测试用例,辅之以黑盒测试,使之对任何合理和不合理的输入,都能鉴别和响应。
(二)单元测试环境单元是软件的基本组成模块,但本身不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,必须为每个单元测试开发驱动模块和桩模块。
嵌入式软件PIL自动化测试技术研究
![嵌入式软件PIL自动化测试技术研究](https://img.taocdn.com/s3/m/29596e72302b3169a45177232f60ddccda38e6ec.png)
10.16638/ki.1671-7988.2021.012.019嵌入式软件PIL自动化测试技术研究郭佳,金鑫,邓煜(陕西重型汽车有限公司,陕西西安710200)摘要:文章旨在提出一种PIL自动化测试方法,主要分析了当前汽车控制器开发中的主流测试流程,介绍了PIL 测试的必要性和测试原理,然后介绍了一种借助自动化软件测试工具TPT进行PIL测试的方法,通过一个实例详细介绍了在TPT中实现PIL自动化测试的过程。
通过分析可以看出通过自动化工具TPT进行PIL测试的方案可行性以及该方案对提升PIL测试效率的优势,为嵌入式软件开发的PIL自动化测试提供了一种新的测试方法。
关键词:TPT;PIL测试;汽车电子;V流程中图分类号:U461.99 文献标识码:A 文章编号:1671-7988(2021)12-64-05Research on Automatic Test Technology of Embedded Software PILGUO Jia, JIN Xin, DENG Yu( Shaanxi Heavy Duty Automobile Co., Ltd., Shaanxi Xi’an 710200 )Abstract: The purpose of this paper is to put forward a PIL testing methods, mainly analyzes the mainstream of the current car controller development testing process, introduces the necessity of PIL test, PIL test principle, then introduces a kind of automated software testing as a tool to TPT tested PIL, TPT is introduced by an example of realization process of PIL, through the analysis can be seen through an automated tool TPT PIL test feasibility and advantages of the scheme to improve PIL test efficiency, for car controller development of PIL test provides a new method of testing.Keywords: TPT; PIL test; Automotive electronics; VprocessCLC NO.: U461.99 Document Code: A Article ID: 1671-7988(2021)12-64-05引言当前汽车控制器的开发大都采用V流程开发模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式软件自动化单元测试研究及应用发表时间:2016-06-17T15:56:58.160Z 来源:《电力设备》2016年第5期作者:屠小兵刘杰陆继翔[导读] 嵌入式软件的单元测试是嵌入式软件质量控制的重要技术手段之一,是软件研发过程中不可或缺的环节[1]。
(国电南瑞科技股份有限公司江苏省南京市 210061)摘要:本文研究了一种嵌入式软件自动化单元测试技术,提出了面向嵌入式软件的单元测试框架CppUTest,结合Jenkins(用Java编写的一种开源的持续集成工具),以ARP嵌入式软件平台为例,设计适用于ARP嵌入式软件平台开发的自动化单元测试技术,并验证在项目研发过程中应用的实际效果。
关键词:ARP嵌入式软件平台;自动化单元测试;CppUTest;Jenkins; Abstract:In this paper, an automated unit testing technology of embedded software was studied. It proposed a kind of unit testing framework called CppUTest for embedded software. It combined Jenkins (an open source continuous integration tool written in Java) and used ARP embedded software platform as an example, designed a kind of automated unit testing techniques for ARP embedded software development platform, and verified the actual effect in applications of the project development process. Keywords:ARP embedded software platform; automated unit testing; CppUTest; Jenkins;引言嵌入式软件的单元测试是嵌入式软件质量控制的重要技术手段之一,是软件研发过程中不可或缺的环节[1]。
单元测试在软件开发的前期就已经介入,它是软件测试的基础。
如果做好了单元测试,后期的集成测试和系统测试就很顺利,因此会节约很多时间和成本。
另外,在单元测试过程中,往往能发现一些深层次的问题,有些问题在集成测试和系统测试时很难发现。
所以单元测试是构筑产品质量的基石。
由于嵌入式软件具有较高的复杂程度,传统的手工开发方式已经远远不能满足系统测试工作的要求和发展,这就使得自动化测试应运而生。
自动化测试的出现改革了传统的手工模式,使得测试工作进入自动化的高速发展时代。
项目的测试工作是一项工作量及其繁重的任务,手工测试不仅劳动密集程度过大,错误率也很高。
而自动化测试的出现,弥补了这些缺陷,其优势是显而易见的,能够提高测试的准确率,从而极大地提高测试的效率。
新一代智能变电站建设以“系统高度集成、结构布局合理、技术装备先进、经济节能环保,支持调控一体”为特征,通过电网运行数据的全面采集和实时共享,支撑电网实时控制和智能调节,提升电网运行稳定性和可靠性。
因此,顺应智能电网和智能变电站的发展和建设需求,在目前公司ARP系列产品的基础上,开发高质量的变电站设备,对于后续抢先占领市场,非常关键。
这些设备有硬件和运行在设备上的嵌入式软件组成,因此,不仅要提高硬件的质量,也要提高嵌入式软件的质量。
为了满足嵌入式软件提高质量的需求,文中设计了一种适用于嵌入式软件的自动化单元测试技术,它不仅可以提高测试效率,而且使测试更充分、更精细,为嵌入式软件的质量保障提供更好的支撑。
1自动化单元测试框架设计1.1 自动化单元测试概述从软件开发领域,单元测试并不是一个新概念。
从早期使用Smalltalk编程语言的20世纪70年代开始,单元测试就已经出现,并一次又一次被证明是开发人员提高代码质量,加深理解类或方法功能需求的最佳手段之一[2]。
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证[3]。
单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
自动化单元测试是借助于测试工具和测试规范,局部或全部代替人工进行单元测试及提高测试效率的过程。
对于测试工具的选择,需要评估究竟该选择哪种工具才能获得最佳测试结果。
在软件测试过程中,并不是所有的测试工作都适合采用自动化的方式。
由于单元测试用于检测代码的内部结构,因此单元测试的自动化将有效地提高软件开发的效率和软件的质量。
1.2 自动化单元测试框架在ARP嵌入式软件平台开发过程中,项目采用CppUTest作为白盒测试框架,编写自动化单元测试用例,并集成到Jenkins上进行编译和运行,并生成自动化测试报告和覆盖率报告。
CppUTest 是一个功能全面的测试框架,是为了支持在多种操作系统上开发嵌入式软件而特别设计的程序[4]。
它提供了基于JUnit的Jenkins的插件,能很好地集成到Jenkin集成服务器。
它利用宏和断语为特定的测试用例定义了一个可执行的测试。
它接受用户指定的测试用例名(一般取被测对象名)和测试名作为参数,并给出了一个作用域供填充测试宏语句和普通的C++代码。
一系列测试的集合就构成一个简单的测试程序。
同时它还提供对测试集合的配置,已满足不同规模测试的要求。
以往的单元测试,主要是借助测试工具,可以根据设计好的测试用例生成驱动函数,对被测函数进行打桩,插入被测程序,然后编译执行,并收集结果数据进行分析。
文中以ARP嵌入式软件平台为例,提出的自动化单元测试与以往不同,它的关键在于自动化,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量。
自动化单元测试是通过在持续集成工具Jenkins上配置脚本命令,持续构建包括:源码版本自动更新、自动编译与运行、测试结果自动分析与报告生成、以及单元测试的覆盖率分析等任务,实现单元测试的高度自动化[5]。
嵌入式软件自动化单元测试总体框架如图1所示:图1 自动化单元测试总体框架2 自动化单元测试项目实践2.1 自动化单元测试环境搭建在ARP嵌入式软件平台自动化单元测试中,目标机的操作系统是Ubuntu,编译环境是与操作系统版本对应的GCC和G++。
利用目标机编译和运行ARP嵌入式软件平台的源程序模块和单元测试程序模块,安装单元测试框架CppUTest,同时安装tomcat和Jenkins,用来部署自动化单元测试的持续构建。
从UCM Clearcase版本服务器上更新最新的源码到目标机上,选择被测程序模块,对问题函数编写单元测试用例,并对被测程序进行插桩,在目标机上完成编译、链接并运行,运行结果通过Jenkins上的JUnit插件,解析成测试报告,从而得到测试结论。
图2-1 源码版本库自动更新2.2源码版本库自动更新为了使自动化单元测试需对嵌入式软件源码实时进行测试,为保证目标机源码实时更新,配置源码版本库自动更新功能。
在Jenkins上构建源码代码版本库管理任务,实时监测版本变化功能,一旦发现版本变化,便触发版本管理工具更新源码,并记录下版本变化情况。
如图2-1、2-2所示:图2-2 源码版本变化监测2.3单元测试的代码结构设计考虑到单元测试过程中,需要对源码进行打桩,因此在代码结构上将测试代码与源码隔开,测试代码目录为源码子目录,这样既不影响源码结构和编译,也能更方便地对源码进行用例测试。
代码结构如图3所示:图3 自动化单元测试代码结构设计2.4单元测试用例设计以具体的单元测试用例为例,对问题函数initModbusDesc进行分析,发现其存在内存溢出的错误,在CppUTest单元测试框架下,设计Testcase,如图4所示。
图4 单元测试用例举例通过设计测试用例,测试条件覆盖,发现如果1032行if( dp->modbus_send_no_table != NULL )为false,即dp->modbus_send_no_table == NULL,以及1083行if( dp->modbus_write_no_table != NULL)同时为false时,即dp->modbus_write _no_table == NULL,此时1134行dp->send_min_addr[dp->send_min_no++] = (INT32)atol(dp->modbus_send_no_desc[0] );中的dp->modbus_send_no_desc[0]的数组是未初始化的,因此用dp->modbus_send_no_desc[0]进行赋值是会溢出的。
执行此异常用例本身是会导致单元测试程序core的,为了保证其他用例的顺利执行,因此选择Testcase的类型为IGNORE_TEST,单元测试框架识别该用例类型后的处理方式是忽略执行。
2.5单元测试自动编译及运行通过命令行在Jenkins配置单元测试程序的自动化编译和自动执行,并对执行结果以报告形式展示。
自动编译和执行配置如图5-1所示,单元测试执行结果和报告如图5-2所示,单元测试执行结果趋势如5-3所示。
2.6覆盖率设计覆盖率是测量测试完整性的一个手段,是衡量测试是否完整的一个标准,我们编写的代码当中每个分支都应该是被覆盖的,这样才能保证测试是完全的,正确的.覆盖率测试报告是评测测试是否完整的一个重要手段,测试覆盖率低下证明测试覆盖不足,当系统进行迭代开发的时候,就会出现各种各样的问题,而且覆盖率也是QA关注的一项重要指标,QA通过该报告和指标和开发者进行沟通,从而解决开发当中遗留的问题[6]。
在单元测试用例设计中,通过被测函数的单元测试语句覆盖、分支覆盖和条件覆盖的信息分析,来验证单元测试的有效性。
在单元测试程序的makefile中,添加覆盖率编译参数“-fprofile-arcs -ftest-coverage”和链接参数“-lgcov -coverage”,单元测试编译之后,生成覆盖率中间文件.gcno,执行单元测试程序之后,生成覆盖率信息文件.gcda。
然后,通过Gcovr工具,来收集单元测试用例运行后的覆盖率信息,以xml的形式保存覆盖率报告,然后由持续集成平台上的Cobertura插件将xml形式的覆盖率报告解析,并在网页上展示。