欢迎来到天天文库
浏览记录
ID:38414783
大小:220.00 KB
页数:42页
时间:2019-06-12
《用XUnit做白盒测试、黑》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用XUnit做白盒测试、黑盒测试朱静静目录XUnit介绍1、基础概念2、为什么要XUnit3、XUnit的一般结构XUnit与白盒测试1、用PHPUnit做PHP单元测试2、用CppUnit做C++单元测试XUnit与黑盒测试1、用RubyUnit做黑盒测试XUnit介绍1、基础概念什么是单元测试单元测试——是最小粒度的测试,以测试某个功能或代码块。简言之,就是验证开发者代码的最小集合(函数)是否正确实现了功能单元测试的任务1模块接口测试;2模块局部数据结构测试;3模块边界条件测试;4模块中所有独立执行通路测试;5模块的各条错误处理通路测试。XUnit介绍单元测试的优点1、它是一种验证行为。
2、 程序中的每一项功能都是测试来验证它的正确性2、它是一种设计行为。 编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。3、它是一种编写文档的行为。 单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。4、它具有回归性。 自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。XUnit介绍什么是XUnitXUnit系列是单元测试的一种模式,是一种测试思想与模型的集合,JUnit,CUnit,CppUnit,PHPUnit等单元测试框架都是它
3、的成员。这些单元测试框架的思想与使用方式基本一致。只是针对了不同的语言实现。XUnit介绍2、为什么要XUnit请看下面一段代码(此代码为伪代码):#maxnum.php=$b?$a:$b;}#返回a,b的最大值?>XUnit介绍现在要对其功能进行测试,即单元测试编写测试代码:运行,测试结果:223”B”Hoho~~,简单!XUn
4、it介绍可是当函数复杂,测试函数超级多的时候,这样输出很难定位是针对哪个测试用例,下次测试,还要看一遍测试代码,我们改成:
5、="B"){echo'"A","B"'."pass";}else{echo'"A","B"'."fail";}?>这样就可以定位哪个成功那个失败了输出结果:1,2pass2,2pass2,3pass"A","B"passXUnit介绍上述测试我们做了下面几个工作:1、调用被测函数,做了接口测试2、传递不同参数,测试函数功能3、返回测试结果,生成了简单的测试报告可是:1、万一一个测试用例发生异常,整个测试只能停止2、函数每条语句都测试到了吗?像复杂函数,怎么判断?3、每个测试结果我们都要用笨重的if..else+echo来判断成功还是失败吗4、函数抛异常测试怎么做呢XUnit介绍可能你
6、可以想出办法来解决这些问题,但为什么不试试已有的单元测试框架呢?3、XUnit一般结构XUnit是单元测试框架的一个大家族,它具有:TestFixtures——针对函数的测试代码文件,即上面写的测试代码TestSuites——测试套件,用来组织测试代码Assertion——断言,简化测试结果判断,即替if..elseTestExecution——启动测试TestResult——生成详细的测试结果及报告XUnit介绍用PHPUnit编写的测试代码举例:publicfunctiontest_maxnum_1_2(){$this->assertSame(maxnum(1,2),2,"1,2参数测试
7、失败");}publicfunctiontest_maxnum_2_3(){$this->assertSame(maxnum(2,3),3,"2,3参数测试失败");}成功结果失败结果XUnit介绍可见用PHPUnitAssert函数比较测试结果十分简单;生成的测试报告不仅定位失败用例,且列出详细结果和期望结果差异,且在一个用例失败后,不影响后面用例的执行;另外可生成详细测试报告文件;代码测试覆盖率报告;专门
此文档下载收益归作者所有