SoapUI实践:自动化测试、压力测试、持续集成

 

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。

 

SoapUI 是什么?

SoapUI 是一个开源测试工具,通过 soap/http 来检查、调用、实现 Web Service 的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到 Eclipse,maven2.X,Netbeans 和 intellij 中使用。

 

SoapUI 的安装

下载地址,最好下载最新版本安装包,因为 SoapUI 是基于 java 开发的测试工具,3.0 以前版本的安装包没有集成 JRE,这样就得自己安装和配置 java 运行环境了。

 

SoapUI 的使用

1. 在主界面 File 菜单,点击“New REST Project”,填写你想要测试的url,根据我们的项目 Teacher Site 中的 url 举例:https://teacher-test.grapecitydev.com:

 

参照下图需要在 Resource 输入框输入 /Login/Login 路由,并在 Params 中输入登录时需要的查询参数 accountName 和 password。

2. 点击绿色按钮,SoapUI 发送登录请求,可以在右侧框中看到登录请求返回的结果。

根据 Teacher site 项目的业务需求,发送 Login 请求完成后还得发送 SchoolItemChange 接口才会返回用户登录成功后认证的 Token,如下图中 Set-Cookie 的值将会在下一个 GetOverview 接口的请求头中 Cookie 属性使用:

3. 接下来的第三个请求 GetOverview 如下图,在 Header 框中添加 Cookie 属性,值就是上一个请求 SchoolItemChange 返回的 Set-Cookie 值:

自动化测试

其实以上三个接口的调用,只是简单的测试接口是否调用正常,如果想要对三个接口的调用进行自动化测试,请看下面的分解:

1. 右键每一个接口下的 Request 请求,如图所示,选择”Add TestCase”项,依次为以上三个接口设置 Test Case,在 TestSteps 下分别有 Login,SchoolItemChange,GetOverview 三个 TestCases。

2. 大家有没有发现,在 Test Steps 下多了个 Set Cookie 项,这是干什么的呢?

这是通过 Groovy Script 语法,获取上一个请求的返回值(此处是获取 SchoolItemChange 接口的返回值”Set-Cookie”),并将”Set-Cookie”属性值赋予下一个请求 GetOverview 的请求头 Cookie 中,是不是和第2,3条很应景啊?!这样就很好的解决了接口自动化测试,不用复制粘贴请求之间依赖的返回值。

3. 接下来,就要为测试的接口添加 Assertion 断言,点击左下角的,弹出 Add Assertion 对话框,根据断言注解,选择需要的测试点,例如 Response SLA 表示请求发送后期望的响应时间:

 

Contains Assertion 则表示请求返回的字符串中包含指定的字符串。此断言适用对比的内容不超过65535个字符,因为 Soapui 基于 java 语言编写,这是 jvm 支持的最大字符个数:

4. 为解决上述不能超过65535个字符的问题,则需要为接口添加 Script Assertion,如下代码,表示将本地文件 GetOverview 01.txt 中的内容与请求返回中 HtmlOfPartialView 属性的值进行对比,判断两者内容是否相等:

5. 双击 Test Case,出现如下图,点击按钮,或者选中 Login 右键选择”Run from here”,则依次执行 Test Steps 步骤,如图所示,出现红色背景 Failed 字样,查看右下角 TestCase Log 框,可以看出是由于 Step 4 GetOverview 接口请求的响应时间 1272ms 大于断言中设置的时间 500ms:

 

发送邮件功能

当你希望某个接口请求的结果以邮件方式通知给你时,如下图所示,右键 Test Steps -> Add Step -> Groovy Script,添加 Send Email 脚本,其中 Username 和 Password 分别是公司邮件服务器的账户和密码,Internet Address 即为接收的邮箱地址。

