一种结构测试,被测对象是源程序,以程序的内部逻辑为基础设计测试用例。
4. 逻辑覆盖是白盒法设计测试用例的技术,根据程序内部逻辑覆盖程度设计测试用
例。要求设计的测试用路覆盖程度高或覆盖最具代表性的路径。按逻辑覆盖程度不同,分为:
语句覆盖:设计足够的测试用例,是被测程序中每个语句至少执行一次。 判定覆盖:设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”
或“假”值,从而使程序的每个分支都通过一次。也叫分支覆盖。
条件覆盖:设计足够的测试用例,使判定表达式中的每个条件的各种可能的值至少出现一次。
判定/条件覆盖:设计足够的测试用例,使得判定表达式中的每个条件的所有可能取
值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
条件组合覆盖:设计足够的测试用例,使得每个判定表达式中条件的各种可能的值
的组合都至少出现一次。
路径覆盖:设计足够的测试用例,覆盖被测程序中所有可能的路径。
它们的区别在于:逻辑覆盖程度不同、发现错误能力强弱不同、关注点不同、执行路径情况不同。
5. 黑盒测试是把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处
理过程,只在软
件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称功能测试或称数据驱动测试。其测试用例设计技术包括等价类划分、边界值分析、错误推测和因果图。
37
等价类划分:只用输入信息设计测试用例。优点是用少量有代表性的例子代替大量测
试目标的系统的例子,提高测试效率。缺点是不注意选择某些高效的、能发现更多错误的测试用例,孤立考虑各个输入数据的测试功能,没考虑多个输入数据的组合引起的错误。
边界值分析:一般和等价类划分结合,将测试边界情况作为重点,考虑输入、输出数
据的边界情况。优点是边界情况检查比较高效,可查出更多错误。缺点是孤立考虑各个输入数据的测试功能,没有考虑多个输入数据的组合引起的错误。
错误推测:没有确定步骤,根据经验和知觉设计测试用例。
因果图:通过画因果图,把用自然语言描述的功能说明转换成判定表,最后为判定表
的每一列设计测试用例。优点是有效检测输入条件的各种组合可能引起的错误。
6. 用白盒法或黑盒法设计测试用例各有所长,关键是测试用例的选择。实际测试中,
先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。
7. 软件测试是一个规则的过程,包括测试设计、测试执行、测试结果比较等。 8. 单元测试:指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规
定的功能,从而发现模块在编码或算法中的错误。涉及编码和详细设计文档。
主要目标:检查各个模块是否正确实现规定功能,发现模块在编码中或
算法中的错误。
测试内容:集中于单个模块的功能和结构检测,包括模块接口、局部数
据结构、重要
38
执行路径、错误处理、边界检测。
测试方法:总使用白盒测试法,为被测模块设计驱动模块和桩模块。
9. 集成测试:指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统
进行的测试,也称组装测试或联合测试。需要考察模块间接口和各模块间的联系。主要用于发现设计阶段产生的错误,涉及详细设计文档和概要设计文档。
主要目标:检查和设计相关的软件体系结构的有关问题。
测试内容:集中于模块组合的功能和软件结构检测,主要包括模块组装
中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差积累问题。
测试方法:渐增式测试:指逐个把未经过测试的模块组装到已经过测试
的模块上,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。其组装模块的方法有:自顶向下结合(适用于顶层模块)和自底向上结合(适用于底层模块)。
非渐增式测试:指首先对每个模块分别进行单元测试,再把
所有模块按设计要求组装在一起进行测试。
10.
确认测试:指检查软件功能和性能是否与需求规格说明书中确定的指标相符合,又称有效性测试。
用于发现需求分析阶段产生的错误,涉及软件需求规格说明书和用户手
39
册。 主要目标:检查已实现的软件是否满足需求规格说明书中确定的各种需求。 测试内容:集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否满足于软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。 测试方法:总是用黑盒测试法。 11. 软件的测试步骤: 模块单元设计信息 测试 其他系统元素 确认 通过 三种测试与软件开发各阶段间的关系图: 需求分析 概要设计 修改 详细设计 编码 确认测试 集成测试 单元测试 软件需求 单元集成测试 确认系统 测试 单元测试 已测模块 40 已集成的软件测试 确认的软件测试 可支付的软件