软件测试

祝衍军

目录

  • 1 软件测试概述
    • 1.1 软件测试概述
    • 1.2 软件缺陷(BUG)
    • 1.3 软件测试职业发展
    • 1.4 软件测试分类
    • 1.5 软件测试流程
    • 1.6 课程思政:秘书也疯狂的故事
  • 2 黑盒测试
    • 2.1 黑盒测试概述
    • 2.2 等价类划分法
    • 2.3 边界值分析法
    • 2.4 决策表法
    • 2.5 正交实验设计法
    • 2.6 场景测试法
    • 2.7 错误推测法
    • 2.8 功能需求分析
    • 2.9 测试用例设计
    • 2.10 课程思政:五笔输入法的故事
  • 3 测试执行
    • 3.1 测试计划
    • 3.2 测试执行BUG记录
  • 4 白盒测试
    • 4.1 白盒测试概述
    • 4.2 程序流程图设计
    • 4.3 白盒测试用例设计
    • 4.4 JUnit单元测试
    • 4.5 课程思政:WPS的故事
  • 5 Web应用软件自动化测试
    • 5.1 Python自动化测试基本框架
    • 5.2 登录页面测试脚本设计
    • 5.3 新增文章页面测试脚本设计
    • 5.4 基于Unitest的登录测试用例集脚本设计
    • 5.5 课程思政:大并发案例阿里云的小故事
  • 6 智能终端APP自动化测试
    • 6.1 企业案例
    • 6.2 Android智能终端设备连接
    • 6.3 Android APP应用自动化测试
    • 6.4 Monkey 压力测试
    • 6.5 课程思政:鸿蒙的故事
  • 7 JMeter性能测试
    • 7.1 性能测试需求分析
    • 7.2 文章新增脚本开发
    • 7.3 文章新增脚本完善
    • 7.4 场景设计与运行结果分析
    • 7.5 课程思政:12306网站的技术进步故事
  • 8 Postman接口测试
    • 8.1 Postman
    • 8.2 企业网站管理内容系统接口测试
  • 9 Loadrunner性能测试(1+x考证高级相关知识点)
    • 9.1 录制回放
    • 9.2 思考时间设置
    • 9.3 检查点设置
    • 9.4 参数化设置
    • 9.5 关联设置
    • 9.6 集合点设置
    • 9.7 场景设计与运行分析
  • 10 省技能大赛
    • 10.1 竞赛系统
    • 10.2 相关知识
  • 11 企业案例
    • 11.1 软件测试公司真实案例
文章新增脚本开发

【任务描述】:前面已经分析完某公司企业网站内容管理系统的性能需求,如何使用性能测试工具设计和开发对应的测试脚本 

【任务目标】:通过设计和开发文章新增功能的测试脚本,掌握JMeter性能测试工具的线程组、HTTP请求、HTTP Cookie管理器、查看结果树、HTTP请求默认值等元件的基本使用,掌握Fiddler抓包工具的基本使用。 

【任务储备】:

1、Fiddler

Fiddler是一款免费的、基于Windows系统的代理服务器软件(即Web调试抓包工具),由Eric LawrenceC#语言在200310月发布了第一个版本。当启动Fiddler时,它会自动注册成Windows InternetWinINET)网络服务代理,从而就能捕获本地所有的HTTPHTTPS数据流,其运行原理图如下图所示。


客户端(例如Web浏览器、iOS移动设备等)发送请求后,Fiddler会将数据包拦截,假装自己是客户端再发送给服务器,服务器响应后,Fiddler也会拦截返回的响应数据,再转发给客户端。在Fiddler介入后,就能实现过滤数据流、解密HTTPS、调试断点、修改请求或响应等功能。

Fiddler运行主界面分为左右两栏,左边按照请求顺序显示会话列表,右边显示Fiddler工具提供的功能页签,包括StatisticsInspectorsAutoResponseComposerFiddlerScriptsLogFiltersTimelineFiddler Orchestra Beta九个页签,具体运行界面如下图所示。


