2022年项目经理谈测试 .pdf

上传人:Q****o 文档编号:28072269 上传时间:2022-07-26 格式:PDF 页数:8 大小:59.66KB
返回 下载 相关 举报
2022年项目经理谈测试 .pdf_第1页
第1页 / 共8页
2022年项目经理谈测试 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年项目经理谈测试 .pdf》由会员分享,可在线阅读,更多相关《2022年项目经理谈测试 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、这是我以前任项目经理时, 编写的关于单元测试方面的作业指导书,针对多种开发环境叙述怎么进行单元测试以及环境配置,现在整理了一下。 应该对大家有所帮助。这是第一部分,主要针对C和 C+ 项目的 ( 包括了 Windows环境和 Linux 环境),下部分将针对 Java 及 J2EE项目。1. 目的为了减少代码中的错误数量,减少调试所花的时间和精力,改善软件质量,减少开发和维护的时间和成本。2. 适用范围适用于 C及 C+ 的所有产品。3. 适用内容3.1 C+ 标准3.1.1 测试环境使用 Visual C+ ,Windows窗口应用程序3.1.1.1前题:使用 CppUnit1.6.2版,解

2、压后,路径为 x:cppunit-1.6.2;在工程文件中配置测试框架使用环境:加入执行头文件的路径x:cppunit-1.6.2include,加入导入库文件的路径x:cppunit-1.6.2lib;配置 DEBUG(测试)版环境:加入需要链接的静态测试框模块testrunnercd.lib(运行测试用例的选择对话框)和 cppunitcd.lib(测试框架);加入测试 Add-ins ,库名为x:cppunit-1.6.2libTestRunnerDSPlugInD.dll;在 Project Settings/C+/C+ Language中启用 RTTI;3.1.1.2建立测试用例:1

3、、以类名加前辍“ Test”命名测试单元文件名,比如“CMabString”类的类文件名为 MabString.cpp ,则测试单元文件命名为TestMabString.cpp ;2、加入测试框架头文件以及要测试的单元头文件,以 TestMabString 为例:头文件: testmabstring.h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - #ifndef CPP_UNIT_TestNode_H #define CPP

4、_UNIT_TestNode_H / 包含测试框架的头文件#include #include / 包含被测试单元的头文件#include mabstring.h / 派生测试框架的测试用例类class TestMabString : public CppUnit:TestCase / 定义测试用例列表,此列表将出现在运行测试用例的选择对话框中CPPUNIT_TEST_SUITE( TestMabString ); CPPUNIT_TEST( FindByName ); CPPUNIT_TEST_SUITE_END(); protected: / CMabString m_MabStr; pub

5、lic: / 用例初始化,可作为桩函数void setUp (); / 用例析构void tearDown(); protected: / 测试用例void FindByName (void); ; #endif 类文件: testmabstring.cpp #include TestMabString.h #include iostream.h #include strstrea.h / 注册本测试单元CPPUNIT_TEST_SUITE_REGISTRATION( TestMabString ); / 定义测试用例void TestMabString:FindByName () / 功能性

6、测试,属黑盒测试/normal test / 条件及错误测试,属白盒测试/extra test, / 例外测试,属白盒测试/exception test, bool bRet=false; try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - /put the exception code here. /catch(CXXX& e) catch(.) bRet=true; CPPUNIT_ASSERT(bRet); / 由于并

7、不能够执行所有单元测试应该执行的路径,比如CMabString 是从CString / 类中派生出来的,而可能 CMabString 中的 Find 只简单调用了 CString 中的Find 方法, / 所以并不需要测试;/ 在此处说明所有不用测试的路径;/other test, see the . void TestMabString:setUp () / 开始测试前的初始代码m_pNode=new Node(); void TestMabString:tearDown() / 测试结束代码if(m_pNode) delete m_pNode; 3、在启动程序中加入以下代码,以便运行“测试

8、用例选择”对话框:#ifdef _DEBUG / 包括测试头文件#include #include static AFX_EXTENSION_MODULE extTestRunner; #endif / 以下为测试代码,此部分测试不会出现在发布版中#ifdef _DEBUG TestRunner runner; runner.addTest ( CppUnit:TestFactoryRegistry:getRegistry().makeTest() ); runner.run (); #endif 4、制作发行版名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -

9、- - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 发行版需要做以下工作:将 Project的属性设置为 Release(这将自动去除 _DEBUG 的声明);从工程项目中去掉测试文件(即带有test前辍的文件);3.1.2 测试环境使用 Visual C+ ,Windows非窗口应用程序3.1.2.1前题:使用 CppUnit1.6.2版,解压后,路径为 x:cppunit-1.6.2;在工程文件中配置测试框架使用环境:加入执行头文件的路径x:cppunit-1.6.2include,加入导入库文件的路径x:c

10、ppunit-1.6.2lib;配置 DEBUG(测试)版环境:加入需要链接的静态测试框模块cppunitcd.lib(测试框架);在 Project Settings/C+/C+ Language中启用 RTTI;3.1.2.2建立测试用例:1、以类名加前辍“ Test”命名测试单元文件名,比如“CMabString”类的类文件名为 MabString.cpp ,则测试单元文件命名为TestMabString.cpp ;2、加入测试框架头文件以及要测试的单元头文件,以 TestMabString 为例:头文件: testmabstring.h 3、测试示例同上;3.2 C 标准3.2.1 测

