C++test9.2简明手册.doc_第1页
C++test9.2简明手册.doc_第2页
C++test9.2简明手册.doc_第3页
C++test9.2简明手册.doc_第4页
C++test9.2简明手册.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+Test9.2简明手册版本:1.0华中数控软件开发部版本说明日期版本号发布说明作者批准人2015/1/28V0.10初稿王蓉2015/3/12V0.20细化单元测试步骤王蓉目录1创建项目11.1导入 Visual Studio 6.0 项目来创建 C+test 项目11.2导入现有项目到工作空间:22导入测试配置文件43单元测试的步骤53.1自动生成测试套件Generate Test Suites53.2生成自动定义/ 桩函数Generate Stubs63.3扩展和修改测试套件Extending and Modifying the Test Suites83.4构建测试可执行文件Build Test Executable93.5执行测试用例Run Unit Tests93.6复审测试执行结果Review Test Execution Results103.7复审覆盖率信息Reviewing Coverage Information124桩函数介绍145C+TEST API155.1常用的测试套件/ 测试用例注册155.2部分测试用例/桩函数API 数据源宏155.3测试用例后置条件宏155.4常用的测试用例验证宏165.5被测试用例驱动的函数17I1 创建项目1.1 导入 Visual Studio 6.0 项目来创建 C+test 项目1. 选择 文件(File) 新建(New) 项目(Project)。2. 选择 C+test 导入 Microsoft Visual Studio 6.0 项目。3. 单击 下一步(Next)。 会打开导入 Microsoft Visual Studio 6.0 项目向导。4. 在向导顶部的文本字段中,指定 Microsoft Visual Studio 6.0 项目文件 (.dsp), Microsoft Visual Studio 6.0 工作空间文件 (.dsw),或者想要让 C+test 从中搜索 Microsoft Visual Studio 6.0 项目的根目录。找到的项目将列在 要导入的项目(Projects to be imported) 树中。如下图1-1:图1-15、项目创建成功后,在导航器列表可以看到该项目。如下图1-2:图1-21.2 导入现有项目到工作空间:1. 选择 文件(File) 导入 常规 现有项目到工作空间中。2. 选择 常规 现有项目到工作空间中。3. 单击 下一步(Next)。 会打开导入项目向导。如下图1-3图1-3172 导入测试配置文件1. 选择 Parasoft 测试配置(New) 项目(Project)。2. 选择 用户自定义 右键 导入 3. 分别导入以下测试配置文件(配置文件存放在安装包cfg文件夹下),如下图2-1Static ApertiesGenerate Test SpertiesGenerate SpertiesBuild Test EpertiesRun Unit Tperties图2-13 单元测试的步骤3.1 自动生成测试套件Generate Test Suites1、选中测试源文件,例如hncmodal.cpp 2、运行执行-用户自定义-Generate Test Suites,如下图3-1-1图3-1-13、浏览自动生成的测试用例,如下图3-1-2图3-1-23.2 生成自动定义/ 桩函数Generate Stubs1、选中测试源文件,例如hncmodal.cpp 2、运行执行-用户自定义-Generate Stubs,如下图3-2-1图3-2-13、查看生成的自动定义/ 桩函数,如下图3-2-2图3-2-23.3 扩展和修改测试套件Extending and Modifying the Test Suites 要达到的目标做法参考添加新的 测试用例来检查特殊的单元层功能性需求或提高覆盖率使用测试用例向导来图形化地创建测试用例或添加代码到测试用例模板中。参见C+Test用户手册.pdf,第 277 页【添加 用户定义的测试用例】修正自动生成的测试用例检查特殊的单元层功能性需求或提高覆盖率编辑相关的测试文件第 277 页【添加 用户定义的测试用例】删除测试用例,并禁用结果检查或现在对你不重要的测试用例删除一个测试套件:右键单击测试用例浏览器中的相应节点,然后选择 Delete要删除一个测试用例:右键单击测试用例浏览器中的相应节点,然后选择 Delete禁用特殊结果的检查:右击质量任务 (Quality Tasks) 视图口中未核对的结果,然后从快捷菜单中选择Ignore Outcome禁用完整测试用例:右击单击测试用例浏览器中的相应节点,然后选择Disable参见C+Test用户手册.pdf,第 321 页【删除和禁用测试】防止对某种类或方法进行测试选择相应希望包含或排除的资源参见C+Test用户手册.pdf,第 125 页【测试用户定义的资源集】将自动生成的测试转换为用于回归测试的功能快照(用于识别有代码修正引进的变化/ 问题)如果代码行为正确,右击为核对的结果代码,然后从快捷菜单选择 Verify Outcome参见C+Test用户手册.pdf,第 275 页【检验用于进行回归测试的测试用例】测试过程中访问数据源值配置用户定义的或自动生成的测试用例,访问存储在数据源中的值参见C+Test用户手册.pdf,第 294 页【使用从数据源提取的数据来参数化测试用例】测试用例中使用标准输入输出口的数据添加 C+test Stream API 调用,改变标准输入输出流的方向参见C+Test用户手册.pdf,第 319 页【使用来自标准输入输出的数据】定义用户化桩函数(指明外部方法/ 函数的什么值返回到测试类中)。使用桩函数向导创建桩函数框架,然后进行定制参见C+Test用户手册.pdf,第 327 页【添加和修改桩函数】3.4 构建测试可执行文件Build Test Executable1、选中测试源文件,例如hncmodal.cpp 2、运行执行-用户自定义-Build Test Executable,如下图3-4-1图3-4-13.5 执行测试用例Run Unit Tests1、选中测试文件(一条或多条测试用例、一个或多个测试套件、一个或多个cpp)2、运行执行-用户自定义-Run Unit Tests,如下图3-5-1图3-5-13.6 复审测试执行结果Review Test Execution Results1、用于C+test 的测试执行查找分类的种类,如下表3-6-1类别子类别说明及推荐响应修复单元测试问题(Fix Unit TestProblems)断言失败(Assertion Failures)请参见C+Test用户手册.pdf第 245 页【断言失败】以及第 247 页【超时】运行时异常(Runtime Exceptions)请参见C+Test用户手册.pdf第 246 页【运行时异常】审查单元测试结果(Review Unit Test Outcomes)未验证输出(Unverified Outcomes)请参见C+Test用户手册.pdf第 248 页【未验证的输出】表3-6-1 选定单元测试问题:这个目录包含明确的单元测试问题包括函数测试故障,意想不到的异常情况,和超时设定需要得到处理。 复审单元测试输出:此类别包含自动测试用例生成过程生成的测试用例中未验证的输出。未验证输出会在C+test 执行自动生成或带尚未被转换为断言的后置条件用户定义测试用例报告出来。这样的输出可能会是预期行为也可能是问题。因此需要进一步的复审以及验证。如果你确认输出时预期行为,那么验证它。否则你需要设置正确的输出。2、任务在质量任务 (Quality Tasks) 视图中按类别报告出来。选择Parasoft显示视图质量任务,如下图3-6-2图3-6-23.7 复审覆盖率信息Reviewing Coverage Information1、C+test 支持下面的覆盖类型,如下表3-7-1 行覆盖率 语句覆盖率 块覆盖率 路径覆盖率 判断(分支)覆盖率 修正的条件/ 判断覆盖率(MC/DC) 简单条件覆盖率ConceptDescription基本块一条非分支语句的序列;一个没有控制流路径分支的代码线性序列。路径一个基本块唯一的序列,此块始于函数入口到出口点。判定/ 分支判定/ 分支指的是在代码的分支点上可能采取的控制流判定。C+test 认为 if-else,for, while, do-while, 和 switch 指令为分支点。 C+test 并不把这种动态分支点例如异常处理器考虑在内 (throw-catch 语句)。布尔表达 在 C+ 语言中, 布尔表达式是指具有 bool 类型的简单表达式。在 C 语言中, C+test 将如下情况作为布尔表达式: 一个包含非布尔参数的关系运算符 (, , =, !=) 。 布尔运算符的每个参数 (|, &, !)。 在 if, for, while 和 do-while 指令中的条件。 在 ? 运算符中的条件。MC/DC 判定顶级布尔表达式由条件和零个或多个布尔运算符组成。 C+test 在源代码中的所有布尔表达式上计算 MC/DC 和 SCC 。条件一个原子布尔表达式是 MC/DC 判定的一部分。MC/DC 判定的一个子表达式如果没有包含布尔运算符 (&, |, !) 将被认为是一个条件。如果给定的原子表达式在一个判定中出现的次数超过一次,每次出现都是一个不同的条件。表3-7-12、查看覆盖率,选择Parasoft显示视图覆盖率,如下图3-7-2图3-7-24 桩函数介绍桩函数提供被调用函数的替代实现,使得可以独立地进行单元测试而不依赖外部文件或函数。在使用桩函数时, C+test 会重定向执行流程,调用一个桩函数替代原有函数。您可以为任何测试用例定义自己的桩函数,不管是自动生成的测试用例还是用户定义的测试用例。当您使用用户定义的桩函数时,你可以完全控制外部函数的返回值 无需具有真正可用的外部函数。1、 桩函数主要有两个用途: 将正在测试的代码从集成环境中隔离出来。 在不可能影响函数行为、且需要使用替代实施的情况下进行测试。 2、 桩函数的类型 User: 将使用的用户提供的定义/ 桩函数。 Safe: 将使用的C+test 的安全定义/ 桩函数。 Original: 将使用的原始定义。 Auto: 将使用的C+test 的自动定义/ 桩函数。 N/A (not required): 定义不可用,链接器不需要该定义。 N/A: 定义不可用,但是连接器需要该定义(在很多情况下,这将会造成构建测试可执行程序时的链接错误)5 C+test API5.1 常用的测试套件/ 测试用例注册宏定义CPPTEST_TEST_SUITE(TestSuiteName)在测试套件定义中开始注册测试用例。CPPTEST_TEST_SUITE_END()在测试套件定义中结束注册测试用例。CPPTEST_TEST(testCaseName)默认测试用例注册。CPPTEST_TEST_DS(testCaseName,dsDefinition)用于注册使用给定数据源数据的测试用例CPPTEST_TEST_DISABLED(testcasename)注册禁用的测试用例 - 注册的测试用例不会被执行。5.2 部分测试用例/桩函数API 数据源宏当测试用例使用CPPTEST_TEST_DS() 这个宏注册时,这些宏可以在测试用例以及桩函数中使用。宏定义const char* CPPTEST_DS_GET_CSTR(constchar* NAME)返回一个以空值结束的字符串。long long CPPTEST_DS_GET_INTEGER(constchar* NAME)返回一个整数值。unsigned long longCPPTEST_DS_GET_UINTEGER(const char*NAME)返回一个无符号整数值。long double CPPTEST_DS_GET_FLOAT(constchar* NAME)返回一个浮点类型值。int CPPTEST_DS_GET_BOOL(const char*NAME)返回一个布尔类型值。5.3 测试用例后置条件宏这些宏可用在测试用例定义的后置条件中来报告测试用例输出的实际值。这些报告可以被自动转换为C+test 的断言。宏定义CPPTEST_POST_CONDITION_BOOL(value_string, value)报告某个给定布尔类型value并使用value_string作为标识符。CPPTEST_POST_CONDITION_INTEGER(value_string, value)报告某个给定的整型value并使用value_string作为标识符。CPPTEST_POST_CONDITION_UINTEGER(value_string, value)报告某个给定的无符号整型value并使用value_string 作为标识符。CPPTEST_POST_CONDITION_FLOAT(value_string, value)报告某个给定的浮点类型value并使用value_string作为标识符。CPPTEST_POST_CONDITION_CSTR(value_string, value)报告某个给定空值结尾的字符串value 并使用value_string作为标识符。CPPTEST_POST_CONDITION_CSTR_N(value_string, value, max_size)报告某个给定的空值结尾的字符串value 并使用value_string作为标识符。仅返回第一个max_size字符。CPPTEST_POST_CONDITION_MEM_BUFFER(value_string, value, size)报告某个给定的空值结尾的内存缓冲value并使用value_string 作为标识符。仅返回该缓冲的第一个size节。CPPTEST_POST_CONDITION_PTR(value_string, value)报告某个给定的指针value 并使用value_string作为标识符。CPPTEST_POST_CONDITION_EXTERNAL(value_string, program, param1, param2, param3)使用外部程序来生成报告值并使用value_string作为标识符。运行接收三个参数(param1, param2, param3)的program可执行文件。程序的stdout被当做消息被报告出来。5.4 常用的测试用例验证宏宏定义CPPTEST_FAIL(message)无条件失败,并给出相应信息。CPPTEST_ASSERT(condition)根据真实的判断断言某个条件。CPPTEST_ASSERT_EQUAL(expected, ac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论