资讯专栏INFORMATION COLUMN

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

陈伟 / 3041人阅读

摘要:葡萄城于年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

 

因为项目的原因,前段时间研究并使用了 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.grapecit...:

 

参照下图需要在 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

秒)。

![图片上传中...]

方差策略(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:TrivalsSoapUILogs" D:TrivalsSoapUIREST-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-a...

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

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

葡萄城年末福利火热放送中 !凡在 2017 年 12 月 31 日之前,购买葡萄城控件团队授权和企业授权的用户,不仅可以享受到优惠的价格,还可获赠葡萄城技术专家根据客户项目需求提供的定制培训服务。老客户推荐新客户成单,也将获得“客户推荐双重感恩礼”。

了解更多:http://www.gcpowertools.com.c...

关于葡萄城

葡萄城成立于1980年,是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。葡萄城于1988年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70638.html

相关文章

  • 软件测试需要学什么?50W+的测试工程师需要掌握哪些技能?

    摘要:协议学习常见请求方法学习和学习接口的基本概念接口文档认识接口测试用例编写接口测试工具使用软件测试自动化进阶性能测试性能测试的技术要求很高,不仅仅要对性能测试的指标测试分类测试设计有很深刻的理解。 ...

    wushuiyong 评论0 收藏0
  • 微服务化的基石——持续集成

    摘要:一持续集成对于微服务的意义拆之前要先解决合的问题在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。二持续集成就是不断的尝试在一起集成就是在一起。 此文已由作者刘超授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 一、持续集成对于微服务的意义:拆之前要先解决合的问题 在很多微服务化的文章中,很...

    Yangyang 评论0 收藏0
  • 精读《持续集成 vs 持续交付 vs 持续部署》

    摘要:持续交付持续交付是持续集成的扩展,可以保证稳定的发布产品新特性。持续部署持续部署是持续交付的下一步。持续部署可以加速用户反馈新特性,避免发布日带来的压力。单元测试范围非常小,验证每个独立方法级别的操作。 一、摘要 相信大家以前应该接触过持续集成(Continuous integration)持续交付(continuous delivery)持续发布(continuous deploym...

    MangoGoing 评论0 收藏0
  • 崔立强:Dev无感Ops,如何做到高效软件交付

    摘要:用云效首先可以获得研发模式的标准化,我们将其命名为,这是目前应用最广最适合阿里巴巴的分支管理模式,不但具有高度自由,快速迭代的特性,还可以与流水线结合,让整个公司具有统一的软件交付规范。最终避免了的发布故障。 在2018第二届研发效能嘉年华上,阿里巴巴云效技术专家崔力强带来了如何做到高效软件交付的精彩演讲,首先介绍了阿里巴巴在近几年在交付平台上的技术经验,以及目前云上工具平台交易的趋势...

    wawor4827 评论0 收藏0
  • 必看!互联网开发模式的经验之谈

    摘要:架构设计实体化单元测试敏捷开发讲究要快速的修改代码,我们往往会发现,代码修改的越频繁,越多,这似乎是一个无法解决的矛盾。 本文由云+社区发表,作者:韩伟 互联网开发的核心问题 当我1999年进入互联网行业工作的时候,华为刚刚通过了著名的CMM认证。当时作为一个小程序员,非常向往业界经典的软件开发模式。因为看上去,如果企业实行了CMM,我们程序员就不用再天天为了老板一个拍脑袋的主意而加班...

    宠来也 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<