1. 请描述什么是性能测试、什么是负载测试、什么是压力测试?
【参考答案】
性能测试:性能测试是和功能测试相对应的。根据用户场景进行的单个用户操作,是属于功能测试领域,主要是验证软件是否可以满足用户的功能需求。比如,单个用户使用系统,系统各项功能是否满足用户的需求。
如果把这1个用户的操作放大,变为100个,1000个,10000个用户同时操作软件,验证软件系统是否满足用户的需求。那么这个就是软件性能测试。通常使用性能测试工具对软件开展并发的访问,同时监控系统各项指标,比如CPU、内存、网络、磁盘等关键部件的使用情况。目标是发现软件在大用户量的情况下,系统的工作情况。性能测试是负载测试、压力测试、并发测试的统称。
负载测试:通过逐步加压的方式来确定系统的处理能力,确定系统能承受的各项阀值。
压力测试:逐步增加负载,使系统某些资源达到饱、极限甚至失效的测试。目的是用来发现系统的软件业务处理能力、系统硬件的极限处理能力等。
2. 公司中常用的性能测试工具有哪些,他们各自的特点是什么?
【参考答案】
公司中常用的工具有LoadRunner、Jmeter、Seagull等。其中LR是商用收费软件,费用比较高,很多小公司很难承受。LR功能强大,支持的协议广泛,拥有强大的录制功能。
Jmeter是开源免费项目,互联网公司用的较多,支持二次开发。支持添加控件进行扩展,目前在企业中应用广泛。
Seagull,在通讯领域中协议测试用的较多,是一款免费的工具,广泛用于Sip协议、Http协议、Diameter协议的系统的性能测试。
3. 请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?
【参考答案】
从需求文档中提取性能测试需求,与用户交流,了解实际使用情况。
结合业务信息设计操作场景总结出需测试的性能关键指标。执行用例后根据提取关键性能指标来分析是否满足性能需求。
4. 请问你是在什么时候开始开展性能测试的?
【参考答案】
通常在产品相对比较稳定,主要功能开发完成,功能测试后期的时候,开展性能测试。
5. 请问性能测试中碰到网页中有验证码的时候,如何编写性能测试脚本绕开验证码?
【参考答案】
常见的方法有两种:第一种是临时让开发人员去掉验证码。第二种是让开发人员在后台预设一个固定的验证码,性能脚本中每一次都使用这个固定的验证码。
6. 性能测试中遇到哪些性能问题?
响应时间过长;内存溢出;cpu利用率过高
7. 概述一下性能测试流程?
分析性能需求。挑选用户使用最频繁的场景来测试。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
编写测试用例
搭建测试环境,准备好测试数据
编写性能测试脚本
性能测试脚本调优(脚本增强)。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
设计测试场景,运行测试脚本,监控服务器
分析测试结果,收集相关的日志提单给开发
回归性能测试
编写测试报告
8. 如何确定系统最大负载?
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数
9. 你们系统哪些地方(哪些功能)做了性能测试?
选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单
10. 你们的并发用户数是怎么确定的?
1)会先上线一段时间,根据收集到的用户访问数据进行预估
2)根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等
11. 你们性能测试在什么环境执行?
参考答案:我们会搭建一套独立的性能测试环境进行测试
12. 你们性能测试什么时间执行?
基准测试:功能测试之后,系统比较稳定的时候再做。
负载测试:夜深人静,系统没人用的时候
13. 如何判断系统的性能是变好了还是变坏了
通过基准测试对比性能指标
14. 你们的性能测试需求哪里来?
1:客户提供需求
2:运维提供需求(负责服务器的稳定性)
3:开发提供需求
15. 如何实现200用户的并发?
在脚本对应的请求后添加集合点(绝对并发)
相对并发:线程组设置200线程数
16. 什么情况下要做关联,关联是怎么做的?
当脚本的上下文有联系,就用关联。
比如登录的token关联,增删改查主键id关联
17. 有验证码的功能,怎么做性能测试?
1、将验证码暂时屏蔽,完成性能测试后,再恢复
2、使用万能的验证码
18. 你们性能测试做的是前台还是后台?
BS项目:测试的是后台服务器的性能和浏览器端性能;
APP项目:手机端和服务器端的性能都做
19. 性能测试指标有哪些
响应时间、吞吐量、Cpu、内存、Io、disk
20. 如何脚本增强?
1、做参数化
2、做关联
3、添加事务
4、添加断言
5、添加集合点(jmeter的同步定时器)
6、添加思考时间(jmeter的统一随机定时器和固定定时器)
21. 该怎么去找这个最佳平衡点呢?
1.尽可能多的做不同并发数下的压测,记录下响应时间(1s以内)和最大tps,当然,服务器端,各个服务器的资源利用率在可接受范围内(每个公司不一样,我们是90%以内);
2.然后根据获取到的不同并发下的指标数据(并发数、tps、响应时间),画出上图,关注右侧的交点,即tps下降的地方和响应时间的交点,这个点的tps最大,如果响应时间在1s以内,此时并发数也是比较大的,这个点就可以认为是三个指标都不错的平衡点(当然,我这里把tps放在第一位优先考虑了,这个就看大家最在乎哪个指标了,排个优先级);如果响应时间大于1s,最佳平衡点就往左找,找到响应时间为1秒的点,此时对应的tps和并发值,就是最佳平衡点。总之,测试采样越多,获取的平衡点就越准确。
另外,如果是用loadrunner作为并发工具,并发过程中是可以增加或者减少并发用户数的,就不用必须压完一次,再调整并发数继续压,但是,loadrunner并发过程中调整了并发数,还是要尽可能跑久一点,比如10-15min。