在大家的眼里性能测试一种高逼格的测试,那么咱们今天就来学习一下性能测试核心原理相关的知识点;性能测试涉及的领域及最本质的内容包含什么呢?咱们首先来学习一下关于”性能测试原理”相关的知识点。性能测试主要从三个核心要素上来讲解:第一个它是基于 络协议的;第二个基于多线程;第三个模拟真实的用户场景,基于这三个核心原理详细讲解。
首先:基于” 络协议”层面来说,为什么性能测试中其中有一个核心原理是基于协议的呢?大家都知道不管是web系统也好,app应用程序也好,他们之间是怎么样建立连接的?其实都是基于 络协议来建立连接的;讲到 络连接我们首先应该联想到OSI参考模型与TCP/IP五层模型,那什么是OSI?OSI(Open System Interconnect),即指互联, 一般都叫OSI参考模型,是组织在1985年研究的模型。该标准定义了 络互联的七层由高到低依次包括(应用层、表示层、会话层、传输层、 络层、数据链路层和物理层)即称为开放式系统互联参数模型,平时我们应用最多是基于TCP/IP五层模型基于上是基于应用层面的内容,其它关于物理层、数据链路层、 络层、数据传输层简单了解一下就好。OSI七层参考模型与TCP/IP五层结构模型如下图所示:
OSI参考模型与TCP/IP五层模型图
下面简单讲解一下关于TCP/IP五层模型原理过程:
应用层:一般就是指编写的应用程序,决定了给用户提供的应用服务。可以通过系统调用,与传输层进行通信。我们平时基于windows操作系统打开的web 站或者APP应用大部分是基于应用层的HTTP或者HTTPS协议来进行传输数据从而达到通信的目的。位于该层的协议都是一种标准化协议,如:FTP文件传输、DNS域名解析、POP3、SMTP、HTTP超文本传输协议或者HTTPS超文本传输加密协议。那什么是协议?很多同学可能听着有点晕,在这里我举个例子:我们平时进公司是不是都有签订合同协议,在签订合同协议之前我们是不是经过企业的面试。然后与企业达成合作。我们将自己的时间卖给公司,公司每月按时给我们薪水,但是在签订协议之前我们的薪水都经过双方同意才达成一致的,其实这个过程就是一个协议通过过程,它是有标准规范的,在做这件事的过程中我们一定要遵守公司的规章制度按照公司的安排完成相关工作任务,公司给付相应的薪水,达成一致的协议。
传输层:建立主机端到端的链接,这里的端指的是端口 ,传输层通过系统调用向应用层提供 络连接的数据传输功能。例如:TCP/UDP协议位于传输层协议,可以理解成负责公司快递邮件收发人,公司的投递员,负责将其它公司的资料投递到邮件或者快递公司邮寄。
络层:处理 络上流动的数据包,数据包就是 络传输的最小数据单位。定义传输路径和方法。
链路层:处理连接 络的硬件部分,简单了解即可因为我们不是搞 络的专业人员无需太深入研究。
基于协议的七层架构是怎么进行工作的我们都理解了,那站在测试的角度,如何来理解web前端系统和app客户端程序是位于那一个层次的呢?其实就是基于应用层来进行数据交互的,如何进行数据交互的?其实是通过接口来进行的,那接口测试是在那个阶段进行的?我们都知道基于软件质量模型过程,其中有一个模型叫V模型,它包括了开发过程和测试过程依次由高到低是开发过程,由低到高是测试过程依次分为:单元测试、集成测试、系统测试、确认测试、验收测试五个阶段。其实在不同的测试阶段,其中接口测试就是在集成测试阶段进行的,在此阶段大家从模型过程中可以看出,还没有到系统测试阶段是没有界面的,那我们怎么去测试?通过接口协议,所以在学习性能测试之前我们需要具备一定的接口测试基础,不然的话这堂课程大家可能会听得一头雾水。但是咱们今天这堂课主要针对性能测试核心原理展开讲解,第一基于协议我们需要学习相关的接口测试工具,目前市场上比较流行的接口测试工具有:
jmeter/SoapUI/LR/Postman/poster/httpclient等等,借助这些工具就可以完成接口的自动化测试,那么基于性能测试的协议与功能接口测试类似,所以接口测试在单元测试阶段后进行,我们只需要有一个接口需求文档就可以开展接口测试,但是性能测试是在系统测试阶段进行的,但是性能测试是不基于界面的,基于协议的,所以为什么协议非常重要。大家做接口测试的时候有没有发现需求文档并没有界面UI原型图,意思不需要界面,我只需要知道一个URL地址、参数类型、输入参数、状态码等接口相关这就能完成接口测试。那么性能测试其实就是在单个接口测试的基础上增加大量用户对接口进行加压测试。案例如下图所示:接口集成自动化测试结果基于Jmeter+ANT+邮件发送。
接口自动化测试结果分享
其次:基于”多线程”,什么是多线程呢?例如:我们人类的大脑,大部分都是单线程,为什么大部分人的大脑是单线程?因为人类一般没有太多精力同时做多件事情;但是电脑可以做到同时一边上 ,一边听歌、一边写文章、一边上 课同时进行,这其实就是一种多线程。那基于web系统与app应用程序层面分析多线程是如何形成的呢?接下来我将简单跟大家分享一下,大家都知道我们每天都会游走在互联 上,那浏览 页的是不是你一个人?答案肯定不是的,全世界只要有手机与电脑有 络都可以上 ,这就意味着我们发布的一些web系统和app应用程序,在同一时间可能被很多人同时访问,但是我们在做功能测试的时候可能仅仅基于需求功能点进行覆盖,我们并不会基于多用户来测试这个功能,这样就会导致产品发布到线上环境可靠性差,如果用户数量达到一定的数量,由于本身我们没有做过性能测试就会导致系统承受压力的能力与资源无法预估,那有没有可能达到一定数量的压力瓶颈点系统会产生奔溃?其实都有可能,为什么会出现这种情况呢?随着用户数量的增加,服务器处理请求的速度逐渐变慢,队列可能会排得很长,达到资源耗尽的情况,这时候如果再来一波用户系统已经承受不住, 就会导致系统崩溃。通过这个例子相信大家对基于多线程已经有了一个深入的理解,也就是说一个功能在少用用户访问的时候不会有问题,但是批量用户同时访问系统的时候如果没有做性能测试就有带来严重的问题,例如:服务器挂掉,系统崩溃、内存溢出等问题。那么我们如何来模拟这种多用户的真实场景呢?接下来我们将讲解基于多线程操作系统。
基于多线程案例图详解:
性能测试多线程场景设计
再次:模拟”真实的用户”场景
大家都知道我们要模拟真实的用户来访问这个系统需要大量的人力与物力资源,就从全中国范围来看,大公司的软件访问量大部分都上亿,那么这么多人访问系统,我们如何来模拟真实的用户操作?以前没有测试工具的时候我们是使用人工来模拟,但是成千上万个人不可能配备成千上万台电脑来模拟,一般企业也很少存在上万个员工,至少在互联 企业来说还是比较少,这样会不会浪费人力与物力资源呢?有没有方法可以解决这个问题呢?答案是有的,可以通过性能测试工具来解决这个问题,使用LR或者Jmeter工具来帮助我们完成模拟真实用户的性能测试。这两款工具可以达到模拟单业务与混合业务基于多用户操作系统的目的,从而更好的满足性能需求。多用户操作发贴例子案例结果如下图所示:
利用LR模拟真实的用户场景
基于不同的模块多用户同时发贴结果呈现
总结:关于性能测试三个核心概念,基于原理及过程给大家做了一个详解的分享,希望大家通过本次课程的学习,能够对性能测试有一个更深层次的理解,首先我们再来回顾一下本次课程的核心内容:性能测试是基于协议的、基于多线程、模拟真实的用户场景而开展工作,只要我们掌握好这三个核心概念,咱们后面的性能测试课程就更好开展,希望同学们通过今天的学习能够站在更高的层次,学会分析问题从而更好的解决问题,本次课程到此结束,我们下一期见。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!