”${teacher-test#TestCase#Getoverview#Response}”的顺序依次为

Test Suite name # Test Case name # Test Step name # Response:

 

压力测试

以上是功能性测试,接下来是压力测试,右键 Load Tests 创建测试用例,

Limit:60 即为压力测试的时间 60s,Thread 表示多线程,可以同时运行5个线程,Test Delay * Radom,表示随机延迟的时间数。

min 表示最小响应时间,max 表示最大响应时间,avg 为平均响应时间,last 表示上一次请求响应时间,cnt 表示请求数,tps 表示每秒处理请求数,bps 表示吞吐率,rat 表示错误率。

右键可以为请求添加断言,Max Errors 设置最大的错误数,Step Average 设置期望的平均时间,其他的依次类推:

如下图,可以选择不同策略的负载和性能测试:

最常用的是简单策略(Simple),如果你想运行功能测试,并想在10秒内延迟5个线程,则 Threads 设置为5,延迟 1000s,随机延迟比率0.5(即将导致延误5至10秒)。

方差策略(Variance),Threads 为方差的线程数量,Interval 为间隔设置所需的值。例如设置20个线程,间隔60和方差0.8,线程的数量将在第一个15秒从20增加到36,然后又减少到20,45秒后继续减少到4个线程,最后等到60秒时返回到初始值20。在统计图中我们很容易遵循这个方差:

线性策略(Thread),从一个线程到另一个线程的数量的运行。它的主要功能是确定某些统计数据变化或事件发生时的水平,例如设置开始和结束线程值(例如1 - 10),并设置持续时间(此例中每个线程至少30秒)获得准确的测量数据:

 

持续集成

在UI界面进行持续集成:右键项目名称 REST Project 1 -> 选择 Launch TestRunner,出现如下图,在 Basic Tab 页选择 TestRunner 安装路径:

在 Reports Tab 页选择报告输出文件夹:

点击 Launch 按钮,自动执行测试项目。

 

通过执行命令进行持续集成,以管理员身份打开 Command Prompt 对话框,执行如下命令:

testrunner.bat -s'teacher-test' -cLogin -r -j -f'D:\Trivals\SoapUI\Logs' D:\Trivals\SoapUI\REST-Project-1-project.xml

该命令行的各个参数含义如下:

  • s : The TestSuite to run, used to narrow down the tests to run
  • c : The TestCase to run, used to narrow down the tests to run
  • r : Turns on printing of a small summary report (see below)
  • j : Turns on exporting of JUnit-compatible reports, see below
  • f : Specifies the root folder to which test results should be exported

其他更多的参数设置,请参考 SoapUI 官网地址:

https://www.soapui.org/test-automation/running-functional-tests.html

本文概要介绍了 SoapUI 工具的基本使用方法,也欢迎感兴趣的读者留言补充 SoapUI 的更多功能使用方法,大家共同学习进步。

转载请注明出自:葡萄城控件

 

我的博客即将入驻“”,诚邀技术同仁一同入驻。

 

相关阅读:

【图解】Web前端实现类似Excel的电子表格

第三方控件Studio for ASP.NET MVC4 工具应用

全新的.NET解释器 - Mono已经到来

 

时间: 2024-10-25 17:13:20

SoapUI实践:自动化测试、压力测试、持续集成的相关文章

《配置管理最佳实践》——2.11 持续集成与每日构建

2.11 持续集成与每日构建 持续集成是一个相当流行的软件开发实践.现在,人们时常把持续集成和敏捷开发联系到一起.实际上,即使开发团队使用的不是敏捷开发的过程, 持续集成在他们之间也已经非常流行.另外一个很明显的现象是很多研发团队并不需要签入构建(commit build, check-in build),也就是说并不需要每次有代码签入代码库都要立刻触发一个构建.很多时候,每日构建已经足够用了,而且也容易实现.持续集成经常会发起很多没必要的失败构建,导致显示面板上出现很多没必要的失败记录.某些构

超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

作者简介:鲁小川,09年本科毕业于浙江大学软件学院,之后就一直就职于阿里巴巴B2B质量保障部,目前是云效持续集成与持续交付解决方案的负责人. 以下内容根据演讲嘉宾分享以及PPT整理而成. 今天分享的议题是<超大型系统的持续集成与持续交付解决方案及案例分析>,主要就是和大家聊聊阿里巴巴B2B技术部这几年来在持续集成与持续交付上实践经验,以及为什么要做宙斯盾系统平台产品来支撑持续交付.宙斯盾平台在阿里内部经过了5年多的积累沉淀,现在已经对外服务输出了,对外服务产品的名字叫做云效平台,后面还会介绍云

让你的CI跑起来-《持续集成》读书总结

持续集成已经被公认为极具价值的一项工程实践.在初始化一个项目时一个重要的任务就是搭建持续集成服务器,编写构建脚本.在我工作的所有项目中都引入了持续集成机制.它已经像氧气一样成为软件开发过程中的一项工程活动. <持续集成>站在理论的角度阐述了持续集成能够解决什么样的问题,如何解决,需要遵循那些原则等.这本书的副标题是-软件质量改进和风险降低之道(Improving Software Quality and Reducing Risk).副标题直指持续集成的两个好处:提高软件质量及降低项目风险.

构建iOS持续集成平台(一)自动化构建和依赖管理

2000年Matin Fowler发表文章Continuous Integration[1]:2007年,Paul Duvall, Steve Matyas 和 Andrew Glover合著的<Continuous Integration:Improving Software Quality and Reducing Risk> [2]出版发行,该书获得了2008年的图灵大奖.持续集成理念经过10多年的发展,已经成为了 业界的标准.在Java, Ruby的世界已经诞生了非常成熟的持续集成工具

游戏项目中的自动化测试和持续集成

现在,许多游戏项目要么跳票严重,要不就是发布时Bug多多.当然,这样的现象并不仅存于游戏工业.例如,根据2001Standish集团发表的那份 声名狼藉的报告"极度混乱"所表述的,70%以上的软件项目要么被取消,要么严重的超时和超支.然而,游戏是软件开发复杂性的最佳代表,不同技能的人需要 协同工作,这也就是某些人所说的游戏项目中高风险因素所在. 软件项目延期.Bug满天飞和失败的原因是多种多样的,但看起来除了随产品特性不断变化之外,测试和品质管理是永恒的问题.以我们的经验来看,相当多数

云效平台:企业级互联网架构下的持续集成与持续交付实践

摘要:本文的整理自2017云栖大会-南京峰会上阿里云高级技术专家鲁小川的分享讲义,讲义主要分享了阿里云云效平台对于企业级互联网架构下的持续集成与持续交付的实践经验,首先介绍了阿里云云效平台的起源,之后对于企业并发研发项目交付流程存在痛点进行了介绍,并介绍了云效平台针对业务痛点所能够提供的服务和能力,并且结合实际案例分享了云效平台持续集成和持续交付实践. 在2017云栖大会-南京峰会上,阿里云高级技术专家鲁小川做了题为<企业级互联网架构下CI/CD实践>的精彩分享.所谓CI/CD也就是持续集成与

个人对持续集成的理解和实践

目前团队人数很少,也没有真正意义上的测试人员,那么如何保证代码质量呢?最近看了<持续交付--发布可靠软件的系统方法>很受启发,突然也想通了很多集成开发工具的设计理念,并做了一些实践,特别记录下来与众人分享. 如何保证代码质量 我觉得根本就是持续集成,确保代码服务器上的版本始终是可运行的.粗粒度上就是把功能分阶段做,每个阶段的功能是完整可发布的,这样有很多好处,尽早看到效果来调整.尽早发现bug.有成果可以鼓舞士气等等:细粒度上就是把每次提交的东西进行测试,让问题尽早暴露尽早修复. 如何达到这个

产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析

2017年5月9日,云效平台资深研发工程师向禹通过直播分享了<持续集成与持续交付实践之路>.他从云效背景.云效方案.云效价值三个方面进行了分享.他主要分享了持续集成持续交付的解决方案和案例,并且对大型系统如何实现持续集成.持续交付.进行产品迭代发布进行了详细介绍. 以下内容根据直播视频整理而成. 云效背景--阿里巴巴<持续交付>之路 大应用下的交付 在七八年之前,阿里巴巴的B2B一直沿用瀑布的模式来进行项目管理,当时已经感觉到瀑布模式对应用持续快速的发展产生了很大的影响.并且当时很

软件测试持续集成的方法实践

配置管理 配置管理在软件开发项目中极其重要,它记录了软件开发流程的演进过程.它能够实现软件增量式开发,并随时可以追溯或查看任意时间的软件版本.持续集成一书中对配置管理是这样定义的: 配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一的定义.修改.存储和检索. 那么我们怎么做配置管理? (一)版本控制 (1)首先我们需要一个版本控制系统,Subversion.Mercurial或者Git,对于一个分布式的团队最好优先选择Mercurial或者Git. (2)把软件开