版权信息
书名:软件性能测试与工具使用技巧经典问答70讲
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
版权
著 于 涌
责任编辑 张 涛
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
作者简介
于涌,具有近20年软件开发和软件测试方面工作经验。先后担任程序员、高级程序员、测试分析师、测试总监等职位。拥有丰富的软件开发、软件测试,项目管理、实践和教学经验。曾为多家软件公司提供软件性能测试、自动化测试、移动测试、接口测试、敏捷测试和安全性测试等相关理论及工具应用等培训和项目指导工作。
内容提要
本专栏以性能测试学习和工作过程中的遇到的各种关键点、难点以及问题为主,在深入学习专栏后,通过老师的图文详细描述将会发现您在性能测试学习、工作过程中遇到的学习难点、工作难题基本都会被讲到,这些知识都会被转化为您的经验。体系化的性能测试知识有助于全面掌握性能测试点点滴滴,性能测试理论和实战相辅相成,使学习者能够快速成为一名优秀的性能测试人员,并把所学的知识应用到实际工作中,解决实际问题。
前言
本专栏全面讲解性能测试需求分析、指标含义、性能测试用例设计、多脚本开发、场景设计、性能监控和结果分析等内容。性能测试作为软件测试的一个重要分类,由于该工作要求从业者知识面广(如:性能测试相关理论、操作系统、网络、数据库、中间件、应用服务器等相关知识)、业务理解能力强、精湛的性能工具应用能力和优秀的结果分析能力,所以能把性能测试工作做好并不容易。尽管一名普通的性能测试工程师薪资普遍在1.5万元以上,但企业想招到一名优秀的性能测试工程师也是比较困难的事情,所以有越来越多的功能测试、自动化测试或者开发人员把目光放到了这一极具挑战性的重要岗位,然而,他们在学习过程中会碰到各种各样的问题,比如:怎样理解性能测试需求、性能指标,怎样把性能测试工具(如:LoadRunner、JMeter等)用好、怎样解决工具使用中碰到的若干问题、怎样对产生的性能测试结果进行分析等等。
本专栏的目的就是结合笔者学习性能测试相关理论、性能测试工具使用和做性能项目过程中遇到的各种“坑”出发,帮广大的性能测试学习者、性能测试从业者或者是关心性能测试的同学们远离这些“坑”,使大家顺畅的学习性能测试相关知识,掌握LoadRunner、Jmeter工具操作技巧,解决在性能测试学习或者工作中遇到的各种问题。
学习目标
1.掌握性能测试的基础和流程相关知识
(1)什么是性能测试、性能测试有哪些分类
(2)常见的性能指标包括哪些
(3)性能测试的工作流程是什么
2.掌握性能测试脚本编写基础知识
3.性能脚本关联技术操作技巧
(1)使用关联规则
(2)做手工关联
(3)使用关联规则
(4)简单关联的应用实例
(5)较复杂关联的应用实例
4.掌握编写性能测试用例及用例到性能测试场景的转换
5.掌握Windows和Linux操作系统相关性能指标的监控方法
6.掌握拐点分析法及性能测试的规律
(1)掌握“拐点”分析方法
(2)发现性能测试的规律
7.掌握性能测试结果分析
(1)使用自动关联对测试结果进行分析
(2)根据分析结果判断性能有所改善
(3)对图表进行合并,定位系统瓶颈
(4)理解常用图表的含义
8.掌握性能自动化测试开发技术
(1)实现前端性能测试自动化
(2)利用HttpWatch来完成前端性能测试自动化
(3)利用高级语言调用HttpWatch完成前端性能测试 [试看]
(4)利用高级语言实现 LoadRunner场景运行控制器
9.利用Jenkins+Jmeter+Ant搭建自动化集成环境
10.LoadRunner 12功能改进与新增实用功能
11.LoadRunner 12 Controller对Jmeter脚本的支持
(1)基于LoadRunner 12如何添加基于Eclipse开发者的插件
(2)基于LoadRunner 12如何应用VuGen开发Selenium脚本
(3)Eclipse IDE调用LoadRunner API实现Selenium脚本开发
12.开源性能测试工具应用案例
(1)基于JMeter工具接口测试项目实战
(2)基于Locust性能测试项目实战
讲师介绍
于涌,具有近20年软件开发和软件测试方面工作经验。先后担任程序员、高级程序员、测试分析师、测试总监等职位。拥有丰富的软件开发、软件测试,项目管理、实践和教学经验。曾为多家软件公司提供软件性能测试、自动化测试、移动测试、接口测试、敏捷测试和安全性测试等相关理论及工具应用等培训和项目指导工作。
适用人群
对软件性能测试、性能测试工具LoadRunner、JMeter、Locust、性能测试需求分析、性能测试用例设计、性能测试场景设计、性能测试监控、性能测试结果分析以及对利用已有工具进行性能测试自研工具开发感兴趣的学习者。
性能测试基础知识专题
第1讲 典型的性能测试场景
随着互联网的蓬勃发展,软件的性能测试已经越来越受到软件开发商、用户的重视。例如一个网站前期由于用户较少,随着使用用户的增长,以及宣传力度的加强,软件的使用者可能会成几倍、几十倍甚至几百倍的数量级增长。如果不经过性能测试,通常软件系统在这种情况下都会崩溃,所以性能测试还是非常重要的。那么我们通常在什么情况下需要引入性能测试呢?
下面是一些需要进行性能测试的场景。
- 用户提出性能测试需求,例如,首页响应时间在3s以内,主要的业务操作时间小于10s,支持300用户在线操作等相关语言描述。
- 某个产品要发布了,需要对全市的用户做集中培训。通常在进行培训的时候,老师讲解完成一个业务以后,被培训用户会按照老师讲解的实例同步操作实践前面讲过的内容,这样就会出现用户并发的问题。我们在培训之前需要考虑被培训用户的人数在场景中酌情设置并发用户数量。
- 同一系统可以采用两种构架:Java和.Net。同样的系统用不同的语言、框架实现效果也会有所不同。为了系统能够有更好的性能,在系统实现前期,可以考虑设计一个小的Demo,设计同样的场景,实际考察不同语言、不同框架之间的性能差异,而后选择性能好的语言、框架开发软件产品。
- 编码完成,总觉得某部分存在性能问题,但是又说不清楚到底是什么地方存在性能瓶颈。一个优秀软件系统是需要开发、测试以及数据管理员、系统管理员等角色协同工作才能完成的。开发人员遇到性能问题以后会提出需求,性能测试人员需要设计相应的场景,分析系统瓶颈,定位出问题以后,将分析后的测试结果以及意见反馈给相关人员,而后开发等相关人员做相应调整,再次进行同环境、同场景的测试,直到使系统能够达到预期的目标为止。
- 一个门户网站能够支持多少用户并发操作(注册、写博客、看照片、看新闻等)。一个门户网站栏目众多,我们在进行性能测试的时候,应该考虑实际用户应用的场景,将注册用户、写博客、看照片、看新闻等用户操作设计成相应的场景,根据预期的用户量设计相应用户的并发量,同时一个好的网站会随着用户的逐渐增长以及推广的深入,访问量可能会成数量级的增长。考虑门户网站这些方面的特点,在进行性能测试的时候也需要考虑可靠性测试、失败测试以及安全性测试等。
第2讲 性能测试的概念及其分类
系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等。性能测试是为描述测试对象与性能相关的特征并对其进行评价,而实施和执行的一类测试。它主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。通常大家把性能测试、负载测试、压力测试统称为性能测试。
- 负载测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力、确定系统能够承受的各项阈值。例如,逐步加压,从而得到“响应时间不超过10s”“服务器平均CPU利用率低于85%”等指标的阈值。
- 压力测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。
- 配置测试:主要是通过对被测试软件的软硬件配置的测试,找到系统各项资源的最优分配原则。
- 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
- 容量测试:测试系统能够处理的最大会话能力。确定系统可处理同时在线的最大用户数,通常和数据库有关。
- 可靠性测试:通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定。因为运行时间较长,通常可以测试出系统是否有内存泄露等问题。
- 失败测试:对于有冗余备份和负载均衡的系统,通过这样的测试来检验,例如系统局部发生故障用户是否能够继续使用系统,用户受到多大的影响;几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。