Statistics,通过该页签,用户可以通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求传输的字节数。访问页面时选择第一一个请求和最后一 一个请求 ,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行速度性能优化。

Inspectors,提供headerstextviewWebFormshexview,Raw等多种方式查看,一条HTTP请求的请求和响应,它分为上下两部分:上部分为请求展示,下部分为响应展示。

AutoResponse,通过该页签可以抓取在线页面保存到本地进行调试,大大减少了在线调试的困难,也可以修改服务器端返回的数据,如让返回都是404的数据包读取本地文件作为返回内容。

Composer,支持手动构建和发送HTTP , HTTPSFTP请求,还可以从会话列表中拖曳会话,把它放到Composer页签中,点击Execute按钮时则把请求发送到服务器端。

FiddlerScripts,打开Fiddler脚本编辑。

Log,打印日志。

Filters,通过该页签可以对左侧的数据流列表进行过滤,左边的请求列表只显示符合过滤要求的所有请求。

Timeline,称为Fiddler的瀑布图,用于展示网络请求时间。每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等多个阶段,把多个请求以时间作为X轴,以图表的形式展现出来就形成了瀑布图。在左侧会话窗口点击一个或多个会话,Timeline便会显示指定内容从服务端传输到客户端的时间。

Fiddler Orchestra Beta,提供远程Web调试的功能。

Fiddler的完整操作视频如下。

2、JMeter

JMeterApache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。 其最初被设计用于Web应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java小服务程序、CGI脚本、Java对象、数据库和FTP服务器等等。JMeter可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能,其运行界面如下所示。


启动JMeter进入工作区,工作区分为三部分:区域是一个目录树,存放测试设计过程中使用到的元件,执行过程中默认从根节点开始顺序遍历树上的元件;区域是各个元件的配置区域,可以配置区域选中的元件各项属性;区域是菜单栏,图标是菜单快捷方式。

JMeter中一个脚本即是一个测试计划,也是一个管理单元,其至少需要保护下面四个基本要素:

1)测试计划(TestPlan),一个脚本中只能有一个测试计划,是区域中目录树的根节点。

2)线程组,JMeter负载是通过线程组驱动的,一个测试计划中至少要有一个线程组,一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户,线程组中包含的线程数量在测试执行过程中是不会发生改变的。

3)取样器,每个线程组中至少要有一个取样器,取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMete支持多种不同的取样器,如 HTTP Request SamplerFTP Request SampleTCP Request SampleJDBC Request Sampler等,每一种不同类型的取样器可以根据设置的参数向服务器发出不同类型的请求。

4)监听器,一个测试计划至少要有一个监听器,监听器是用来对测试结果数据进行处理和可视化展示的一系列元件,包括察看结果树、汇总报告、聚合报告等元件。

3、线程组

线程组相当于有多个用户,同事去执行相同的一批次任务,一个测试计划可以有多个线程组,每个线程组之间是相互隔离的,互不影响。添加线程组的步骤为:右击“测试计划”,选择“添加”“线程(用户)”“线程组”

4、HTTP请求

是指从客户端到服务器端的请求消息,包括:请求方法、标识符及使用的协议等。添加HTTP请求的操作步骤为:右击“线程组”,选择“添加”→“Sampler”→“HTTP请求”



名称:可以随意设置,一般设置为有业务意义的名称

协议:HTTP或者HTTPS(默认为HTTP)。HTTPSSSL的连接,较HTTP有较高的安全性,但效率较HTTP低。

服务器名称或IP:指定HTTP请求的主机地址。

端口号:默认80,如果访问地址中带有其他端口号在此填入。

方法:HTTP请求的方法,最常用的有GETPOST

路径:除去主机地址部分的访问链接。

Content encoding:字符编码格式,默认为iso8859,大多数应用会指定成UTF-8格式。

自动重定向:HttpClient接收到请求后,如果请求中包含重定向请求,HttpClient可以自动跳转,但是只针对GETHEAD请求,勾选此项则跟随重定向失效;自动重定向可以自动转向到最终目标页面,但是JMeter是不记录重定向过程内容的,比如在察看结果树中无法找到重定向过程内容(A重定向到B,此时只记录B的内容不记录A的内容,A的响应内容暂且称为过程内容),如果此时要做关联,则无法关联到。

