全国咨询热线:400-618-4000

如何实现嵌入式软件测试的自动化

创建时间:2017年12月19日16时56分 来源:传智播客

无论是对于传统的瀑布式开发还是对于测试驱动开发而言,单元测试和集成测试都是非常重要的测试策略。

单元测试可检测小单元和独立的单元代码,比如,可对单独的C++函数,C函数,或Ada包进行测试。在进行全面的系统测试之前通常都要进行单元和集成测试。

单元测试和集成测试对于建立坚固、无误的应用程序,有着十分重要的意义。因为测试者通过单元和集成测试可以很方便地调用应用程序的底层功能,以便验证低层需求是否已实现。

VectorCAST工具可对C/C++(VectorCAST/C++)和Ada(VectorCAST/Ada)进行单元和集成测试。这两套工具都能够自动完成与单元和集成测试相关的主要任务,包括生成完整的、可执行的测试套件,管理测试用例和测试结果,自动进行回归测试等。

单元测试和集成测试的两大目标

验证应用程序的正确性 —— 要求测试用例包含已知输入和预期值,以便调用被测代码的功能。

证明测试的充分性 —— 要求对代码覆盖率进行跟踪,以便验证程序代码是否已经100%执行了。

VectorCAST/C++和VectorCAST/Ada都可以自动完成这些任务,并且能够在应用程序的整个生命周期一直对其进行全面的自动化回归测试。

传统的单元测试和集成测试的流程

传统的单元测试:因为软件的每个单元都进行了编码,所以开发者需要生成测试用例调用这些代码,再执行测试用例验证代码的正确性。这种流程存在的一个风险就是开发人员可能在设计测试用例的时候会受到代码执行情况的影响,导致他们只是测试所写的代码能够实现的功能,而不是验证代码应该实现的功能。

测试驱动开发(TDD)和敏捷流程

测试驱动开发会在设计完成之前生成测试用例,以解决传统的单元测试存在的上述问题。这样,开发者就能够根据底层需求和每个单元已确定的接口建立单元测试。每个功函数口定义好之后,就会针对该函数加入增加测试。这些测试一开始的时候会失败,因为各个函数尚未有逻辑定义。但是,当整个程序代码完成之后,测试就会通过。这种方法要求开发、建立和测试的周期较短,而且能够自动进行自动化回归测试。VectorCAST/C++支持这种测试方法,因为只要有一个头文件存在,VectorCAST/C++就可以建立测试。

为什么单元测试和集成测试这么难?

要想测试能够达到接近100%的代码覆盖率要求,就必须要为被测程序中的每行代码都写一行测试代码(驱动、桩函数、测试数据)。

如果不用工具来进行单元测试,那么要保持单元测试代码始终和程序代码相匹配将是一个挑战。不仅需要写测试代码,而且还要对其进行调试,以保证它的运行效果和预期的一样。因为要创建测试软件并要不断对其进行维护,所以手动的单元测试的花费很高而且效率比较低。而使用VectorCAST,不需要写任何测试代码就能够完成单元测试。