东北大学软件质量保证与测试课程笔记
关键词
software quality(SQ):软件质量
software defect:软件缺陷
SQA:软件质量保证
SQC:软件质量控制
error:错误
fault:故障
failure:失效
incident:事故
defect:缺陷
static test:静态测试
软件质量
软件质量(software quality):关于软件所有的特性
三个方面
对用户:正确性(correctness)、有效性、韧性(resilience)、操作性(interoperability)
对开发者:灵活性(flexibility)、模块化(modularity)、重用性(reusability)、可移植性(portability)、可维护性(maintaionability)
对商品人:完备性(economy)、一致性(consistency)
SQ、SQA 和 SQC:
SQ: ----> 满足需求
1.满足用户需求;2.建立合理的进度、成本与功能的
关系; 3.具备扩展性和灵活性; 4.能有效的处理例
外情况; 5.保持成本和性能的平衡
SQA: ----> 过程
为了确保软件开发过程和结果符合预期的要求,而
建立的一系列规程,以及依照规程和计划采取的一
系列活动,以及结果评价。
SQC: ----> 产品
为了达到产品的品质要求所采取的作业技术和活动。
process与product
软件质量包括活动与以下两个有关:
过程(process)
产品(product)
质量保证是关于工作过程
质量控制是关于产品的
总结
软件质量:
1.满足用户需求;
2.建立合理的进度、成本与功能的关系;
3.具备扩展性和灵活性;
4.能有效的处理例外情况;
5.保持成本和性能的平衡
软件质量保证
为了确保软件开发过程和结果符合预期的要求,而建立的一系列规程,以及依照规程和计划采取的一系列活动,以及结果评价。
软件控制
为了达到产品的品质要求所采取的作业技术和活动。
软件缺陷
错误:编写程序时发生的,代码层面的
故障:错误的表现形式
失效:故障导致了一个不正确的状态产生了一个输出
事故:当出现故障时,没有提示。
软件缺陷:软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,没有满足用户的要求。
缺陷的来源:
- 需求的定义
- 设计
- 软件测试不足
缺陷发生的情况:
- 软件和规约不一致
- 软件做了规约中明确说不能做的
- 软件做了规约里没有说的
- 软件没有做规约里的隐形需求
- 软件难以使用,慢
正确的软件
- 没有代码错误
- 在运行期间没有显示明显错误。
- 没有不正确的陈述
- 正确的输入 —> 正确的输出
- 错误的输入 —> 正确的输出
- 任何可能的输入 —>正确的输入
软件测试
软件测试的定义:
- 软件测试是有计划、系统化的关键步骤。
- 是为向利益相关者提供有关测试产品或服务质量的信息而进行的实证调查。
- 我们可以知道用户的期望是否实现了。
- 软件测试是软件质量保证的关键步骤。
测试和调试(Test vs Debug):
- 自动测试 vs 手动操作
- 不知道细节是可以的 vs 必须知道细节
- 正确性证明以及如何处理失败 vs 仅仅证明正确性
- 检查 vs 推理
- 计划的、在控制的 vs 不在控制的
软件测试的目的
- 找到软件的错误
- 降低软件失效的风险
测试类型
- 测试生成的来源(Source of test generation)
- 测试生命周期(Life cycle phase)
- 以目标为驱动的测试(Goal-directed testing)
- 组件测试(Artifact test)
- 过程模型测试(Test process models)
测试方法
- 静态测试与动态测试
- 黑盒测试与白盒测试
- 手动测试和自动化测试