其他分享
首页 > 其他分享> > 软件构造(二)

软件构造(二)

作者:互联网

一、前言

认可“测试”的价值,搞清楚“测试优先”的哲理

学会用等价划分和边界值分析方法为模块设计测试用例

可用工具度量一组测试用例对代码的“覆盖度”

各种各样的测试,都有些初步了解

二、测试

2.1.测试用例

测试优先的编程/测试驱动开发

单元测试:使用JUnit进行自动化单元测试

2.2.黑盒测试:1.等价类划分;2.边界值分析

2.3.白盒测试:覆盖度

2.4.测试种类:集成测试、回归测试、在程序中文档化测试策略

三、软件测试

3.1.作用

(1)软件测试是提高软件质量的重要手段,用以确认是否达到用户需求(可用级别)

(2)测试就是为了寻找错误,但是再好的测试也无法证明系统里不存在错误

(3)好的测试能够发现错误,不冗余,拥有最佳特性,不能太复杂也不能太简单

3.2.测试分类

静态测试与动态测试

静态测试不实际执行程序,使用工具/文本编辑器检查源代码结构或编译器(预编译器)等,检查语法和数据流作为静态程序分析。

动态测试实际上用给定的集合执行已编程的代码的测试用例。

3.2.1.测试与调试:测试发现是否存在错误,而调试识别错误根源,消除错误。

3.2.2.白盒测试与黑盒测试:白盒测试是对程序内部代码结构的测试,而黑盒测试是对程序外部表现出来的行为的测试

3.2.3.测试用例:输入+执行条件+期望结果

3.3.测试优先编程

过程:先写spec-再写符合spec的测试用例-写代码、执行测试、有问题再改、再执行测试用例,直到通过它;Spec描述了函数的输入和输出行为:

它给出了参数的类型和任何额外的约束对它们(例如sqrt()的形参必须是非负的);它还给出了返回值的类型和返回值的方式与输入有关;在代码中,规范由方法签名和上面的注释描述了它的功能。

优点:先写测试会节省大量的调试时间

3.4.单元测试:针对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试

3.5.JUnit测试机:是作为注释前面的方法编写的,使用@Test,一个单元测试方法通常包含一个或多个模块,然后使用断言检查结果assertEquals、assertTrue和assertFalse等方法。

 

 

3.6.黑盒测试:用于检查代码的功能,不关心内部实现细节,检查程序是否符合规约

测试用例通常来源于软件的外部描述,包括规格、要求和设计参数。

选择一组足够小的测试用例来快速运行,但又足够大验证程序。

黑盒测试完全从函数spec导出测试用例,不考虑函数内部实现

3.6.1基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例,针对每个输入数据需要满足的约束条件,划分等价类。

等价类例子:

1.如果输入条件指定了一个范围,则一个有效,两个无效等价类。

2.如果输入条件需要指定的值,一个有效,一个无效等价类。

3.如果输入条件指定了一个集合的成员,一个有效,一个无效等价类。

4.如果输入条件为布尔值,则一个有效类和一个无效等价类。

3.6.2边界值分析在边界值上选择测试用例以补充等价划分。不选择等价类中的任何元素,而是导致在类的“边缘”选择测试用例。

意义:1.边界值分析方法是对等价类划分方法的补充;2.在等价类划分时,将边界作为等价类之一加入考虑

3.7白盒测试要考虑内部实现细节可以根据程序执行路径设计测试用例,一般较早执行

3.8.代码覆盖度用于衡量已有的测试用例有多大程度覆盖了被测程序

覆盖分类:

(1)函数覆盖:测试功能

(2)语句覆盖:测试每条语句

(3)分支覆盖:测试对错时的分支

(4)条件覆盖:测试条件对或错的分支

(5)路径覆盖:测试分支的组合

测试效果:路径覆盖>分支覆盖>语句覆盖

测试难度:路径覆盖>分支覆盖>语句覆盖

3.9.回归测试

回归测试:一旦程序被修改,重新执行之前的所有测试,一旦发现bug,要马上写一个可重现该bug的测试用例,并将其加入测试库

3.10.测试策略需要在程序中显式记录下来,使得在代码评审过程中,其他人可以理解你的测试,并评判你的测试是否足够充分

标签:覆盖,边界值,等价,测试用例,构造,测试,软件,输入
来源: https://www.cnblogs.com/llhm/p/16348839.html