11、试环境使用 gcc,Linux 非窗口应用程序前题:使用 check0.8.0版,解压后,路径为 /xx/check-0.8.0;配置测试框架使用环境 (我建议采用标准组织推荐的使用Autoconf 和 Automake来生成配置文件 configure和 Makefile , 因为使用它们可以建立符合国际标准的 configure脚本 和 Makefile文件, 并且可以有效的建立压缩包和方便分发必需的文件(也方便在发行版中去除测试用例文件):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

12、 - 第 4 页,共 8 页 - - - - - - - - - l 首先需编写 configure.in文件,此文件用于Autoconf 生成 configure可执行脚本; configure.in的框架大致如下:dnl 此文件用于生成 configure脚本,dnl AC_INIT 的 xxxx.h 参数代表本目录下一个有效的文件名AC_INIT(xxxx.h) dnl AM_INIT_AUTOMAKE 的两个参数分别是生成应用程序的版本及版本号, dnl 可能有些版本的 Autoconf 和 Automake不支持此宏AM_INIT_AUTOMAKE(xxxx, x.x) dnl 以下

13、为编译依赖的检测dnl Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S dnl Checks for libraries. AC_CHECK_LIB(check,suite_create) dnl Checks for header files. AM_CONFIG_HEADER(config.h) dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for library functions.

14、 dnl 将 Automake生成的 Makefile.in文件输出为 Makefile文件AC_OUTPUT(Makefile) ( 提示: autoscan 可以生成 configure.in文件的基本框架,但很基本,可其生成的 configure.scan文件的基础补充,然后更名为configure.in) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - l 编写 Makefile.am文件,用于 Automake生成 M

15、akefile.in文件,Makefile.am 文件的大致框架如下: ( 其中 xxxx 为应用程序文件名,比如program.c 文件的测试程序文件名我建议为check_program.c ;) TESTS = check_xxxx noinst_PROGRAMS=check_xxxx frame_path=xx/check-0.8.0 xxxx_docs = srcfilelist_1 srcfilelist_2 . . xxxx_SOURCES= srcfilelist_1 srcfilelist_2 . EXTRA_DIST = $(xxxx_docs) INCLUDES = -I$

16、(frame_path)/src -I$(other_path)/include LDADD= $(frame_path)/src/libcheck.a CLEANFILES=*.* (Makefile.am 有很许多标记,可以参阅相应文档。但常用的如:noinst_PROGRAMS 为生成的可执行文件, xxxx_SOURCES (应用程序名加后辍_SOURCES)为源文件列表, EXTRA_DIST 为发布程序时不需要的文件列表( 用此方法可以将测试文件去掉 ) , INCLUDES 为要包含的头文件路径, check 的头文件位置在其安装目录下的src 中;LDADD 为要链接的库文件名

17、, libcheck.a为 check测试框架的库文件;)使用 Automake a -foreign来生成 Makefile.in文件, -foreign是为了生成几个外部文件如install.sh等,如果已有这些文件则可以省略这个参数;使用 Autoconf 来生成 configure执行脚本;然后执行 ./configure来生成Makefile文件;执行 make来生成可执行程序;3.2.2 建立测试用例:1、以程序文件名加前辍“check_”命名测试单元文件名,比如money.c 文件的测试单元文件命名为check_money.c;2、加入测试框架头文件以及要测试的单元头文件,以ch

18、eck_money为例:头文件: money.h;源文件: money.c;测试单元文件: check_money.c:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 测试文件框架如下:#include #include #include money.h /* 建立必要的测试变量, Money为 money.h中定义的结构 struct money*/ Money *five_dollars; /* 单元测试初始化函数 */ v

19、oid setup (void) five_dollars = money_create(5, USD); /* 单元测试结束函数 */ void teardown (void) money_free (five_dollars); /* 单元测试用例,用例名为test_create*/ /*test functions: money_amout()*/ START_TEST(test_create) /* 功能性测试,属黑盒测试 */ /*normal test*/ fail_unless (money_amount(five_dollars) = = 5, Amount not set c

20、orrectly on creation); fail_unless (strcmp(money_currency(five_dollars),USD) = = 0, Currency not set correctly on creation); /* 条件及错误路径测试,属白盒测试*/ /*extra test*/ END_TEST /* 单元测试用例,用例名为test_net_create*/ START_TEST(test_neg_create) Money *m = money_create(-1, USD); fail_unless (m = = NULL, NULL should

21、 be returned on attempt to create with a negative amount); END_TEST /* 单元测试用例,用例名为test_net_create*/ START_TEST(test_zero_create) Money *m = money_create(0, USD); fail_unless (money_amount(m) = = 0, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - -

22、- - - Zero is a valid amount of money); END_TEST /* 单元测试组装,将所有单元测试组装到一个“箱子”里面,“箱子”名为Money*/ Suite *money_suite (void) Suite *s = suite_create(Money); /* 测试用例分组 */ TCase *tc_core = tcase_create(Core); TCase *tc_limits = tcase_create(Limits); /* 将分组加入“箱子”suite_add_tcase (s, tc_core); suite_add_tcase (

23、s, tc_limits); /* 分别将不同用例加入分组 */ tcase_add_test (tc_core, test_create); tcase_add_checked_fixture (tc_core, setup, teardown); /*此用例注册初始化和结束函数 */ /* 以下用例将不注册初始化和结束函数*/ tcase_add_test (tc_limits, test_neg_create); tcase_add_test (tc_limits, test_zero_create); return s; /* 执行测试用例 */ int main (void) int

24、 nf; Suite *s = money_suite(); SRunner *sr = srunner_create(s); srunner_run_all (sr, CK_NORMAL); nf = srunner_ntests_failed(sr); srunner_free(sr); suite_free(s); return (nf = 0) ? EXIT_SUCCESS : EXIT_FAILURE; 3.2.3 制作发行版:制作发行版只须配置另外一份Makefile.am ,在此文件中的源文件列表加入执行主体,即应用程序包含 main 函数的文件;也可在制作测试版的Makefile.am中加入发行版的配置,这样就可以直接生成测试版程序和发行版程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