测试实际上是反复执行计算机程序,主要目的是发现计算机存在的错误。
一般而言测试人员的水平要高于开发人员,如果说开发人员是设计者的话,那么测试人员就是破坏者。
软件测试的目的:
1. 发现错误
2. 好的测试用例在于能发现至今未发现的错误
3. 成功的测试是发现了至今未发现的错误的测试
测试信息流:排错(调试)——改错——测试——改正的软件
软件测试与软件开发的关系:
软件开发过程是一个自顶向下,逐步细化的过程:经过分析,设计,编码,测试,维护这一阶段
软件测试过程是一个自底向上,逐步集成的过程:系统测试,确认测试,集成测试
软件测试的策略:即按照单元测试、组装测试、确认测试和系统测试
测试用例设计:
- 黑盒测试:主要是为了测试功能
- 等价类划分:也就是将程序的输入部分划分为若干部分,然后从每一部分中选取少数有代表性的数据作为测试。
- 边界值分析:采用正好等于,刚刚大于,刚刚小于边界的值作为测试数据。
- 错误推测法:列举出可能的错误情况
- 因果图:找出原因和结果的关系,最终生成判定表。
因果图的基本符号:
表示约束条件符号:
2.白盒测试:主要是为了测试结构
- 逻辑覆盖:程序内部逻辑结构
- 语句覆盖:执行可执行语句
- 条件覆盖:执行每个条件可能取值
- 判定-条件覆盖:执行每个判断中的每个条件可能取值
- 条件组合:执行每个判断中的所有可能条件取值组合
- 路径覆盖:覆盖程序中所有可能的路径