单元测试规范.docx
- 文档编号:11958140
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:12
- 大小:274.03KB
单元测试规范.docx
《单元测试规范.docx》由会员分享,可在线阅读,更多相关《单元测试规范.docx(12页珍藏版)》请在冰豆网上搜索。
单元测试规范
密级:
普通
文件编号:
NO.1
文件类别:
测试管理体系文件
发放号:
1001
华中8型软件
单元测试标准
版本:
1.1
华中数控软件开发部
版本说明
日期
版本号
发布说明
作者
批准人
2021/1/28
V1.0
王蓉
2021/2/10
V1.1
王蓉
1引言
1.1编写目的
1.1.1编写目的
本文档规定了HNC8软件单元测试方法和步骤、测试用例的设计方法、测试代码的书写标准、流程以及单元测试的产品提交和验收标准,目的在于控制单元测试的质量,加强工程的质量管理,从而提高整个产品的质量。
1.1.2适用X围
主要是8型软件的单元测试、局部系统平台软件模块测试。
1.1.3预期读者
本文档的预期读者为工程的工程经理、产品经理、系统软件主研人员、应用软件主研人员、高级测试人员等。
1.2背景
HNC8系统软件平台是各产品和工程的重要组成局部,为HNC8软件开发人员提供必要的测试环境。
本标准的提出和制订旨在为软件单元测试提供依据和支持。
1.3定义
被测模块:
需要进展模块级测试的应用软件系统的一个单元或模块,也称被测单元。
测试单元:
用于对被测模块进展单元级测试,由源代码、测试脚本和输入数据等构成的程序单元。
1.4参考文档
[1]C++Test用户手册
[2]单元测试快速起步
2单元测试
2.1单元的定义
对于构造化的编程语言,程序单元指程序中定义的函数或子程序。
单元测试是指对函数或子程序所进展的测试。
对于面向对象的编程语言,程序单元指特定的一个具体的类或相关的多个类。
单元测试主是指对类方法的测试。
2.2角色工作体系
角色
职责
开发/测试组长
审查单元测试过程,对测试结果进展评估。
根据单元测试发现的缺陷提出变更申请。
开发/测试工程师
对单元代码进展检查,设计单元测试用例,加载运行测试用例,记录和分析测试结果,提交单元测试Bug。
配置管理员
管理测试需要的资源,包括软硬件环境,版本管理和Bug管理。
2.3单元测试规程
包括静态的代码审查和动态测试两个阶段。
静态代码审查是按照?
静态检查标准?
中的条项对单元模块进展逐项检查,并填写?
单元测试Bug清单?
。
动态测试阶段首先设计相应的测试用例。
测试用例应该覆盖单元模块的所有功能项,如果单元模块有性能、余量等其它测试特性要求,那么必须设计相应的测试用例测试这些特性。
执行测试用例,运行得到测试结果,比对测试结果查看单元测试覆盖率是否达标。
如果发现错误或Bug,提交单元测试Bug。
2.3.1静态代码检查
要求:
根据?
静态检查标准?
中的要求,对被测试单元进展逐项检查,检查后在对应的条项后进展标记,发现问题后,提交单元测试Bug。
2.3.2测试用例设计
测试用例是测试数据及与之相关的测试规程的一个特定的集合,它是为验证被测试程序〔为测试路径或验证是否符合特定需求〕而产生的。
测试用例设计用于白盒测试和黑盒测试。
白盒测试进入的前提条件是在测试人员已经对被测试对象有了一定的了解,根本上明确了被测试软件的逻辑构造。
过程是通过针对程序逻辑构造设计和加载测试用例,驱动程序执行,检查在不同点程序的状态,以确定实际的状态是否与预期的状态一致。
1、白盒测试主要是对被测试对象进展如下测试工程:
◆对程序模块的所有独立的执行路径至少覆盖一次;
◆对所有的逻辑判定,真假两种情况都至少覆盖一次;
◆在循环的边界和运行界限内执行循环体;
◆测试内部数据构造的有效性等。
白盒测试到达的目标:
语句覆盖率到达100%,分支覆盖率到达100%,覆盖程序中主要的路径,主要路径是指完成需求和设计功能的代码所在的路径和程序异常处理执行到的路径。
黑盒测试是要首先了解软件产品具备的功能和性能等需求,再根据需求设计一批测试用例以验证程序内部活动是否符合设计要求的活动。
2、黑盒测试主要是对被测试对象进展如下测试工程:
◆测试程序单元的功能是否实现;
◆测试程序单元性能是否满足要求〔可选〕;
◆可选的其它测试特性,如边界、余量、平安性、可靠性、强度测试、人机交互界面测试等。
黑盒测试到达的目标:
程序单元正确地实现了需求和设计上要求的功能,满足性能要求,同时程序单元要有可靠性和平安性。
2.4单元测试工具
规定使用以下测试工具实现应用软件系统单元测试和子系统集成测试,以及局部系统平台软件模块的相关测试。
请参考?
C++test9.2简明手册?
1、C++test9.2单机版〔支持VC6.0〕
\_独立版
2、C++test9.0插件版(支持VS2021)
\cpptest_9.0_win32_插件版
2.5测试的目录构造
1、各个工程存放测试套件、桩函数文件、测试数据
◆测试源文件通过导入VC工程,源码以方式显示在工作空间
/hncapi/api/hncapi/inc_api
/hncapi/libprj/hncapi/plc
◆测试套件/hncapi/tests
◆桩函数文件/hncapi/stubs
2、以hnc8/trunk/hncapi.dsw为例:
2.6测试代码的书写标准
2.6.1测试套件/测试用例定义标准
【规那么1】在测试套件定义中开场注册测试用CPPTEST_TEST_SUITE(TestSuiteName)
例:
CPPTEST_TEST_SUITE(TestSuite_ActivationGetDayNum);
【规那么2】在测试套件定义中完毕注册测试用例CPPTEST_TEST_SUITE_END()
【规那么3】测试用例注册CPPTEST_TEST(testCaseName)
例:
CPPTEST_TEST(test_ActivationGetDayNum_Ok);
CPPTEST_TEST(test_ActivationGetDayNum_Failed);
【规那么4】在测试套件源文件中使用该宏来定义给定的测试套件中的测试所设置的源/头文件。
CPPTEST_CONTEXT(testedFile)
例:
CPPTEST_CONTEXT("../api/hncactivation.cpp");
【规那么5】在测试套件源代码中使用该宏来设置某个给定的测试套件将在测试可执行文件构建时被添加到某个源文件后面CPPTEST_TEST_SUITE_INCLUDED_TO(testedSource)
例:
CPPTEST_TEST_SUITE_INCLUDED_TO("../api/hncactivation.cpp");
备注:
下列图例如,测试套件TestSuite_ActivationGetDayNum及其测试用例注册
2.6.2测试用例初始化变量书写标准
【规那么1】初始化输入参数
例:
/*Pre-conditioninitialization*/
/*Initializingargument1(sn)*/
:
:
Bit8*_sn="6933-E8A4-013L-00C1-FBC6-1C13";
【规那么2】初始化全局变量
例:
/*Initializingglobalvariable*/
:
:
s_hncAct.registerType=0;
:
:
s_hncAct.regRemainDay=0;
:
:
s_hncAct.registerFlag=0;
2.6.3测试用例被测单元函数调用标准
【规那么】调用被测单元
例:
/*TestedfunctioncallHNC_ActivationSetSn(Bit8*)*/
:
:
Bit32_return=:
:
HNC_ActivationSetSn(_sn);
2.6.4测试用例验证标准
【规那么1】断言两个布尔类型值相等
CPPTEST_ASSERT_BOOL_EQUAL(expected,actual)
例:
CPPTEST_ASSERT_BOOL_EQUAL(0,(_return));
【规那么2】断言两个整型值相等
CPPTEST_ASSERT_INTEGER_EQUAL(expected,actual)
例:
CPPTEST_ASSERT_INTEGER_EQUAL(0,(_return));
CPPTEST_ASSERT_INTEGER_EQUAL(66,(:
:
s_hncAct.regRemainDay));
【规那么3】断言两个指针类型字符串相等
CPPTEST_ASSERT_PTR_EQUAL(expected,actual)
2.6.5完整测试用例实例
2.6.6桩函数书写标准
【规那么】查询当前执行的测试用
boolCppTest_IsCurrentTestCase(constchar*id)
例:
voidCppTest_Stub_nc_gettime(:
:
nctime_t*ptime)
{
if(CppTest_IsCurrentTestCase("test_HNC_ActivationSetSn_Ok"))
{
ptime->year=2021;
ptime->month=1;
ptime->day=20;
}
}
2.7测试单元的文件组成及命名标准
每个测试单元由测试代码文件、程序主函数文件和编译运行脚本文件组成,单元测试完成之后还生成一系列测试报告,这些测试报告将与模块单元一起提交。
测试单元包含如下文件及其所处目录位置如下所述:
【规那么1】测试套件命名TestSuite_测试单元函数名.cpp
例如:
TestSuite_ActivationCheckTime.cpp
【规那么2】测试用例命名test_测试单元函数名_测试简明标识
例如:
test_HNC_ActivationLoad_Failed
test_HNC_ActivationLoad_Ok
test_HNC_ActivationLoad_Null
【规那么3】自定义测试桩命名测试单元函数名_stub.cpp
例如:
HNC_SysCtrlGetConfig_stub.cpp
【规那么4】测试文件地址:
C++test工作空间下,对应各工程文件的test文件夹的路径
例如:
\workspace\hncapi\tests\autogenerated\api\hncactivation.cpp
【规那么5】自定义测试桩文件地址:
C++test工作空间下,对应各工程文件的stubs文件夹的路径。
例如:
\workspace\hncapi\stubs
2.8单元测试的实施标准
按照单元测试规程进展实施,进展代码审查和动态测试。
【规那么1】从效劳器下载最新源码,导入VC6.0工程来创立C++test工程,添加各个工程对应的测试文件到本地。
【规那么2】要求静态检查通过后,再开场单元测试。
【规那么3】在写测试用例驱动时,所有外部传入参数、全局变量等都需要进展初始化。
【规那么4】调用原始定义的桩函数时,该桩函数应该是系统标准函数或者是已通过测试的函数。
【规那么5】系统函数作为桩函数时,一般情况采用原始定义,特殊情况可以自定义。
【规那么6】在编写或调试测试驱动和桩时,制止修改源代码进展调试。
【规那么7】测试结果输出,要根据具体情况把函数中数据流的值进展验证。
【规那么8】测试文件,要求在C++test编译通过并执行通过,才能提交到效劳器。
3测试结果提交和验收
参与单元测试的人员,将各自负责测试的模块单元测试后提交效劳器,效劳器完成工程内的所有测试用例执行,以及测试报告反应。
开发和测试组长需要查看测试报告,验收单元测试质量,并给出一定的指导意见!
3.1提交的测试产品
1、对于每个被测单元的测试结果提交
◆每个测试单元测试实现.cpp文件
◆每个测试单元的相关桩函数实现.cpp
◆每个测试单元的测试设计文档,请参考?
hncactivation.cpp单元测试设计文档?
。
2、单元测试总结报告〔由效劳器完成〕
◆静态检查报告rep_StaticAnalysis.html
◆单元测试执行报告rep_run.html
◆单元测试任务报告report_dev.html
3.2测试产品提交方式
按照各个工程存放测试套件、桩函数文件、测试数据,以下以hnc8/trunk/hncapi为例:
1、测试套件位置/trunk/unit_test/hncapi/tests
2、桩函数文件位置/trunk/unit_test/hncapi/stubs
3、测试数据位置/trunk/unit_test/.cpptest/hncapi/unit-data
3.3单元测试工作产品验收标准
每个被测类/被测源文件单元测试通过的准那么如下:
1、正确性测试结果文件:
在C++test通过了全部的测试用例,保证测试用例覆盖了单元模块中的所有功能点;
2、代码覆盖率到达要求:
语句覆盖率100%
根本块覆盖率100%
判定覆盖率90%以上
简单条件覆盖率80%以上
3、每一个单元测试Bug清单都处于一个明确的状态,不能改正的必须给出详细的解释说明;
4、单元测试工作产品的验收采用同级评审的方法,由评审组决定测试是否通过,来保证单元测试的质量和软件产品的质量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元测试 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)