系统测试
系统测试的概念
是将已经集成好的
软件系统
,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素
结合在一起,在实际运行(使用)环境下,对计算机系统进行系列的测试活动。
系统测试策略
| ||||||||||||||||||||||
功能测试(function testing)
- 是系统测试中最基本的测试
- 不管软件内部的实现逻辑
- 主要根据产品的需求规格说明书和测试需求列表验证产品的功能实现是否符合产品的需求规格
- 个人认为,功能测试比性能测试更重要。只要完成了功能测试,可以说测试工作已经完成了大半。
功能测试常用设计方法:
功能测试用例是功能测试工作的核心,常见的设计方法有如下几种:
- <1>规格导出法
- <2>等价类划分法
- <3>边界值分析法
- <4>因果图
- <5>判定表
- <6>场景法
- <7>基于风险的测试
- <8>错误推测法
性能测试(performance testing)
- 是软件测试的高端领域
- 性能测试工程师的待遇和白盒测试工程师不相上下
- 通常我们说的高级软件测试工程师一般就指性能测试工程师和白盒测试工程师。
- 性能测试一般用到测试工具,这儿不涉及到测试工具的使用介绍。
性能测试的定义
- 性能测试是用来保证系统发布后,产品的性能满足用户要求。
- 性能测试在软件质量保证中起重要作用。
- 没有完全的标准定义,从广义上来说,压力测试、负载测试、并发测试、大数据量测试、配置测试、可靠性测试、强度测试等等均属于性能测试范畴。
什么是软件性能
在软件系统日益复杂的今天,性能已经成为软件质量最重要的衡量标准之一。例如,对于软件测试教学网站,我们至少需要测试这些性能指标:
服务器响应速度、客户端上传下载文件的速度和文件大小、能同时支持的在线人数、在线教学视频的播放质量、系统运行的可靠性(稳定性)、邮箱容量、邮件收发速度……
软件的性能范畴
- 系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括:执行效率、资源占用率、稳定性、安全性、兼容性、可扩展性、可靠性等等
- 对软件性能的关注是多层面的
- 用户关注
- 管理人员关注
- 开发人员关注
(1)用户对软件性能的关注
- 软件对用户操作的
响应时间
,如用户提交一个查询操作,打开一个web页面的链接等等业务可用度
,或者系统的服务水平如何
(2)系统管理员对软件性能的关注
管理员关心的问题 软件性能描述 服务器的资源使用状况合理吗 资源利用率 应用服务器和数据库的资源使用状况合理吗 资源利用率 系统是否能够实现扩展 系统可扩展性 系统最多能支持多少用户的访问?系统最大的业务处理量是多少 系统容量 系统性能可能的瓶颈在哪里 系统可扩展性 更换哪些设备能够提高系统性能 系统可扩展性 系统能否支持7×24小时的业务访问 系统稳定性 | |
(3)开发人员对软件性能的关注
开发人员关心的问题 | 问题所属层次 |
---|---|
架构设计是否合理 | 系统架构 |
数据库设计是否存在问题 | 数据库设计 |
代码是否存在性能方面的问题 | 代码 |
系统中是否有不合理的内存使用方式 | 代码 |
系统中是否存在不合理的线程同步方式 | 设计与代码 |
系统中是否存在不合理的资源竞争 | 设计与代码 |
软件性能的几个指标
响应时间:应用系统从请求发出开始到客户端接收到最后一个字节数据所消耗的时间,是作为用户视角的软件性能的主要体现。
并发用户数:系统用户数、同时在线用户人数。
吞吐量:单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。 表示方法:请求数/秒、页面数/秒、人数/天、处理的业务数/小时。
资源占用率:体现软件的面向用户特性。
一个标准的软件性能模型
图中划分了三个区域:
Light Load(较轻的压力)
Heavy Load(较重的压力)
Buckle Zone(用户无法忍受并放弃请求)。
在Light Load和Heavy Load 两个区域交界处的并发用户数,我们称为“最佳并发用户数(The Optimum Number of Concurrent Users)”
而Heavy Load和Buckle Zone两个区域交界处的并发用户数则称为“最大并发用户数(The Maximum Number of Concurrent Users)”
性能测试一般分以下四种
- 一般性能测试
- 稳定性测试
- 负载测试
- 压力测试
一般性能测试
指让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。
狭义情况下的性能测试。
对于单机版的软件,我们就在其推荐配置下运行软件,检查CPU利用率,内存的占有率等性能指标以及软件主要事务的平均响应时间
对C/S B/S结构的软件,则测试单个系统登录后,系统主要事务的响应时间和服务器的资源消耗情况
稳定性测试
也叫可靠性测试(reliability testing),是指连续运行被测系统,检查系统运行时的稳定程度。
通常用MTBF(mean time between failure,错误发生的平均时间间隔)来衡量系统的稳定性。
MTBF越大,系统的稳定性越强。
方法比较简单,采用24×7的方式让系统不间断运行,具体运行时间视项目的实际情况而定。
负载测试(load testing)
通常指,让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
与稳定性测试较为类似,都是让系统连续运行,区别是,负载测试需要给被测系统施加其刚好能承受的压力。
负载测试为我们测试系统在临界状态下运行是否稳定提供一种方法。
绝大多数的负载测试都是通过自动化工具完成的。
软件的“体能测试”
压力测试(stress testing)
- 通常持续不断地给被测系统增加压力,直到被测系统压垮为止,来测试系统所能承受的最大压力。
- 压力测试是通过
逐步增加系统负载
来测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态
,以此来获得系统性能提供的最大服务级别的测试。
用例子来区分:
- 假设一个人很轻松就能背1袋米,背2袋米很吃力,最多就能背3袋米。
- 一般性能测试:就让他背1袋米
- 稳定性测试:让他背1袋米,然后让他去操场上跑圈,看多久累倒
- 负载测试:背两袋米去操场跑圈,看多久累倒
- 压力测试:让他背2袋米,3袋米,4袋米……不停直到累倒,发现最多背三袋。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!