系统测试是在完成集成测试之后将待测软件与计算硬件、输入输出设备、数据、网络、支撑软件及第三方软件等综合在一起,进行一系列测试,以验证系统在功能性、性能、易用性及可靠性等方面是否满足用户的预期和要求。(在尽可能模拟真实系统的工作环境下,检验软件系统是否与需求规格说明相一致;检验软件UI是否美观、操作是否便捷;确保最终软件系统能够满足用户需求并遵循响应的标准与规范。)
- 黑盒测试技术
- 参与人员:项目团队人员、市场人员、客户代表等。
- 在多种运行环境下进行测试
- 如何搭建软件测试环境是系统测试的一项重要工作。
系统测试常用的技术:
- 基于用例的测试
- 基于场景的测试
- 基于需求规格说明书的测试
- 基于风险的测试
- 性能测试
- 压力测试
- 可靠性测试
系统测试和单元测试、集成测试之间的区别:
基于用例的测试
用例的层次结构:
- 顶层用例/高层用例
- 基础用例/基本用例
- 扩展用例
- 实际用例
基于用例的测试是一种黑盒测试技术
用例主要描述的是系统的功能需求,对于非功能性方面的测试,基于用例是无法实现的。
带备选事件流的用例描述:
场景测试
定义:
- 场景是一种很好的捕捉现实的方法,更加关注用户实际的端到端使用体验。
- 基于场景的测试是指测试人员基于用户的实际业务和操作,构建复杂的涉及多次交互的使用场景,来检验软件在复杂环境下的表现是否符合预期。
- 在进行场景设计时,测试人员通常需要对多个涉众进行深入的观察和调研。甚至与涉众人员一起工作生活一段时间从而发现软件的实际使用场景。
- 当调研结束后,测试人员根据调研情况,编写并完善场景,甚至可以夸大某些情况。
基于规格说明的测试
系统测试覆盖指标:
- 端口输入事件覆盖指标
- 端口输出事件覆盖指标
- 端口(设备)覆盖指标
- 其他覆盖指标
基于风险的测试
定义:将软件的潜在风险作为测试安排的依据和目标,基于对潜在风险的全面分析和把握,有效设计并组织测试活动。
主要任务:
- 识别风险因素,考虑程序中可能存在的潜在问题
- 对每个风险因素,考虑最佳的测试手段,并创建相应的测试
- 评估测试工作的覆盖率,并找出测试工作中存在的漏洞
- 列出缺陷历史、配置问题、明显的客户抱怨等问题
- 对测试工作进行评估,确定这些测试要解决什么风险,是否能够创建更有力测试。
风险分析:
- 一个风险与问题发生的可能性及其影响力有密切关系
- 问题发生的可能性越大,风险越高
- 软件中存在的某个问题带来的影响越大,其风险越大。
风险级别 = 发生的概率 x 代价
优点:
- 针对性强
- 如果能够得到最佳的风险优先级,则测试效果会非常显著
缺点:
- 通常难以发现软件中的所有潜在风险
- 该技术主观性很强,不同的测试人员所发现的潜在风险不会完全相同
- 难以定量判断覆盖率,不清楚是否错失了关键风险。
性能测试与压力测试
性能指标:
性能测试步骤:
- 性能需求分析
- 测试准备
- 构建测试工具
- 测试执行
- 测试分析
压力测试:
也称为强度测试,是指通过给系统强加巨大工作负载的测试,以检验系统在峰值使用情况下是否能够正常工作。
压力测试内容:
- 对于被测系统,短时间内施加极端工作负载
- 对于被测系统,施加过量工作负载,即超过系统预期极值情况
- 对系统连续执行所有可能操作
压力测试手段:
性能测试与压力测试比较:
可靠性测试
软件可靠性:是指软件系统在规定的条件下和规定的时间内完成所要求功能的能力。
软件可靠性模型:
- 指数失效时间模型
- 贝叶斯模型
- 韦伯分布失效时间模型
- 伽玛分布时间模型
- 无限时间模型
- 没有统一的软件可靠性模型
软件可靠性指标:
软件可靠性测试:
是指为检验和保证软件可靠性要求而进行的测试,它通过对软件系统的可靠性进行一系列的设计、分析和测试,从而满足用户对软件可靠性的要求。