从软件测试V模型,单元测试是软件测试的基础,四个方面看出单元测试的重要性:
1.时间方面—系统集成节约很多的时间
2.测试效果--单元测试是测试阶段基石,能够发现深层次的问题
3.测试成本--单元测试阶段问题容易发现
4.产品质量--单元测试好坏影响软件产品的质量.
图1:软件测试V模型
软件代码越來越多,软件单元越來越多,单元代码越來越复杂。现代编程语言是的单元测试自动化实现变得可能。XUnit框架是eXtreme Programming(XP) 的核心概念。
单元测试工具的一个重要的功能就是测试自动化,测试自动化的基础就是测试框架。最典型和最流行的单元测试是以JUnit测试框架为基础的xUnit测试框架。
XUnit根据语言不同可以分为:JUnit(Java),CppUnit(C++),DUnit(Delphi),NUnit(.Net),PhpUnit(PHP)
按类型不同可以分为:JFCUnit(GUI测试),HttpUnit(对web应用访问进行测试),JWebUnit(对HttpUnit的抽象封装),StrutsTestCase(基于JUnit的Struts应用测试框架),HtmlUnit
1xUnit单元测试框架
测试软件开发过程中必不可少的一部分,是软件质量保证的重要手段。测试对象:代码,需求文档,设计文档.代码测试:单元测试,集成测试,系统测试和验收测试。eXtremeProgramming—单元测试—xUnit测试框架。TDD以测试为开发中心,XP开发者大多使用开源的测试框架-xUnit家族。
Xunit框架的主要优点是提供了一个自动测试的解决方案。自动测试概念很重要,有了自动测试,我们就可以在开发软件项目中实施持续集成。
1.1xUnit介绍
KentBeck—Smalltalk Sunit—Erich Gamma-- Junit
框架结构表现的概念--->xUnit:一些简单的编写测试的规则--->移植到三十多种语言中(Python,C++,.NET,Html, JavaScript ,Ruby等)
xUnit是一个基于测试的单元测试框架,运行测试用例,反馈测试结果以及记录测试日志的一系列基础软件设施。TestCase,TestSuite,TestResult,xUnit.framework.Assert,TestResult,TestListener,TestRunner.
图2,xUnit 测试框架
Xunit的原则:
先编写测试代码,然后编写符合测试的代码
测试代码不需要覆盖所有的细节,但是需要覆盖主要的功能和可能出错的地方
发现Bug后,首先编写对应的测试用例,然后在进行调试
不断总结出现Bug的原因,对其他代码也编写相应的测试用例
每次编写完代码后,运行所有以前的测试用例,验证对以前的代码的影响,并把这种影响尽早消除
不断维护测试代码,保证代码变动后能通过所有测试
xUnit测试框架包括的4大要素:
测试Fixtures:是一组认定为被测对象或被测程序单元测试成功的预订条件或预期结果的设定。Fixture就是被测试的目标。
测试集(TestSuite):一组测试用例,这些测试用例要求相同的测试Fixtures,从而保证不会出现管理的上的混乱
测试执行:单元测试的执行-setUp()-->执行测试动作-->tearDown()
测试断言(Assert):实际上就是验证被测程序在测试中的行为或状态的一个宏或者函数,断言失败会引发异常,终止测试的执行。
测试用例的编写:初始化Fixture-->按照某个测试功能和流程对Fixture进行操作-->验证结果是否正确-->对Fixture相关的资源进行释放