软件测试

祝衍军

目录

  • 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性能测试工具的场景设计、测试执行和结果分析。 

【任务储备】:

1、场景

场景是用来尽量真实地模拟用户操作的工作单元,场景设计源自于用户真实操作JMeter的场景设计主要通过线程组设置来完成。JMeter线程组实际上是建立一个线程池,JMeter根据用户的设置进行线程池的初始化,一个线程对应一个模拟用户在运行时做各种运行逻辑处理,线程组的配置界面如下图所示。



重要的配置信息如下所示:

在取样器错误后要执行的动作:其中的某一个请求出错后的异常处理方式:

    ü 继续:请求(Sampler元件模拟的用户请求)出错后继续运行。在大量用户并发时,服务器偶尔响应错误是正常现象,比如服务器由于性能问题不能正常响应或者响应慢,此时需要将错误记录下来,作为有性能问题的依据。

    ü 启动下一进程循环:如果出错,则同一脚本中的余下请求将不再执行,直接重新开始执行。

    ü 停止线程:如果遇到请求(Sampler元件模拟的请求)失败,则停止当前线程,不再执行。比如配置50个线程,如果其中某一个线程中的某一个请求失败了,则停止当前线程,那么就只剩下49个线程在运行,如果失败的事务增多,那么停下来的线程也会增多,运行状态的线程就会越来越少,最后负载不够(对服务器的压力不够,测试结果不具参考性),所以一般不会这样设置。

    ü 停止测试:如果某一个线程的某一个请求失败了,则停止所有线程,也就是停下整个测试。但是每个线程还是会执行完当前迭代后再停止。

    ü 立即停止测试:如果有线程的请求失败了,那么马上停止整个测试场景。

线程数:运行的线程数设置,一个线程对应一个模拟用户。

Ramp-Up时间(秒):线程启动开始运行的时间间隔,单位是秒,即所有线程在多长时间内开始运行。比如设置线程数为50,此处设置10 s,那么每秒就会启动50/105个线程。如果设置为0 s,则开启场景后50个线程立刻启动。

循环次数:请求的重复次数。选择永远复选框,那么请求将一直运行,除非停止或崩溃,或者时间已经超过设置的持续时间;如果不选择永远复选框,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次。

same user on each interation:选择每次运行是是否使用同一个用户,若勾选则表示每次循环都是同一个用户,勾选则表示每次循环都是新的用户。

延迟创建线程直到需要:若勾选,线程在Ramp-Up时间(秒)的间隔时间启动并运行。比如50个线程10sRamp-Up时间(秒),那么间隔1 s启动5个线程并运行后面的取样器。不勾选,测试计划开始后启动所有线程,但不立即运行取样器

调度器:勾选调度器复选框后,可以编辑持续时间和启动延迟时间。

    ü 持续时间(秒):测试计划持续多长时间,和循环次数配合使用,必须勾选“永远”复选框

    ü 启动延迟(秒):单击执行按钮后,仅初始化场景,不运行线程,等待延迟到时后才开始运行线程。

2、场景运行

JMeter场景的运行方式可以通过GUI(图形界面)运行和命令行运行;运行架构可以在本地一台Jmeter机器运行,所有的请求通过该机器发送,也可以远程运行,用一台Jmeter控制机控制远程的多台机器来产生负载。GUI运行运行方式一般用于脚本调试,命令行运行方式一般用于实际的性能测试JMeter命令行工具常用的参数说明如下所示:

-n:非GUI方式运行。

-t:指定运行的测试脚本地址与名称(后缀为.jmx文件),可以是相对或绝对路径

-h:查看帮助

-l:记录测试结果到文件(后缀为.jtl),指定名称与路径,可以是相对或绝对路径

-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定

-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置

-X:停止远程执行

-J:定义Jmeter属性,等同于在jmeter.properties中设置(参考下方命令行运行实战的第6个命令详解)

-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享

-e:在脚本运行结束后生成html报告

-o:保存html报告的地址

-g:指定已存在的测试结果文件

3、运行结果分析

JMeter使用非GUI模式运行的结果可以存在jtl文件中,可以生成HTML报告,jtl文件文件可以用excel打开,里面记录了每个线程的详细日志;HTML报告主要分为两个部分:DashboardchartsDashboard显示本次测试的基本测试信息,包括测试报告基本信息、应用程序性能指数表、请求摘要图、统计信息和请求异常信息五部分。

1Dashboard组成部分

1)测试报告基本信息显示了测试的开始时间和测试时间等信息

2)应用程序性能指数表(APDEX),计算每个事务的基于容忍和满足阈值的可配置值,范围在 0-1 之间,1表示达到所有用户均满意。

3)请求摘要图(Requests Summary),显示成功和失败请求(不考虑事务控制器样本结果)百分比

4)统计信息(Statistics),提供每个事务的所有指标的摘要,表头信息从左往右分别为:请求名称、请求数目、失败请求数目、错误率(本次测试中出现错误的请求的数量/请求的总数)、平均响应时间、最大响应时间、中间响应时间、90%用户响应时间、95%用户响应时间、99%用户响应时间、吞吐量(吞吐量——默认情况下表示每秒完成的请求数Request per Second,当使用了事务控制器时,可以在列表中找到对应事务的请求数,则其含义为Transaction per Second )Kb/sec(网络吞吐量,表示每秒从服务器端接收到的数据量)。

5)请求异常信息(Errors),所有错误及其在总请求中所占比例的摘要

2charts

Charts包含了Over time(运行时间相关图表)、Througput(吞吐量相关图表)、Response time(响应时间相关图表)三类图表,具体如下图所示。

 

1)Over time(运行时间相关图表),包含Response Time Over Time(响应时间时序图)、Response Time Percentiles Over Time (successful responses)90%95%99%等线程在各个时间段的响应时间,跟聚合报告里面的909599%差不多)、Active Threads Over Time(活跃线程时序图,线程多的时候看比较有意义)、Bytes Throughout Over Time(吞吐量时序图)、Latencies Over Time(请求延迟时序图)、Connect Time Over Time(连接时长时序图)等图表。

2)Througput(吞吐量相关图表),包含Hits Per Second(每秒点击率)Codes Per Second(每秒状态码数量)、Transactions per second(每秒事务量)、Total Transations Per Second(每秒总事务量)、Response Time Vs Request(响应时间点请求的成功/失败数)、Latency Vs Request: 延迟时间点请求的成功/失败数等图表。

3)Response time(响应时间相关图表),包含Response Time Percentiles(响应时间百分比)Active Threads Over Time(活跃线程数时序图)Time Vs Threads(测试过程中的线程数时续图)Response Time Distribution(响应时间分布)等图表。

【任务实施】

1、将企业网站内容管理系统的文章新增功能测试脚本设计如下场景:60个线程在10s内启动,持续运行300s。

2、以非GUI模式运行文章新增功能测试脚本,测试数据保存到text.jtlHTML报告保存到result文件夹中。

3、分析HTML报告,获取响应时间、TPS、事务失败率、并发用户数等性能指标。 

完整操作视频如下所示。