性能测试定义:
通过一定的工具结合相应的测试方法,对部署的系统应用进行测试,发现系统应用内部存在的代码逻辑问题及应用部署的机器硬件资源瓶颈问题及应用部署架构存在架构错误问题,如:网络端、客户端、服务端搭建的架构问题;
负载测试:是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过;
压力测试(Stress Testing):是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试;
性能测试的目的:
性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题;
项目开发周期:初始时刻,项目更多关注的是功能实现,此时功能测试显得尤为重要,测试的提前介入,可以提前预测风险,减少项目开发周期、节约开发成本;功能测试后的阶段,个人认为应该是性能测试(试想,如果一个项目连功能都实现不了,更何谈性能测试);在功能完毕之后,引入性能测试,通过性能测试对开发项目潜在的问题进行排查(功能测试,仅仅是几个人或者几十个人简单的对应用功能的一个测试,对于应用真正上线后的大量用户使用,应用存在的潜在风险,并不能做很好的预估,尤其是当前空前的竞争压力下,应用上线后的失败,很可能导致整个项目的失败;例如:12306订票网站,使用量之大,可能全世界前所未有,调动全国人力去测试应用性能问题,肯定是不可能的。如果事先不经过性能测试,贸然上线,在如此之多的用户使用情况下,系统崩溃将是怎样的一种后果。);
案例分享:编者曾经从事过一个项目,伴随项目的始终。前期阶段,由于测试提前介入,以及项目开发采用的敏捷开发方式,项目很快在不到半年的时间内,功能近乎完美完成。项目经理本着稳妥起见,引入性能测试,对项目潜在的风险进行评估,然后就搭建了一套模拟环境,专用于性能测试,搭建的模拟环境30用户并发运行,项目一点问题没有,进一步提升并发用户数,各种问题接踵而来;经过系统调优后(发布的应用系统参数等),部分问题解决;为了进一步测试实际情况下存在问题,性能测试环境由模拟环境切到了生产环境上,此时是大量用户下的并发,部分业务是没有问题的,但是更多的问题是集中在涉及到工作流的一些业务场景上,后台日志各种报错;通过抓取后台日志,对问题进行定位分析,很快排查解决了代码开发中存在的一些逻辑问题;代码修复后重新上线,问题已基本不存在了;项目也很快结束,大大的缩短了项目开发周期、节约了开发成功、更好的适用于用户;
性能测试注意点:
录制脚本尽量模拟实际用户操作,在场景设计时,尽量与实际场景一致,对于用户使用比较多的业务,应着重关注;
性能测试尽可能在实际生产环境上进行,普通模拟环境并不能真正发现实际生产环境下,应用存在的问题,但是并非弃用模拟环境;
性能测试,对于应用系统部署的环境上,可能需要部署一些系统性能监控软件,在软件的选取上,尽可能降低软件自身运行对系统性能的影响;
性能测试,特别是应用与数据库交互的业务操作上,需要提前预制符合性能测试业务需求的数据,在此基础上,尽量让环境测试环境可多次重复使用,这就要求数据、应用可还原;
性能测试技能掌握要求:
测试环境搭建,环境搭建不仅仅是性能测试所需要具备的技能,也是测试人员所需要具备的基本技能;很多测试,包括应用的安装卸载,都需要测试人员具备这一技能;
应用搭建使用协议的了解,很多情况下,性能测试人员需要录制测试脚本,这就要测试人员对应用采用的协议有充分的了解;
服务器架构的了解,单一的一台服务器、多台服务器情况下的集群架构等,了解服务器架构,可以为性能测试人员初期性能调优提供帮助;
操作系统机能的掌握,特别是Linux操作系统的了解,当前大多数的应用部署在Linux操作系统之上,性能测试人员需要掌握操作系统知识这一基础技能;
数据库知识,面对大数据时代,数据库机能的掌握不仅仅可以为性能测试服务,还可以为你今后的华丽转型,提供良好保障,华丽的DBA;
良好的编码思量。基础的编码知识,对于编码的了解,可以为你今后冲击高级性能测试工程师提供有力保障,一个高级性能测试工程师,应当具有性能调优这一技能,编码就显得尤为重要;
对于新技术、新思想的一种追求与掌握;
转载于:https://blog.51cto.com/yidishui/1436005