什么是性能测试、性能问题产生的原因
云层老师认为性能测试可以被称为性价比测试,它本质上其实是对比单位价格内系统的处理能力,并对软硬件投入对TPS的影响进行了深入讲述。
在介绍什么是性能测试的过程中,云层老师也谈到了性能问题产生的原因:目前软件企业所面临的运维与性能测试要求冲突的困局;互联网架构带来的性能要求等。也说到了性能测试该做什么,并就证明满足需求过程以及获取相关指标提供决策这两点进行了详细阐述。由此引出了如何学习性能测试的思考与讨论,他强调性能测试是一项需要掌握知识面非常广的测试项目。
性能测试相关关键名词和概念
在介绍了什么是性能测试以及其产生原因后,云层老师介绍了许多同学都不太理解或者理解错误的三大名词——响应时间、吞吐量、资源利用率,也对负载和压力的概念进行了讲解:
对于响应时间要分清楚事务响应时间(做某件事情所产生的所有时间开销)与平均响应时间(某时间段内响应时间的分布趋势),对于吞吐量(Transcation per second)要考虑到是否要以秒为单位以及其单位下事务的情况,而资源利用率也要考虑不同的情况使用百分比或者数量制等不同统计方式。
而对于负载这个概念要分清楚在线用户、实际用户、并发用户的情况;也要弄明白负载测试和压力测试的区别。
TPC和SPEC的原理
课堂上云层老师用举例的方式给大家生动展现了不给出基准程序的代码,而只给出基准程序的标准规范的TPC基准;以及制定针对CPU性能、Java应用、Web服务器等性能指标的SPEC;并且给大家讲解了可以通过TPC和SPEC的互换来做到对系统性能的估计。
单机性能与客户服务性能区别
单机:注重本地资源使用;注重对其他应用的影响;注重平衡用户体验。
服务:注重应答响应时间;注重TPS整体处理能力;注重系统稳定性。
报文结构与抓包请求、网站前端性能分析
讲完上述性能测试相关理念架构问题,云层老师教大家利用抓包工具抓包、分析报文请求、报文结构等。带着大家查看了RFC2616相关章节,了解HTTP协议的各类方法定义、状态码含义、缓存机制等。
在大家掌握如何抓包、查看报文结构后,老师又带着大家通过查看前端代码,分析网站性能,介绍了如何找到网站响应速度慢的点、理解为什么响应速度慢以及一些常见的调优策略。有意思的是,在这过程中我们找到了不少火车票购票网站12306的Bug呢~
性能测试所需要掌握的技术、常见分析调优思路
在谈论要做好性能测试的要求时,云层老师谈到一个好的性能测试工程师必须具备掌握以下技术:系统的实现原理(开发技术)、测试技术(了解负载和监控)、测试能力(能写出好的方案、报告,以及良好的理念)、系统调优能力(监控和开发技术)。