版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元测试软件测试技术主要内容
单元测试概述单元测试的环境单元测试的内容单元测试策略单元测试方法Junit使用6.1单元测试概述1.概念单元测试又称模块测试,是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。单元测试的内容包括单元的内部结构、单元的功能和可观测的行为。2.测试对象:“单元”结构化编程语言单元测试对象是函数或者子过程。面向对象语言单元测试对象是类或者类的方法。如一个菜单、屏幕显示界面或对话框等3.目标(1)检查代码实现是否符合设计测试依据是详细设计描述(2)尽早发现错误6.2
单元测试环境基本单元本身不是一个独立的程序,自己不能运行,要靠其它部分来调用和驱动。驱动模块(driver)
桩模块(stub)驱动模块(Driver)被测基本单元的主程序,它接收测试数据,并把数据传送给被测单元,最后输出实测结果。桩模块(Stub)用来代替被测基本单元调用的其他基本单元。单元测试环境单元测试环境测试结果驱动模块桩模块1被测模块测试用例桩模块3桩模块2举例:BACDE待测试模块被测模块B
驱动模块(模拟模块A)桩模块(模拟模块E)测试用例测试结果举例:6.3单元测试的内容单元测试主要对模块的五个基本特性进行评价错误处理模块接口局部数据结构
重要的执行路径边界条件模块一、模块接口测试对通过被测模块的数据流进行测试,检查进出模块的数据是否正确。检查列表
:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;
二、模块局部数据结构测试检查局部数据结构能否保持完整性检查列表
:不正确或不一致的数据类型说明变量没有初始化变量名拼写错或书写错数组越界非法指针全局数据对模块的影响三、模块边界条件测试检查临界数据是否正确处理检查列表:普通合法数据是否正确处理普通非法数据是否正确处理边界内最接近边界的(合法)数据是否正确处理边界外最接近边界的(非法)数据是否正确处理四、模块独立执行路径测试对模块中重要的执行路径进行测试。检查由于计算错误、判定错误、控制流错误导致的程序错误。检查列表:死代码错误的计算优先级精度错误(比较运算错误、赋值错误)表达式的不正确符号循环变量的使用错误五、模块内部错误处理测试检查内部错误处理设施是否有效检查列表:是否检查错误出现出现错误,是否进行错误处理
抛出错误、通知用户、进行记录错误处理是否有效6.4
单元测试策略自顶向下的单元测试自底向上的单元测试孤立单元测试自顶向下的单元测试方法:先对最顶层的基本单元进行测试,把所有调用的单元做成桩模块。然后再对第二层的基本单元进行测试,使用上面已测试的单元做驱动模块。依此类推直到测试完所有基本单元。BACDE待测试模块自顶向下的单元测试(续)优点:在集成测试前提供早期的集成途径。在执行上和详细设计的顺序一致。不需要开发驱动模块。缺点:随着测试的进行,测试过程越来越复杂,开发和维护成本增加。总结:比孤立单元测试的成本高很多,不是单元测试的一个好的选择。自底向上的单元测试方法:先对最底层的基本单元进行测试,模拟调用该单元的单元做驱动模块。然后再对上面一层进行测试,用下面已被测试过的单元做桩模块。依此类推,直到测试完所有单元。BACDE待测试模块优点:在集成测试前提供系统早期的集成途径。不需要开发桩模块。缺点:随着测试的进行,测试过程越来越复杂。总结:比较合理的单元测试策略,但测试周期较长。自底向上的单元测试(续)孤立单元测试方法:不考虑每个单元与其它单元之间的关系,为每个单元设计桩模块或驱动模块。每个模块进行独立的单元测试。优点:简单、容易操作,可达到高的结构覆盖率。缺点:不提供一种系统早期的集成途径。总结:好的单元测试策略。单元测试的难点到底要测试到什么程度草草了事/过犹不及/何处是平衡点确定测试的标准之一:覆盖率大量的测试代码和测试用例生成、共享、管理、标注很麻烦尽量使用测试工具测试过程中工具用的最多的地方:单元测试、后期的回归测试、负载测试、缺陷管理6.5单元测试的方法静态代码分析检查是否符合编程规范找出代码中流程设计问题代码的重构单元结构测试代码执行的覆盖率——白盒测试方法单元功能测试程序的功能实现——黑盒测试方法Junit简介Junit特性在Eclipse中使用JUnit4进行单元测试6.6Junit什么是Junit一个测试框架由ErichGamma和KentBeck创造是Java的测试标准开源IBM'sCPLJunit特性对于测试结果的直接断言测试组件便于组织管理图形化或者文本化的执行器与IDE的融合JBuilderEclipseNetBeansJDeveloperIntegration如何得到Junit网站:/index.htmEclipse中的JunitEclipse提供了Junit的GUI和运行框架也可以在Eclipse之外使用Junit也自带TestRunner示例:在Eclipse中使用JUnit4进行单元测试第一步:将JUnit4单元测试包引入项目在该项目上点右键,点“属性”选择“JavaBuildPath”,选择“Libraries”标签,点击“AddLibrary…”按钮第二步,生成JUnit测试框架在Eclipse的PackageExplorer中选中Calculate.java,右键单击选择new->“JUnitTestCase”第二步,生成JUnit测试框架Eclipse自动生成的框架Eclipse导入相应的包第三步:编写测试用例第四步:Eclipse中运行测试类右击测试类->RunAs->JUnitTest第五步:测试结果:CalculatorTest失败第三步:编写测试用例1、创建一个待测试的对象要测试哪个类,首先就要创建一个该类的对象。本例为了测试Calculator类,必须创建一个calculator对象。如何编写测试用例2、测试方法的声明在测试类中,并不是每一个方法都是用于测试的,必须使用“标注”来明确表明哪些是测试方法。@Test、@Ignore、@Before、@After@Test标注使用@Test标注,以表明这是一个测试方法。方法名字可以随便取,但规范写法是test+方法名,方法名第一个子母大写。方法的返回值必须为void,方法不能有任何参数。如果违反这些规定,运行时会抛出一个异常assertEquals(5,calculator.getResult());是用来判断期待结果和实际结果是否相等JUnit自动进行测试并把测试结果反馈给用户3、忽略测试某些尚未完成的方法加上@Ignore标注的含义是“某些方法尚未完成,暂不参与此次测试”。4、Fixture“固定代码段”@Before,@After是每个方法测试时候必然被调用的代码保证每一个测试都是独立的,相互之间没有任何耦合度@BeforeClass或@AfterClass只在测试用例初始化时执行@BeforeClass方法,当所有测试执行完毕之后,执行@AfterClass进行收尾工作用于测试读取文件等耗时的方法。该方法必须是public和static的执行过程测试开始->setUp->testXXXX->tearDown->测试结束5、限时测试对于那些逻辑很复杂,循环嵌套比较深的程序采用限时测试函数设定一个执行时间,超过了这个时间,他们就会被系统强行终止,并且系统还汇报该函数结束的原因是因为超时6、测试异常expected属性用来测试函数应该抛出的异常7、Runner(运行器)JUnit中有一个默认Runner,如果没有指定,那么系统自动使用默认Runner来运行代码@RunWith是用来修饰类,可以指定需要的Runner8、参数化测试可以将所有参数集中起来一起测试。步骤:1:为测试专门生成一个新的类2:定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果3:定义测试数据的集合,用@Parameters标注进行修饰4:创建构造函数对先前定义的两个参数进行初始化方法必须由Parameters注解修饰方法必须为publicstatic的方法必须返回Collection类型方法没有参数二维数组的类型必须是Object类型的二维数组中的数据是为测试Calculator中的square()方法而准备的二维数组中的每一个元素中的数据都对应着构造方法SquareTest()中的参数的位置测试的执行流程首先执行data()方法,将准备好的数据作为一个Collection返回然后根据准备好的数据调用构造方法。Collection中有几个元素,该构造方法就会被调用几次。例中被调用3次,会产生3个该测试类的对象Collection中的数据是由JUnit传给SquareTest
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024装修保修合同的格式
- 2024工程水泥供货合同范本工程水泥供货合同模板
- 印刷技术对产业转型升级的影响考核试卷
- 提前退房合同范例
- 新疆合同范例
- 油面劳务合同范例
- 洪梅学校蔬菜配送合同模板
- 检测分包工作合同范例
- 炉工雇佣合同模板
- 汽车产品设计协议合同范例
- 深圳大学《西方文明史》2023-2024学年第一学期期末试卷
- 2024-2030年中国肉牛养殖产业前景预测及投资效益分析报告权威版
- 租赁合同 排他条款
- 2024年同等学力申硕英语考试真题
- 河北省石家庄市长安区2023-2024学年五年级上学期期中英语试卷
- 节约粮食英文课件
- 初中数学30种模型(几何知识点)
- 多能互补规划
- 天一大联考●皖豫名校联盟2024-2025学年高三上学期10月月考试卷语文答案
- 【核心素养目标】统编版 选必1 第一单元 第1课 中国古代政治制度的形成与发展 教学设计
- 教师专业发展支持系统
评论
0/150
提交评论