彩票走势图

Parasoft C/C++test (Eclipse)2020.2系列教程:单元测试的生成和执行

翻译|使用教程|编辑:况鱼杰|2021-03-01 10:25:55.150|阅读 381 次

概述:本文包含一组练习,涉及单元测试的各个方面。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Parasoft C/C++test针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。C++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。


本文包含一组练习,涉及单元测试的各个方面。使用引言中提供的信息以及在练习中学习到的测试实践,您可以制定出满足您特定要求的测试原理。有关在C ++ test中执行测试和覆盖率分析的详细信息,请参阅《 C ++ test用户指南》的“测试生成和执行”部分。

先决条件

ATM项目必须在您的工作空间中可用。有关如何实现此目的的详细信息,请参见教程-创建C ++ test项目。

C ++ test单元测试简介

任何测试活动都需要定义和理解:

  • 测试目标/要求

  • 测试指标

  • 测试策略

  • 测试预算

独立的项目范围的单元测试

选择一种方法时,要考虑的一个因素是是单独执行单元测试还是在整个项目范围内执行API测试。

  • 孤立地进行单元测试意味着创建通常不使用在测试文件外部定义的功能的测试,出于测试目的,这些测试将被存根替换。

  • 具有项目范围的单元或API测试将创建完全耦合的测试,这些测试使用了被测单元可用的所有外部功能。 结果是所需存根的数量大大减少,并且集合中的每个测试都可以行使一个或多个功能,因此,相对于测试数量而言,可以获得更大的总体测试覆盖率。

两种方法都需要权衡取舍,但是项目要求和SDLC确定的测试阶段通常决定单元测试方法。C ++ test支持两种方法,以及两种方法的创造性结合。

隔离单元测试注意事项

  • 项目测试需求要求对单元测试进行隔离(目的是在代码集成之前验证底层功能)。

  • 测试必须与新开发的源代码一起提交。有问题的文件编译后,可以立即进行隔离测试。

  • 该项目是从头开始开发的,在许多情况下,大多数依赖项组件或类都不可供开发人员编写测试使用。

对于少量文件,隔离的单元测试通常需要较少的工作来配置和运行。处理小得多的文件也可能会大大减少C ++ test的总体测试准备和运行时间。测试更大的文件隔离集时,在定义存根和管理存根文件时应格外小心。

注意:在隔离测试中开发的测试通常可以在以后的测试周期中重新用于项目级别的测试。可以通过定义特定的源文件,库和存根文件来调整已测试代码与系统其余部分的耦合,以供测试目的使用或忽略。所有这些都可以通过C ++ test测试配置中的各种设置来完成。

项目(耦合)单元测试注意事项

  • 该项目是对现有代码库的增量修改。

  • 验证整个项目的功能/用例比实现100%的代码覆盖率更为重要。

在项目范围内进行测试意味着,除非您使用“用户”存根将其明确存根,否则您选择进行测试的对象的范围将扩大到包括项目中定义的所有符号。

在C ++测试流程中,项目级别的单元测试可能会花费更多的时间来处理和准备-但这只是挂钟时间。设置基于项目的测试的总体工作通常较少。

如果解决了项目中的所有符号,则可以成功链接项目,并且您最关心的是单元测试以达到代码覆盖率要求,那么最好的方法是在项目范围内进行初始单元测试。您仍然可以进行基于类的测试,但是当您对选定的类进行覆盖时,还将测试项目中的其他代码并报告覆盖率。

基本程序

步骤 项目范围
文件范围(隔离)
阶段1:设置测试配置
对于基于主机的测试,用于生成测试,生成存根和运行测试的内置配置应该可以正常工作。 但是,最好将内置配置复制到用户定义的文件夹中,以确保环境一致。 始终使用重复配置,以便您可以轻松识别它并记住其用途。
两种方法都相同
阶段2:选择一个或多个课程
测试范围将扩大到包括整个项目以供选择。 但是,将仅运行与所选代码关联的单元测试。
可以通过在项目中选择一个或多个源文件来设置测试范围。 为防止在运行单元测试时出现未定义的符号错误,应使用与生成存根相同的作用域或作用域的子集。
阶段3:生成单元测试
运行“生成单元测试”配置以设置测试基础结构并创建测试套件。 测试生成不是特定于项目范围或文件范围的,因此您可以生成测试并将其用于任一测试方案。 创建测试后,您可以从项目树中打开测试套件的源代码,或使用C ++ test测试用例浏览器导航到生成的单元测试。

