因为项目的原因,前段时间研究并使用了 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已经到来

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

  1. 基于 KIF 的 iOS UI 自动化测试和持续集成

    客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程. 一.测试框架的选择 iOS UI 自动化测试框架 ...

  2. Jekins持续集成在ERP研发中的应用实践

    源宝导读:"持续集成"是敏捷最佳实践中,保证高质量交付的关键环节之一.本文将介绍明源云ERP系统在研发过程中,应用Jekins平台完成持续集成自动构建的实践. 一.认识持续集成 持 ...

  3. 【学习资料】 持续集成---测试自动化学习

    [持续交付实践] 开篇:持续集成&持续交付综述 前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带 ...

  4. 3年自动化测试,你真的理解自动化测试持续集成(CI)吗?

    目录:导读 前言 一.自动化持续集成 二.两个持续集成好处 三.测试执行 四.总结 前言 大家想一想,自己公司是不是已经有持续集成的流程? 作为测试有没有参与进去? 在公司中开展自动化测试,有没有结合 ...

  5. 测试开发必会:正确理解持续集成和持续交付 CI/CD

    正确理解并掌握持续集成和持续交付(CI/CD)是当下测试和质量保障相关同学的必备技能.本文作者为霍格沃兹测试学院特邀嘉宾,资深技术专家蒋刚毅,原文首发 TesterHome 社区,标题为<持续交 ...

  6. (转载)持续集成(第二版)[来自:Martin Fowler]

    转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...

  7. 持续集成(第二版)[来自:Martin Fowler]

    持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构 ...

  8. Martin Fowler:持续集成(很有参考意义)

    持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构 ...

  9. 持续集成(第二版) Martin Fowler著

    持续集成(第二版) --Martin Fowler著 雷镇 译      持续集成是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过 ...

  10. 持续集成(第二版)(转)

    原文链接:http://article.yeeyan.org/view/2251/94882 作者:Martin Fowler 译者:雷镇 持续集成是一种软件开发实践.在持续集成中,团队成员频繁集成他 ...

最新文章

  1. vuecli3 引入全局scss变量_vuecli3 从搭建到优化
  2. xtrabackup备份mysql“ib_logfile0 is of different”错误分析
  3. ASP.NET Core 2.2 : 扒一扒新的Endpoint路由方案
  4. ubuntu的网络配置
  5. 机器学习的练功方式(五)——模型选择及调优
  6. 适用所有服务器的全站301重定向跳转教程
  7. 回调破前高意味着什么_4连阳后是回调还是突破呢?
  8. python3 读取文本文件_Python3 读写文件
  9. 为什么都反对XML而支持使用json呢?
  10. Promise方法汇总
  11. 汇编 第二章 寄存器
  12. 电脑打开其他电脑的TXT文本时出现乱码的处理办法
  13. 记录:微信公众号网页授权获取code为空
  14. 电源的安规设计(2)
  15. Allegro中 板框 尺寸标注
  16. win32API网址
  17. 用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式
  18. 【Go】小灰灰的数据结构
  19. Html_01-基础
  20. 实达Start IP-1700K 打印机驱动

热门文章

  1. Python 解析配置模块之ConfigParser详解
  2. ThinkPad R400在Windows7下的几个问题
  3. 整理了一个castle的文档,供大家学习使用
  4. 使用RSA私钥或pfx私钥签名String
  5. Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)
  6. (MyEclipse) MyEclipse完美破解方法(图)
  7. Oracle数据库之PL/SQL程序基础设计
  8. Windows 8.1安装.net 3.5功能
  9. 技术感悟---主动学习
  10. 使用NVelocity自动生成Favorite收藏夹的导航页面