系统测试
将集成测试后的软件,作为计算机系统的一个部分,与计算机硬件、某些支撑软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来发现软件的潜在问题,保证系统的运行。
入口标准
- 所有的单元测试和集成测试成功完成
- 软件的生成(build)过程没有任何错误
- 软件版本经过了冒烟测试(版本验证测试)
- 配套文档完成
- 缺陷已经修正并且准备重新测试
- 源代码已经存储在版本控制系统
出口标准
- 已经执行了用来确定系统满足指定的功能性和非功能性需求的测试过程
- 测试执行过程中没有出现任何重大错误
- 高优先级的问题已经被修正,并且用回归测试进行了验证
- 软件发布时可能存在已知的低优先级的缺陷(+若干未知缺陷)
- 一些度量也可以作为出口标准的一部分
- 缺陷数量
- 缺陷走势
系统测试= 功能测试+ 非功能测试
功能测试 | 非功能测试 | |
---|---|---|
作用/关注点 | 验证产品功能和特性 | 验证产品质量因素 |
范围 | 所有测试阶段 | 系统测试 |
用例失败原因 | 代码缺陷 | 体系结构、设计和代码缺陷 |
预备知识 | 产品和领域 | 产品、领域、设计、体系结构、分析技能 |
系统测试是既测试产品功能也测试产品非功能的唯一测试阶段
功能性测试
Alpha测试
- 定义:在开发环境下进行的受控测试,尽量模拟用户的使用场景
- 特点:由开发人员或独立测试人员、用户完成,但开发者会在场(例如,开发完成后,在开发机上展开测试)
Beta测试
- 定义:在实际使用环境下进行测试(可以把产品交给客户在应用环境下实测,收集反馈意见)
- 特点:开发者通常不在现场
在Alpha测试达到一定程度后进行Beta测试,Beta测试时产品一般相对较为成熟,文档等支持齐备,随时待发布
非功能性测试
包括内容有:
- 性能测试
- 兼容性测试
- 可用性测试
- 安全性测试
- 可靠性测试
- 国际化测试
非功能性缺陷常常与整体设计相关,应在需求阶段就关注非功能性需求
性能测试
通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行评估。包括客户端性能、网络上性能和服务器端性能
客户端性能
并发性能测试
-
负载测试
确定各种工作负载下系统的性能,测试当负载逐渐增加时,系统组成部分的相应指标项,如吞吐量、响应时间、CPU负载、内存使用等,来评估系统的性能表现。(能接受情况下的性能)
-
压力测试
通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试
-
目的
- 评价系统的当前性能
- 预测系统的未来性能
- 寻找到性能瓶颈,进行优化和调整
疲劳强度测试
采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析事务执行指标和资源监控指标来确定系统处理最大工作量的性能,分析系统的稳定性。
如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等。
大数据量测试
针对某些系统存储、传输、统计查询等业务进行大数据量的独立数据量测试。或与压力测试、负载测试、疲劳测试相结合的综合数据量测试(数据库性能测试)
网络上性能
- 网络应用性能监控
系统试运行之后,需要及时准确地了解网络上正在发生的事情:- 什么应用在访问网络
- 多少PC正在访问LAN或WAN
- 哪些应用程序占用大量带宽
- 哪些用户产生了最大的网络流量
- 哪些应用程序导致系统瓶颈或资源竞争
- …
- 网络应用性能分析
- 分析网络带宽、延迟、负载(并发用户数)和端口的变化是如何影响用户的响应时间
- 定位性能问题的根源是在客户端、服务器、应用程序还是网络
- …
- 网络预测
- 考虑到系统未来发展的扩展性,预测网络流量的变化、网络结构的变化对用户系统的影响非常重要
服务器上性能
对于应用在服务器上性能的测试可以采用工具监控,也可以使用系统本身的监控命令。
兼容性测试
检查软件在一个特定的硬件、软件、操作系统、网络环境下能否正常运行,检查软件之间能否正确地交互和共享信息,检查软件版本之间的兼容性问题。
三类基本测试
- 平台、设备兼容性:操作系统、硬件
- 交叉兼容性:不同软件间兼容
- 版本兼容性:兼容不同版本的数据、功能、配置等
可用性测试
是否可用,是否好用
界面漂亮≠可用性好
- 直观性
- 洁净、不唐突、不拥挤
- 组织与布局合理
- 一致性
- 界面布局一致
- 快捷键和菜单选项一致
- 术语和命令命名一致
- 可理解性
- 文字说明易理解
- 灵活性
- 输入输出方式灵活多样
- 界面灵活
- 易获得性
- 产品对于行动不便的用户也可使用
- 实用性
- 舒适性
- 恰当:界面风格与所做工作相符
- 错误处理:出错前提示,出错后可恢复
- 性能:该慢则慢,该快则快
- 易操作:避免反复点击,长距离移动
安全性测试
- 控制安全性
- 访问控制是否可能被绕过
- 是否对输入进行了充分的验证
- 数据安全性
- 保密性:信息不会泄露给非授权用户、实体或者进程
- 完整性:信息在存储/传输过程中不被修改、破坏或丢失
- 可用性:当需要时应能存取所需的信息
- 不可否认性
- 可控性:对信息的传播及内容具有控制能力
测试方法
- 功能测试
- 漏洞扫描
- 漏洞扫描
- 模拟攻击试验
- 侦听技术(Sniffer)
- 错误注入
- Fuzz Testing
- 静态代码审查
国际化测试
确保软件支持不同国家语言和文化的测试手段
- 语言和习俗的消息处理
- 日期格式、货币格式
- 对话框等文本显示区域的调整
- …
web应用测试
web应用特点:
- 层次复杂
- 平台异构
- 内容丰富
对测试的影响
-
技术复杂
一个页面包含多种编程技术
-
脆弱
随时可能断线
-
用户多,性能要求高
并发行、实时性
-
安全性要求高
信息共享多