【功能测试】
发现问题-> 汇报问题 -> 协助定位问题 -> 跟踪问题的解决
常见功能测试举例(搜索界面测试):
(1)搜索内容为空,验证系统如何处理搜索内容为空格,查看系统如何处理边界值验证:在允许的字符串范围内外,验证系统的处理超长字符串输入,系统是否会截取允许的长度来检验结果合法的字符串长度后,加空格验证检索结果多关键字中间加入空格,逗号,tab验证系统的结果是否正确验证每种合法的输入,结果是否正确是否支持检索内容的复制、粘贴、编辑等操作是否支持回车键搜索多次输入相同的内容,查看系统的检索结果是否一致特殊字符、转义字符、html脚本等需要做处理敏感词汇,提示用户无权限等输入的内容是否支持快捷键操作等只能输入允许的字符串长度等输入链接是否正确跳转,搜索的历史纪录是否显示在下面搜索内容有没有联想功能界面测试查看
(2)UI:是否显示正确,布局是否合理是否有错别字搜索结果显示的布局是否美观已查看的结果链接,链接的颜色要灰化处理,结果数量庞大时,页面的分页布局是否合理
(3)安全性测试:脚本的禁用SQL的注入,检索SQL SELECT语句等敏感内容的检索是禁止的特殊字符的检索被删除、加密、授权的数据,不允许被查出来,是否有安全设计控制
(4)兼容性测试:多平台Windows,mac移动平台android,ios多浏览器火狐、chrome、IE等性能测试搜索页面的链接打开速度是否满足设计要求搜索出结果消耗时间,是否满足设计要求
(5)性能测试:性能测试一般是在系统测试的后期引入的。此时系统的功能相对稳定,并且需求变更的可能性低。
发现问题à定位问题à汇报问题à协助解决问题(性能调优)
【功能和性能测试】
性能测试是基于功能测试的基础上:测试顺序一般为先测功能测试,后测性能测试
性能有两个相等因素:时间、空间
当软件出现性能出现瓶颈时,会反过来影响和制约软件功能的表现
【不同角色关注的性能】
用户视角:响应时间
管理员视角:响应时间、系统状态相关的信息
开发的视角:响应时间、扩展性、性能瓶颈(瓶颈永远无法消除,只能暂缓瓶颈的到来)
【响应时间】
呈现时间:数据在被客户端收到响应数据后呈现页面所消耗的时间(一般web应用会2、5、7秒进行分级,特殊的会到分钟,或者刻钟级别)
系统响应时间:应用从系统请求开始发生到接收到服务端返回数据所消耗时间(性能测试系统响应时间更具代表性)
【并发用户数】
并发测试能够检测:服务器在处理承载或者接受并发的能力
平均并发用户数=访问用户数*访问时间间隔/访问时间段,一般是负载用户数最大数量的百分之十
并发用户峰值=并发用户数+3*并发用户数开根号
【吞吐量】
单位时间内处理用户请求的数量
吞吐量一般用(请求数/秒)或者(页面数/秒):web性能测试中吞吐量除了每秒请求数、每秒请求页面还有每秒字节数来体现
吞吐量=虚拟用户数量*每个虚拟用户的请求数/性能测试所用的时间
【性能计数器】
描述服务器或者操作系统性能的一些指标
计数器在邢恩能够测试中发挥着‘监控和分析’的关键作用
性能计数器不是任何性能测试工具的东西,只要有操作系统,操作系统自身就携带着各种性能计数器,测试工具只是拿了操作系统的性能计数器,转换成另外的形式供用户参考,比如:内存、CPU、硬盘……使用情况
【思考时间】
用户在进行操作时,每个请求间的思考时间
性能测试中会人为设置0思考时间,以达到极致条件测试
【性能测试方法分类】
1. 性能测试
通过模拟生产环境的业务压力和使用场景组合,测试系统的性能是否满足实际的性能需求。
1)主要目的验证系统是否有系统宣称的能力
2)需要事先了解被测系统的典型场景,并且具有确定性的目标
2.负载测试
环境:硬件组成(CPU、内存、硬盘……)、网络类型、连接方式(连接带宽)
在一定负载程度下进行最大负载的过程
1)主要目的是找到系统处理能力的极限
2)需要在给定的测试环境下进行,通过逐步施加压力的方式找到系统的性能的最大瓶颈
3)用来了解系统的性能容量,或者配合性能调优来实现
3.压力测试
通过确定一个系统的瓶颈或者不能接受性能点,来获得系统能提供的最大服务级别的测试,系统崩溃停止测试
1)主要通过模拟负载等方法,是的系统资源达到较高的水平(80%-90%)
2)一般用于测试系统的稳定性
4.配置测试
对测试系统的软硬件环境机型调整,了解各种不同的环境对系统性能的影响程度,从而找到系统各项资源的最优配置
1)最主要目的是为了了解各种不同因素对系统性能的影响程度,从而判断出最值调优的操作
2)一般会在对系统有初步的了解之后在进行
3)一般用于性能调优或者规划能力
5.并发测试
通过模拟用户的并发访问,测试多用户并发访问同一个子模块或者子系统是是否存在死锁或者其他性能问题
1)主要是发现系统中可能隐蔽的并发访问时的问题
2)主要关注系统可能存在的并发问题
6.可靠性测试
通过给系统增加一定的业务压力(如资源的60%~80%)的情况下,让应用持续运行一段时间,测试系统在这个条件下是否能够稳定的运行,停止测试的条件是系统出现错误。
1)主要验证系统是否可以长期稳定的运行
2)需要在压力下持续一段时间运行
3)测试过程中需要关注系统的运行情况
7.失效恢复性测试
针对有荣誉备份和负载均衡的系统设计的。这种测试方法可以用来检验如果系统局部发生故障,用户是否鞥能够继续使用系统,以及如果继续使用的话,用户将会收到多大的影响。
1)主要目的是验证在局部故障的情况下,系统能否继续使用
2)当问题发生时能会吃多少用户访问和采取何种应急措施
3)只有对系统持续运行指标有明确要求的系统才能进行这种类型的测试
【性能测试模型】
- 预期指标的性能测试:需求分析与设计阶段会包含性能指标(系统最大承载负载上限、系统压力级别、系统并发要求……)
- 独立业务性能测试
- 组合业务性能测试
- 疲劳强度性能测试:长时间处理大业务的能力
- 压力测试或者可靠性测试
- 大数量性能测试:在生产环境下进行
- 网络性能测试:一般由系统集成人员完成
- 服务性能测试
- 特殊测试:配置测试、内存泄漏测试……
【性能调优的步骤】
(1)确定问题
检查代码->调整数据库配置->检查硬件配置->调整软件配置->检查网络
(2)确定原因
影响、用户数、资源监控、模块、客户端/服务端、硬件配置、负载、优化
(3)确定调整目标和解决方案
确定调整目标的重要作用是明确何时停止系统调整,否则工作将永无尽头
(4)测试解决方案:通过调整,再次运行之前的问题,看结果。相当于复测
(5)分析调整结果
系统调整是否达到或者超出了预定目标;系统是否整体性能得到了改善还是只是牺牲了部分性能来解决了问题了;调整是否可以结束了
【如何做好性能测试】
1. 规范测试管理流程
开发阶段的性能测试
用户现场的性能测试:需求分析à规划与设计à执行à调优à验证
*用户现场测试时避开用户使用高峰期;保护好生产环境中的关键数据(即做挡板);
2. 提高测试人员在性能测试中的技能
七种武器:硬件(cpu在使用中的各种情况的处理方式)、网络(协议比基础知识稍微深一些)、主流数据库查询(部署、应用、优化)、编程、使用工具(抓包、测试、协议分析)、基础能力(数据分析)、业务知识、行业业务知识