文章目录
1.介绍
- SoapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
- SoapUI把一个或多个测试套件(TestSuite)组织成项目,每个测试套件包含一个或多个测试用例(TestCase),每个测试用例包含一个或多个测试步骤,包括发送请求、接受响应、分析结果、改变测试执行流程等。
- SoapUI是一个自由和开放源码的跨平台功能测试解决方案。通过一个易于使用的图形界面和企业级功能,SoapUI让您轻松, 快速创建和执行自动化功能、回归、合规和负载测试。在一个测试环境,SoapUI提供完整的测试覆盖,并支持所有的标准协议和技术。
2.下载与安装
1.官网下载,不过官网可能会比较慢,可以通过其他网上路径下载。
2.下载后,如图:
3.安装如下:这里只需指定安装目录即可
3.使用
若去官网查看,可以看到,官网上表示:世界上最先进的REST和SOAP测试工具,故该工具主要用途还是SOAP协议和REST协议的测试工具,下面对SoapUI工具的使用做一下说明
3.1 Webservice接口测试
3.1.1 SOAP协议与WSDL文件
在使用SoapUI工具进行Webservice测试之前,首先需要了解SOAP协议与WSDL文件这两个概念
- SOAP协议
WebService通过Http协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息头的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用WebService。
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
- WSDL文件
好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用
,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。
因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。
WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
3.1.2 访问Webservice服务
前面已经大致知道了Webservice两个重要概念,那么下面我们就来说说怎么使用他们
1.选择一个公开的webservice服务
公开服务地址
2.建立项目
3.生成访问服务的客户端
当我们获取到wsdl的内容后,工具会自动帮我们解析里面的服务,然后把相关服务接口给我们生成好,如图:
4.访问服务
获得中国省份、直辖市、地区和与之对应的ID:getRegionProvince
获得支持的城市/地区名称和与之对应的ID:getSupportCityDataset
3.1.3 创建测试集
1.上面的每次执行完后,都需要手动去修改一个一个测试,那有没有能自动测试的方案呢
New Project
Project下包含服务(API)和测试站点。
New TestSuit
用于自动化、集群管理测试用例。
New TestCase
针对业务设计不同的测试用例,由Step构成。
New Step
具体的业务请求和相关的配置逻辑组件。
2.创建用例集
3.1.4 增加断言
当我们程序运行的时候,怎么知道是成功还是失败了呢,那么我们可以增加断言
3.1.5 多个case运行
3.1.6 关联
当我们有两个接口需要测试,但是两个接口又有先后关系的时候,就可以在这里使用
1.现在有两个接口,getRegionProvince获取省份
接口能获取中国省份以及编码,如图:
而getSupportCityString获取城市
需要上面的省编码来再次查询这个省下面的城市,比如传入四川编码“31123”,如图:
像这样的测试,接口之间存在有关联依赖的,我们可以在中间增加一个转换器,如图:
注意:这里用到xpath语音去解析的,若不懂的,可以网上去学习一下
3.1.7 性能测试
设置压力参数:Threads,线程数即并发用户数;Test Delay,思考时间即请求之间的时间间隔,单位为秒;Limit,运行时间。
3.2 Rest接口测试
1.测试代码
@Controller
@RequestMapping("/restful/test")
public class RestfulController {
private List<Person> person = new ArrayList<Person>();
//查询
@ResponseBody
@RequestMapping(method = RequestMethod.GET)
public String Get() {
// person.add(new Person(1,"w22"));
return getJsonString();
}
//新增
@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public String Post(@RequestBody Person p) {
person.add(p);
return getJsonString();
}
//修改
@ResponseBody
@RequestMapping(method = RequestMethod.PUT)
public String Put(@RequestBody Person p) {
for (Person p1 : person) {
if(p1.getpId().equals(p.getpId())){
p1.setpName(p.getpName());
}
}
return getJsonString();
}
//删除
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
public String DELETE(@PathVariable("id") Integer id) {
Iterator<Person> iterator = person.iterator();
while (iterator.hasNext()){
Person next = iterator.next();
if(next.getpId().equals(id)){
iterator.remove();
}
}
return getJsonString();
}
private String getJsonString() {
ObjectMapper mapper = new ObjectMapper();
String jsonStrList = null;
try {
jsonStrList = mapper.writeValueAsString(person);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return jsonStrList;
}
}
public class Person {
private Integer pId;
private String pName;
}
2.新建Restful连接
3.3 Http接口测试
http不好用,感觉
SoapUI简介和入门实例解析
soapUI快速入门(测试一个http登录接口)
API自动化测试 Soap UI工具介绍
官网入门教程