如何测试Web服务.2
-->全文字数:2700,需要占用你几分钟的阅读时间 ,您也可以收藏后,时间充足时再阅读-
-->上一节讲了《Web服务基础介绍》,本节介绍可用于测试web服务的开源测试工具。
一. SoapUI简介
soap代表简单对象访问协议。它是一种协议,用于在计算机网络中借助Web服务或Web API以XML,JSON或纯数据等结构化数据的形式交换信息。使用诸如HTTP(超文本传输协议),SMTP(简单邮件传输协议)等协议在计算机网络的应用层上协商和传输XML格式信息。
SoapUI介绍:
SoapUI是可以在跨平台中运行的开源测试工具。
它主要用于测试Web服务和Web API。
它具有非常简单的用户界面,无论是技术用户还是非技术用户都非常容易使用。
它能够基于代表性状态转移(REST)和面向服务的体系结构(SOA)来测试应用程序。
使用SoapUI工具,测试人员可以自动执行功能测试和非功能测试,还可以执行Web API的合规性,回归,安全性和负载测试。
SoapUI支持所有标准协议,例如HTTP,HTTPS,SOAP,WSDL,REST,AMF,JDBC,JMS等,并具有用于测试各种API的内置技术。下图显示了SoapUI支持的协议:
SoapUI工具支持协议测试
二. 为什么选择SoapUI?
我将标题命名为“为什么使用SoapUI?”,以说明SoapUI作为测试领域中的工具的重要性。在具有Web服务或Web API的应用程序中,SoapUI工具对测试人员来说是一个福音,因为它的用户界面非常易于使用,因此可以轻松覆盖功能测试和非功能测试。使用SoapUI,我们可以对Web服务和Web API进行以下类型的测试:
1.功能或行为测试:
在功能测试中我们知道,我们涵盖了Web服务和Web API的功能或行为测试方面。使用SoapUI,测试人员可以利用以下功能:
拖放:这是新测试人员通过使用SoapUI的拖放功能来构建测试自动化的最佳功能。这加快了测试自动化脚本的开发。
自定义脚本:SoapUI支持高级脚本选项,具体取决于功能测试方案,该选项有助于编写用于测试自动化脚本开发的自定义脚本。这提供了在工具内编写脚本的灵活性。
无障碍环境切换:在不同的环境(例如UAT(用户接受测试),QA(质量保证),SIT(系统集成)等)之间切换和测试Web API代码很容易。
测试调试:SoapUI工具可帮助测试人员调试其测试脚本并允许编写数据驱动的测试。测试人员可能会放置各种检查点以验证其测试是否按预期执行。
健壮的工具:毫无疑问,取决于SoapUI工具的上述功能及其在编写测试自动化脚本中的健壮性。它提供了一个强大的测试工具,可以在任何软件应用程序中测试Web服务和Web API。
2.符合性测试:
使用SoapUI工具,测试人员可以验证合规性测试,并可以使用测试脚本将其自动化。一致性测试主要涉及在调用软件应用程序中的Web服务或Web API之前和之后使用许可证证书等以及各种服务级别协议进行的源及其数据身份验证。
3.回归测试:
进行回归测试以分析在使用当前版本实施新更改后,或简单来说,Web服务内引入的任何缺陷或故障,或使用它来查找新更改或修复的任何副作用。测试人员可以执行测试套件,以确保现有功能不会中断,并且使用SoapUI工具可以正确进行新更改。
4.负载测试:
进行负载测试以分析Web服务或Web API在中断之前可以保留的负载。让我们讨论SoapUI支持的功能,如下所示:
LoadUI代理:SoapUI具有许多LoadUI代理,可以在其上分配负载并可以分析各种性能参数。
易于使用:利用简单的用户界面和处理SoapUI工具的LoadUI代理,负载测试变得非常简单且易于操作。
性能监视:SoapUI具有高级报告系统,可以捕获各种性能参数以进行负载测试。此外,它还允许对端到端系统负载测试进行性能监视。
5.安全测试:
SoapUI支持这种测试,以确保授权以及Web服务和Web API的请求和响应模型中的真实身份。让我们看一下SoapUI支持的功能,如下所示:
跨站点脚本编写:它在跨站点脚本编写期间扫描并检测结构化消息中是否暴露了服务参数。
保护数据库安全:它扫描并检测任何可能损害数据库的潜在SQL注入,从而保护数据库。
堆栈溢出:SoapUI具有扫描和检测消息中可能导致堆栈溢出的大量文档的功能。
救生扫描:SoapUI能够进行多次扫描,并确保Web服务和we API的安全性。这些扫描是漏洞扫描,模糊扫描和边界扫描,以减轻Web服务的潜在不稳定行为。
通过SoapUI工具进行测试支持
三. SoapUI集成
SoapUI工具可以与许多流行的构建工具一起使用,如下所示:
Apache Ant: Apache ant使用命令行来构建项目。同样,它可以使用SoapUI命令行执行测试套件。
Hudson: Hudson是基于JAVA平台构建的集成工具。通过将SoapUI与Hudson集成,在开发团队每次提交代码时都可以尽早发现bug。
Maven: Maven是一个项目管理自动化工具,主要用于构建JAVA项目。它具有自动从中央存储库进行构建,版本控制和文档的功能。使用Maven构建,我们还可以按照许多简单命令构建和执行SoapUI测试。
JUnit: JUnit是基于JAVA构建的单元测试框架,可以与SoapUI工具集成以对Web服务和Web API进行单元测试。
SoapUI集成支持
四. 比较
SoapUI与其他测试工具(Fitnesse和Selenium)的比较:
属性 | SoapUI工具 | Fitnesse工具 |
Selenium工具 |
测试类型 | SoapUI工具用于测试功能,合规性,回归,负载和安全性测试。 | Fitnesse工具用于用户验收测试。它还有助于执行功能测试以及回归。 |
Selenium用于网站测试,涵盖功能测试和回归测试。 |
用户界面测试 | SoapUI不是测试用户界面(UI)的测试工具。 | 它不用于测试Web用户界面。但是可以与Selenium工具一起进行此类测试。 | 它主要用于测试Web用户界面(UI)测试。 |
Web服务和Web API测试 | 它主要用于测试Web服务和Web API。 | 它可以与SoapUI集成,并协作测试Web API和Web服务 | 它不用于测试Web API和Web服务。 |
协议测试,例如SOAP,REST等。 | SoapUI可以用于测试在Web服务器和客户端浏览器之间传输和接收的数据,因此可以测试SOAP,REST等协议。 | Fitnesse可以验证Web服务器和浏览器之间发送和接收的数据,但不能测试SOAP,REST等协议。 | Selenium可以通过UI测试来测试Web服务器和客户端浏览器之间发送和接收的数据,但是无法测试SOAP,REST等协议。 |
非功能测试,例如性能,负载,合规性和安全性测试 | SoapUI工具支持LoadUI代理,该代理扩展了功能以执行性能和负载测试。此外,借助漏洞,模糊测试和边界扫描等多种扫描,它还有助于进行安全性和合规性测试。 | Fitnesse不支持性能,安全性和负载测试。为了进行合规性测试,可以使用它来验证客户端和服务器之间的数据。 | Selenium主要用于进行功能测试。但是,Selenium可以在某种程度上进行性能测试,因为它有助于跟踪执行时间,但不能测试多用户和多租户。Selenium根本不能用于安全性测试。 |
测试依赖 | SoapUI测试取决于HTTP,SOAP,WSDL,REST等协议。不依赖浏览器。 | Fitnesse主要用于验证发送和保存在数据库中的数据,这是一种用户接受性测试。它既不依赖协议也不依赖Web浏览器。 | Selenium测试取决于Web浏览器,而不取决于诸如SOAP,WSDL,REST等协议。 |
五.附录
使用的缩写:
缩略语 | 完整形式 | 描述 |
SOAP | Simple Object Access Protocol | 简单对象访问协议 |
HTTP | Hyper Text Transmission Protocol | 超文本传输协议 |
HTTPS | Hyper Text Transmission Protocol Secured | 安全超文本传输协议 |
WSDL | Web Service Definition Language | Web服务定义语言 |
REST | Representational State Transfer | 表述性状态传递 |
AMF | Action Message Format | 动作消息格式 |
JDBC | Java Database Connectivity | Java数据库连接 |
JMS | Java Messaging Service | Java消息服务 |
WSDL | Web service Definition Language | Web服务定义语言 |
如何测试Web服务.2的更多相关文章
- 利用python httplib模块 发送Post请求测试web服务是否正常起来!
最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...
- 如何测试Web服务.3
-->全文字数:2254,需要占用你几分钟的阅读时间 ,您也可以收藏后,时间充足时再阅读- ->第一节讲了<Web服务基础介绍>,第二节讲了<Web服务测试工具> ...
- 如何测试Web服务.1
一.什么是web服务 web服务在简单术语中可被定义为通过安装了特定设备或服务器到另一装置或客户端应用程序通过WWW彼此通信后的应用程序(万维网)提供的服务. Web服务通常在计算机网络的应用层上使 ...
- C#测试web服务是否可用
winform客户端经常需要调用webservice或者WCF进行数据交互,但是远程服务有可能不存在或者服务器不可用,客户端只能通过超时或者捕获到异常感知服务不可用.其实有一个COM借口可用快速的检测 ...
- 测试Web服务接口
1. http://www.iteye.com/topic/142034 2. http://www.iteye.com/topic/1123835 3.http://yongguang423.ite ...
- 12个强大的Web服务测试工具
在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种 ...
- WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)
转:http://msdn.microsoft.com/zh-cn/library/gg318615.aspx 摘要:通过此系列文章(共四部分)了解如何在 Microsoft SharePoint F ...
- 混合使用Azure LB和ILB访问相同web服务(1)
在经典的使用场景中,我们一般使用AzureLoadBalancer来面向公网提供负载均衡服务,而使用Azure Internal Load Balancer提供内部那些不愿意将服务暴露给公网的服务,比 ...
- 在 SQL Server 的存储过程中调用 Web 服务
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...
随机推荐
- nginx设置防盗链
1.一般的防盗链设置: location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers none blocke *.julyy.site ...
- ros ap 的无线中继
https://wiki.mikrotik.com/wiki/Manual:Interface/Wireless#Repeater Wireless repeater will allow to re ...
- Linux安装vim,解决vim: command not found
1,输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: root@server1 [~]# rpm -qa|grep vim vim-enhanced-7 ...
- Python 中如何判断 list 中是否包含某个元素
在python中判断 list 中是否包含某个元素: ——可以通过in和not in关键字来判读 例如: abcList=['a','b','c',1,2,3] if 'a' in abcList: ...
- windows上svn图标不显示 绿色对号
http://blog.csdn.net/fengyupeng/article/details/12514449 症状1:项目左侧导航栏表不能正常显示图标 方法:windows->prefere ...
- idea git使用记录
ps:记录idea中git的使用过程 在IntelliJ IDEA使用.gitignore插件的方法和作用 在IntelliJ IDEA使用.gitignore插件的方法和作用 idea git st ...
- Python【每日一问】25
问: [基础题]:利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示. [提高题]:求 s=a + aa + ...
- Excel 简单使用
1.Excel复制上一行 注意鼠标的样子 2.删除多行 删除之后如图所示: 删除多列也是同样的操作 3.日期格式不能按照数据库的形式进行输入 数字的位数太多输入之后改变了数字,可以设置为文本格式,进行 ...
- Win10开启上帝模式
1.新建一个文件夹2.修改文件夹名字为 上帝模式.{ED7BA470-8E54-465E-825C-99712043E01C}
- python解决使用镜像源来安装包
一.问题在进行python包安装的时候出现一个问题就是无法进行安装,且出现了如下的错误 报错代码 Retrying (Retry(total=4, connect=None, read=None, r ...