跟随重定向:HTTP请求的默认选项,当响应Code3××时(比如301是重定向),自动跳转到目标地址。与自动重定向不同,JMeter会记录重定向过程中的所有请求响应,在察看结果树时可以看到服务器返回的内容,所以可以对响应的内容做关联。

使用KeepAlive:对应HTTP响应头中的ConnectionKeep-Alive,默认为选中。

POST使用multipart/form-data:当发送HTTP POST请求时,使用multipart/form-data方法发送,如需要往服务器上传文件时,则必须勾选该选项

与浏览器兼容的头:浏览器兼容模式,如果勾选了POST使用multipart/form-data”,建议勾选此项。

Parameters:同请求一起发送的参数,可以把要发送的参数(就是表单域)与值填到此域,GET方法也适用。

Body Data:指的是实体数据,就是请求报文里面主体实体的内容,一般向服务器发送请求,携带的实体主体参数,可以写入这里。ParametersBody Data只能同时使用其中一种方式。

Files Upload:当勾选了POST使用multipart/form-data可以在此一同上传文件。MIME类型有STRICTBROWSER_COMPATIBLERFC6532等。

5、HTTP Cookie管理器

在用浏览器访问Web页面时浏览器会自动记录Cookie信息JMeter通过加入HTTP Cookie管理器来自动记录Cookie信息,添加Cookie管理器后选择默认即可。当一个线程组有多个HTTP请求,一个HTTP请求为登录请求,其他请求必须登录成功后才能访问,则必须添加HTTP Cookie管理器元件。添加HTTP Cookie管理器的操作步骤为:右击“线程组”,选择“添加”→“配置元件”→“HTTP Cookie管理器”.

6HTTP请求默认值

一个测试计划中通常包含同一个系统中的多个HTTP请求,这些HTTP请求很多参数值都是相同的,针对这些相同的参数值配置项,如果对每一个HTTP请求单独设置比较浪费时间和精力,为节省工作量,JMeter提供了HTTP请求默认值元件,可以将多个HTTP请求参数值相同的配置项配置到HTTP请求默认值元件,其他HTTP请求则可以不配置这些配置项。添加HTTP请求默认值的操作步骤为:右击线程组,选择添加”→“配置元件”→“HTTP请求默认值”.

7、查看结果树

察看结果树会显示取样器的每一次请求(每运行一次,结果树多一个节点,不管取样成功与失败),所以大量运行会比较耗费机器资源,因此在正式运行性能测试计划时,建议不开启。添加察看结果树的操作步骤为:右击“线程组”,选择“添加”→“监听器”→“察看结果树”


【任务实施】

为企业网站内容管理系统的文章新增功能模块添加脚本:

1、JMeter软件中新建一个线程组,线程组名称为:企业网站内容管理系统。

2、设置FiddlerFilters,让Fiddler只显示企业网站内容管理系统的所有请求

3Fiddler软件中识别登录请求,在Inspectors页签查看请求和服务器返回信息,在JMeter线程组“企业网站内容管理系统”下面新建一个HTTP请求。

4、JMeter线程组“企业网站内容管理系统”下面新建一个HTTP Cookie管理器。

5、参考步骤3,在Fiddler中识别文章新增请求,并根据Fiddler获取到的信息在JMeter线程组“企业网站内容管理系统”下面新建一个名称为“文章新增”的HTTP请求

6、JMeter线程组“企业网站内容管理系统”下面新建一个“察看结果树”的监听器,点击运行,在察看结果树和系统中查看运行结果。

7、脚本优化。前面“登录”和“文章新增”的HTTP请求填写的IP和端口号相同,为了减少重复配置工作量,在JMeter线程组“企业网站内容管理系统”下面新建一个HTTP请求默认值,将相同的配置放配置到HTTP请求默认值中,并重新运行,在察看结果树和系统中查看运行结果。

完整操作视频如下所示。