阶段4:生成存根

存根视图提供了符号用法的可见性。 提供了一个内置配置,该配置将加载存根视图并显示符号,定义类型和位置。 如果计划将此配置集成到您的过程中,则应复制并重命名该配置。 在生成存根之前,存根视图将列出不可用或正在使用原始定义的符号(原始代码在作用域中可用)。 生成存根后,您应该看到所有定义为“原始”或“自动”的符号。 如果创建了用户存根,它们将显示为“用户定义”。

要自动生成存根,请在项目树中选择测试范围,然后运行存根生成配置。 默认情况下,在项目stubs / autogenerated目录中将存根创建为源代码。 如果原始定义可用于所有符号,则不会生成任何存根。 查看“存根”视图以确保定义了所有符号。

两种方法都相同
阶段5:运行单元测试

选择范围并执行配置以运行测试。 测试配置将使用生成的测试基础结构,测试套件和可用的存根生成测试可执行文件。 该可执行文件将运行,创建结果文件,并将其加载到C ++ test GUI中进行分析。

您还可以使用C ++ test测试用例浏览器来查看和选择一个或多个测试用例来运行。 如果存在针对所选文件或测试之外的代码的测试,则将忽略它们。 如果选择中的代码缺少测试,则该代码将不执行。

两种方法的步骤相同。 附加说明:选择测试范围时,必须选择与生成存根相同的范围或范围的子集。

单元测试练习简介

以下练习按在项目测试中最喜欢使用的顺序进行介绍。 该流程假定您必须在代码完成且所有功能可用之前进行测试。 最后的练习包括如何生成有关测试工作的报告。

C ++ test测试配置用于设置和管理测试。 实际上,内置的测试配置用于创建模板。 您应该将它们复制到用户定义的文件夹中,以便可以对其进行检查和修改以符合您的要求。 以下练习需要几种测试配置。 我们将在各个练习中介绍每个测试配置的详细信息。 从以前的课程中可以假定您熟悉复制和修改测试配置。
练习设置
为了准备以下练习,您需要使用新的ATM示例代码副本进行项目设置,如教程-创建C ++测试项目中所述。

GNU基于主机的测试过程

1.使用C ++ test ATM示例代码创建用于单元测试的项目目录。

例如,C:\ C ++ test \ Tutorial \ ATMEclipseGnu \ ATM

2.将以下文件从[C ++ test安装目录] \ examples \ ATM复制到新目录:

  • Makefile
  • Account.cxx
  • ATM.cxx
  • Bank.cxx
  • BaseDisplay.cxx

3.创建一个C:\ C ++ test \ Tutorial \ ATMEclipseGnu \ ATM \ include目录,然后将以下文件复制到include目录。

  • Account.hxx
  • ATM.hxx
  • Bank.hxx
  • BaseDisplay.hxx
4.确保您的Windows环境包括gcc,g ++,make等的路径。

5.启动C ++ test并在您创建的ATM父目录中创建一个新的工作区。

例如:C:\ C ++ test \ Tutorial \ ATMEclipseGnu \ workspace

6.从C ++ test透视图中,选择“文件”>“新建”>“项目”。

7.展开C ++,选择C ++ Project,然后单击“下一步”。

8.在“项目名称”字段中输入ATM。

9.清除“使用默认位置”。

10.浏览到ATM Makefile的位置。

例如,C:\ C ++ test \ Tutorial \ ATMEclipseGnu \ ATM

11.在项目类型下,选择Makefile项目>空项目。

12.在工具链下,选择Cygwin GCC。

13.单击完成。

14.当您看到一个对话框询问您是否要打开关联的透视图时,请根据您的偏好进行响应。您可以选择在C / C ++透视图或C ++ test透视图中工作。

15.在ATM.cxx上运行静态分析,作为项目设置的健全性检查。有关更多信息或运行静态分析,请参见教程-根据编码标准分析代码。


Parasoft C/C++test 是一个集成的解决方案,用于自动化广泛的最佳实践,能够实现编码策略执行、静态分析、单元和组件测试以及运行时错误检测,为团队提供了一种实用的方法,以确保他们的C和C++代码能够按照预期工作。C/C++test与Parasoft DTP集成,DTP提供了基于Web的交互式仪表盘,具有向下钻取功能,允许团队根据C/C++test的结果和其他关键流程指标跟踪项目状态和趋势。 



标签:Parasoft

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP