C++test92简明手册.docx
- 文档编号:11044012
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:21
- 大小:930.99KB
C++test92简明手册.docx
《C++test92简明手册.docx》由会员分享,可在线阅读,更多相关《C++test92简明手册.docx(21页珍藏版)》请在冰豆网上搜索。
C++test92简明手册
C++Test9.2简明手册
版本:
1.0
华中数控软件开发部
版本说明
日期
版本号
发布说明
作者
批准人
2015/1/28
V0.10
初稿
王蓉
2015/3/12
V0.20
细化单元测试步骤
王蓉
1创建项目
1.1导入VisualStudio6.0项目来创建C++test项目
1.选择文件(File)>新建(New)>项目(Project)。
2.选择C++test>导入MicrosoftVisualStudio6.0项目。
3.单击下一步(Next)。
会打开导入MicrosoftVisualStudio6.0项目向导。
4.在向导顶部的文本字段中,指定MicrosoftVisualStudio6.0项目文件(.dsp),MicrosoftVisualStudio6.0工作空间文件(.dsw),或者想要让C++test从中搜索MicrosoftVisualStudio6.0项目的根目录。
找到的项目将列在"要导入的项目(Projectstobeimported)"树中。
如下图1-1:
图1-1
5、项目创建成功后,在导航器列表可以看到该项目。
如下图1-2:
图1-2
1.2导入现有项目到工作空间:
1.选择文件(File)>导入>常规>现有项目到工作空间中。
2.选择常规>现有项目到工作空间中。
3.单击下一步(Next)。
会打开导入项目向导。
如下图1-3
图1-3
2导入测试配置文件
1.选择Parasoft>测试配置(New)>项目(Project)。
2.选择用户自定义>右键导入
3.分别导入以下测试配置文件(配置文件存放在安装包cfg文件夹下),如下图2-1
StaticAnalysis.properties
GenerateTestSuites.properties
GenerateStubs.properties
BuildTestExecutable.properties
RunUnitTests.properties
图2-1
3单元测试的步骤
3.1自动生成测试套件——GenerateTestSuites
1、选中测试源文件,例如hncmodal.cpp
2、运行执行-用户自定义-GenerateTestSuites,如下图3-1-1
图3-1-1
3、浏览自动生成的测试用例,如下图3-1-2
图3-1-2
3.2生成自动定义/桩函数——GenerateStubs
1、选中测试源文件,例如hncmodal.cpp
2、运行执行-用户自定义-GenerateStubs,如下图3-2-1
图3-2-1
3、查看生成的自动定义/桩函数,如下图3-2-2
图3-2-2
3.3扩展和修改测试套件——ExtendingandModifyingtheTestSuites
要达到的目标
做法
参考
添加新的测试用例来检查特殊的单元层功能性需求或提高覆盖率
使用测试用例向导来图形化地
创建测试用例或添加代码到测
试用例模板中。
参见C++Test用户手册.pdf,第277页【添加用户定义的
测试用例】
修正自动生成的测试用例检查
特殊的单元层功能性需求或提
高覆盖率
编辑相关的测试文件
第277页【添加用户定义的
测试用例】
删除测试用例,并禁用结果检
查或现在对你不重要的测试用
例
删除一个测试套件:
右键单击
测试用例浏览器中的相应节点,然后选择Delete
要删除一个测试用例:
右键单
击测试用例浏览器中的相应节
点,然后选择Delete禁用特殊结果的检查:
右击质量任务(QualityTasks)视图口中未核对的结果,然后从快捷菜单中选择IgnoreOutcome禁用完整测试用例:
右击单击测试用例浏览器中的相应节点,然后选择Disable
参见C++Test用户手册.pdf,第321页【删除和禁用测试】
防止对某种类或方法进行测试
选择相应希望包含或排除的资
源
参见C++Test用户手册.pdf,第125页【测试用户定义的资源集】
将自动生成的测试转换为用于
回归测试的功能快照(用于识
别有代码修正引进的变化/问
题)
如果代码行为正确,右击为核
对的结果代码,然后从快捷菜
单选择VerifyOutcome
参见C++Test用户手册.pdf,第275页【检验用于进行回归测试的测试用例】
测试过程中访问数据源值
配置用户定义的或自动生成的
测试用例,访问存储在数据源
中的值
参见C++Test用户手册.pdf,第294页【使用从数据源提取的数据来参数化测试用例】
测试用例中使用标准输入输出
口的数据
添加C++testStreamAPI调
用,改变标准输入输出流的方
向
参见C++Test用户手册.pdf,第319页【使用来自标准输入输出的数据】
定义用户化桩函数(指明外部
方法/函数的什么值返回到测
试类中)。
使用桩函数向导创建桩函数框
架,然后进行定制
参见C++Test用户手册.pdf,第327页【添加和修改桩函
数】
3.4构建测试可执行文件——BuildTestExecutable
1、选中测试源文件,例如hncmodal.cpp
2、运行执行-用户自定义-BuildTestExecutable,如下图3-4-1
图3-4-1
3.5执行测试用例——RunUnitTests
1、选中测试文件(一条或多条测试用例、一个或多个测试套件、一个或多个cpp)
2、运行执行-用户自定义-RunUnitTests,如下图3-5-1
图3-5-1
3.6复审测试执行结果——ReviewTestExecutionResults
1、用于C++test的测试执行查找分类的种类,如下表3-6-1
类别
子类别
说明及推荐响应
修复单元测试问题
(FixUnitTestProblems)
断言失败(AssertionFailures)
请参见C++Test用户手册.pdf第245页【断言失败】以及第247页【超时】
运行时异常(RuntimeExceptions)
请参见C++Test用户手册.pdf第246页【运行时异常】
审查单元测试结果(ReviewUnitTestOutcomes)
未验证输出(UnverifiedOutcomes)
请参见C++Test用户手册.pdf第248页【未验证的输出】
表3-6-1
•选定单元测试问题:
这个目录包含明确的单元测试问题—包括函数测试故障,意想不到的异常情况,和超时设定需要得到处理。
•复审单元测试输出:
此类别包含自动测试用例生成过程生成的测试用例中未验证的输出。
未验证输出会在C++test执行自动生成或带尚未被转换为断言的后置条件用户定义测试用例报告出来。
这样的输出可能会是预期行为也可能是问题。
因此需要进一步的复审以及验证。
如果你确认输出时预期行为,那么验证它。
否则你需要设置正确的输出。
2、任务在质量任务(QualityTasks)视图中按类别报告出来。
选择Parasoft>显示视图>质量任务,如下图3-6-2
图3-6-2
3.7复审覆盖率信息——ReviewingCoverageInformation
1、C++test支持下面的覆盖类型,如下表3-7-1
•行覆盖率
•语句覆盖率
•块覆盖率
•路径覆盖率
•判断(分支)覆盖率
•修正的条件/判断覆盖率(MC/DC)
•简单条件覆盖率
Concept
Description
基本块
一条非分支语句的序列;一个没有控制流路径分支的代码线性序列。
路径
一个基本块唯一的序列,此块始于函数入口到出口点。
判定/分支
判定/分支指的是在代码的分支点上可能采取的控制流判定。
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-1
2、查看覆盖率,选择Parasoft>显示视图>覆盖率,如下图3-7-2
图3-7-2
4桩函数介绍
桩函数提供被调用函数的替代实现,使得可以独立地进行单元测试而不依赖外部文件或函数。
在使用桩函数时,C++test会重定向执行流程,调用一个桩函数替代原有函数。
您可以为任何测试用例定义自己的桩函数,不管是自动生成的测试用例还是用户定义的测试用例。
当您使用用户定义的桩函数时,你可以完全控制外部函数的返回值-无需具有真正可用的外部函数。
1、桩函数主要有两个用途:
•将正在测试的代码从集成环境中隔离出来。
•在不可能影响函数行为、且需要使用替代实施的情况下进行测试。
2、桩函数的类型
•User:
将使用的用户提供的定义/桩函数。
•Safe:
将使用的C++test的安全定义/桩函数。
•Original:
将使用的原始定义。
•Auto:
将使用的C++test的自动定义/桩函数。
•N/A(notrequired):
定义不可用,链接器不需要该定义。
•N/A:
定义不可用,但是连接器需要该定义(在很多情况下,这将会造成构建测试可执行程序时的链接错误)
5C++testAPI
5.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()这个宏注册时,这些宏可以在测试用例以及桩函数中使用。
宏
定义
constchar*CPPTEST_DS_GET_CSTR(const
char*NAME)
返回一个以空值结束的字符串。
longlongCPPTEST_DS_GET_INTEGER(const
char*NAME)
返回一个整数值。
unsignedlonglong
CPPTEST_DS_GET_UINTEGER(constchar*
NAME)
返回一个无符号整数值。
longdoubleCPPTEST_DS_GET_FLOAT(const
char*NAME)
返回一个浮点类型值。
intCPPTEST_DS_GET_BOOL(constchar*
NAME)
返回一个布尔类型值。
5.3测试用例后置条件宏
这些宏可用在测试用例定义的后置条件中来报告测试用例输出的实际值。
这些报告可以被自动转换为C++test的断言。
宏
定义
CPPTEST_POST_CONDITION_BOOL(value_stri
ng,value)
报告某个给定布尔类型'value'并使用'value_string'作为标识符。
CPPTEST_POST_CONDITION_INTEGER(value
_string,value)
报告某个给定的整型'value'并使用'value_string'作为标识符。
CPPTEST_POST_CONDITION_UINTEGER(valu
e_string,value)
报告某个给定的无符号整型'value'并使用'value_string'作为标识符。
CPPTEST_POST_CONDITION_FLOAT(value_str
ing,value)
报告某个给定的浮点类型'value'并使用'value_string'作为标识符。
CPPTEST_POST_CONDITION_CSTR(value_stri
ng,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_strin
g,value)
报告某个给定的指针'value'并使用'value_string'作为标识符。
CPPTEST_POST_CONDITION_EXTERNAL(valu
e_string,program,param1,param2,param3)
使用外部程序来生成报告值并使用'value_string'作为标识符。
运行接收三个参数(param1,param2,param3)的'program'可执行文件。
程序的stdout被当做消息被报告出来。
5.4常用的测试用例验证宏
宏
定义
CPPTEST_FAIL(message)
无条件失败,并给出相应信息。
CPPTEST_ASSERT(condition)
根据真实的判断断言某个条件。
CPPTEST_ASSERT_EQUAL(expected,actual)
断言两个相等的值。
CPPTEST_ASSERT_BOOL_EQUAL(expected,
actual)
断言两个布尔类型值相等。
CPPTEST_ASSERT_INTEGER_EQUAL(expecte
d,actual)
断言两个整型值相等。
CPPTEST_ASSERT_UINTEGER_EQUAL(expect
ed,actual)
断言两个无符号整型值相等。
CPPTEST_ASSERT_DOUBLES_EQUAL(expect
ed,actual,delta)
断言两个浮点类型值相等(精确到delta)。
CPPTEST_ASSERT_CSTR_EQUAL(expected,
actual)
断言两个C-类型字符串相等。
CPPTEST_ASSERT_MEM_BUFFER_EQUAL(ex
pected,actual,size)
断言两个数据缓冲相等(比较字节数大小)。
CPPTEST_ASSERT_PTR_EQUAL(expected,
actual)
断言两个指针类型字符串相等。
5.5被测试用例驱动的函数
这些函数可用在桩函数代码中来获取当前执行测试用例的状态。
宏
定义
constchar*CppTest_GetCurrentTestCaseName()
返回当前执行的测试用例名。
constchar*CppTest_GetCurrentTestSuiteName()
返回当前执行的测试套件名。
boolCppTest_IsCurrentTestCase(constchar*id)
允许您查询当前执行的测试用例。
如果设置的id与当前执行的测试
用例相同则返回为真,否则返回假。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- test92 简明 手册