首要任务:设计测试方案。
测试方案包括:测试目的、测试用例。
概念:
软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审。
可以这样说:软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入一些数据而得到其预期的结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
直接目的:暴露程序中隐藏的错误和缺陷。
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
(1)事先定义好产品的质量标准
(2)尽早地并不断地进行软件测试
(3)程序员或程序设计机构应避免测试自己设计的程序
(4)严格执行测试计划,排除测试的随意性
(5)所有的测试标准都是建立在用户的需求之上
(6)测试是一个持续进行的过程,而不是一个阶段。
(7)测试是不可能穷尽的,当测试出口条件满足时,就可以停止测试。
(8)在对程序修改之后要进行回归测试。
(9)妥善保存一切测试过程文档
(10)一定要注意测试过程文档,如测试计划、测试用例、出错统计、最终分析报告
(11)测试是开发的朋友,不是开发的敌人
(1)按照软件测试的动、静态来分:
①静态分析测试方法
不执行被测试软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流图分析、符号执行等来找出软件的错误。
②动态执行测试
动态执行测试就是通过运行程序来检验程序的动态行为和运行结果的正确性。
分类
(2)按照软件开发过程的内外分类
① 软件开发过程中的测试
②软件产品测试
(3)按照测试用例所依据的信息来源
① 以程序为基础测试
通过对程序的分析形成测试用例,并以程序被执行的程度来判断测试是否充分,这就是白盒测试。
② 以需求规约和需求描述为基础的测试
就是黑盒测试。
③ 程序和需求相结合的测试
介于白盒测试与黑盒测试之间,灰盒测试。
单元测试也称模块测试,即对模块进行正确性检验的测试,以期尽早发现各模块内部可能存在的各种错误。
内容:
① 模块接口测试
② 模块局部数据结构测试
③ 模块边界条件测试
④ 模块独立执行路径测试
⑤ 模块内部错误处理测试
是在单元测试的基础上将软件的多个模块或者系统前后台合并之后进行的测试,也可以算是对单元测试修改进行的复审测试。
(1)非增量式集成测试方法
即 一次性集成测试方法
(2)增量式集成测试方法
把下一个要测试的模块同已经测试好的那些模块结合起来进行测试。
方式:
① 自顶向下
②自底向上
(3)三明治集成
又称混合集成,综合了自顶向下和自底向上策略的特点,将系统分为3层,中间层为目标层。
是基于一定的计算机硬件环境,对整个软件进行的一系列测试。
(1)面向软件性能的系统测试
① 性能测试
② 压力测试
③ 健壮性测试
(2)面向用户使用的系统测试
① 面向用户使用的系统测试
② 安全性测试
③ 兼容性测试
④ 可用性测试
旨在向软件的购买者展示该软件系统满足其用户的要求。
主要内容:
步骤:
(1)测试用例的定义
测试用例是为特定的目的而设计的一组测试输入数据、执行条件和预期的输出结果。
测试用例是执行的最小实体。
(2)测试用例设计原则
① 测试用例的代表性
② 测试结果的可判定性
③ 测试结果的可再现性
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定/条件覆盖
(5)条件组合覆盖
(6)点覆盖
(7)边覆盖
(8)路径覆盖
(1)等价类划分
① 等价类的概念
② 如何确定等价类
③ 如何设计测试用例
(2)因果图法
(3)边界值分析
(4)错误推测
调试又称纠错或排错。
调试与测试的区别:
(1)诊断原则
① 重点仔细分析与错误征兆有关的信息,这是提高调试效率的最有效的策略
② 避免进入死胡同。
③ 是能把调试工具当作辅助手段来使用。
(2)修改原则
① 修改错误前一定要仔细思考。
② 在出现错误的地方,很可能还有别的错误。
③ 修改错误的一个常见失误是只修改了这个错误的征兆,而没有修改错误的本质。
① 从错误的外部表现入手,确定程序中出错的位置。
② 分析有关程序代码,找出错误的内在原因。
③ 修改程序代码,排除这个错误。
④ 重复进行暴露了这个错误的原始测试以及某些回归测试,以确保该错误确实被排除且没有引入新的错误。
⑤ 如果所作的修正无效,则撤销这次改动,重复上述过程,直到找到一个有效的办法为止。
(1)试探法
(2)回溯法
(3)归纳法
(4)演绎法