实现和软件测试
实现:生命周期中的编码和测试统称为实现
- 选择适宜的程序设计语言
- 编码风格 文档,数据说明,语句构造,输入输出,效率(处理机时间和存储器容量)
测试:为发现错误而执行程序,编码时(单元测试),测试阶段(综合测试)
- 发现错误
- 好的方案是极可能发现未知错误的方案
- 成功的测试是发现了未知错误的测试
测试准则
- 针对用户需求
- 制定测试计划
- 80%的错误由%20的模块造成(Pareto原理)
- 由小到大
- 穷举测试时不现实的,测试只能发现错误,不能证明无错误
- 测试最好由第三方进行
预测试
概要设计
详细设计
代码审查
测试
模块测试(单元测试):->编码和详细设计 //白盒
- 模块接口
- 局部数据结构
- 重要执行通路
- 出错处理通路
- 边界条件
集成测试: //黑盒
- 子系统测试->模块间的接口
- 系统测试:->功能测试 //加入硬件与数据库
-
非渐增:系统整体一同测试
-
渐增:
- 自顶向下
- 自底向上
回归测试:程序变化后重新对执行已经测试过的测试的子集
验收测试(有效性):用户参与的->需求说明
- Alpha测试:用户在开发者场所,受开发者指导进行测试
- Beta测试:用户自行测试,报告问题给开发者,开发者修改
安装测试(平行运行:对比新旧系统)
静态分析
人工的,非形式化的方法分析和测试
- 桌前检查
动态测试
测试的重点是测试用例
-
白盒测试:逻辑覆盖(结构测试)//单元测试,依据详细设计文档
- 语句覆盖
- 判定覆盖:每个判定的"真",“假”
- 条件覆盖:每个条件的可能取值
- 判定/条件覆盖:判定的条件可能取值和可能结果
- 条件组合覆盖:每种可能的值得组合至少出现一次
- 点/边/路径覆盖
控制结构测试
- 基本路路径测试
- 条件测试
- 循环测试
-
黑盒测试:(输入输出)(功能测试)
- 等价分类:选取具有代表性的用例:有效/无效
- 边值分析:等价类的边缘值测试
- 错误推测:经验推测
- 因果图法
调试(发现错误后的排除)
方法:蛮干,回溯,原因排除