一、Webservice简介
1、Webservice是一种基于HTTP通信协议和XML标准来实现应用之间互操作性的技术。Webservice可以用来实现不同平台、不同编程语言之间的互操作性。
2、Webservice是一种远程调用方式,它采用WebService描述语言(WSDL)进行描述和发布,使其它应用程序可以通过SOAP协议来访问和使用,从而达到互通的目的。
3、Webservice除了支持使用SOAP协议来进行远程调用,还可以使用RESTful风格的HTTP请求进行调用。
二、Webservice测试的分类
1、功能测试:主要测试Webservice是否能够正确的处理请求和返回期望结果,包括参数测试、异常测试等。
2、性能测试:主要测试Webservice在高并发、大数据负荷下的性能表现,包括响应时间、吞吐量、并发数等。
3、安全测试:主要测试Webservice是否有安全漏洞,包括授权认证、输入合法性等。
三、Webservice测试用例设计
1、功能测试用例:
@Path("/users") public class UserService { @POST @Path("/register") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response registerUser(User user) { // 注册用户 return Response.status(200).entity(result).build(); } } 测试用例1:注册成功 请求类型:POST 请求URL:http://localhost:8080/myapp/users/register 请求头:Content-Type: application/json 请求体:{ "name": "张三", "age": 25, "email": "zhangsan@gmail.com" } 期望响应:{ "code": 0, "msg": "注册成功" } 测试用例2:参数为空 请求类型:POST 请求URL:http://localhost:8080/myapp/users/register 请求头:Content-Type: application/json 请求体:{} 期望响应:{ "code": -1, "msg": "参数错误" }
2、性能测试用例:
测试场景1:1000个请求,每个请求携带100个参数,请求间隔为1ms 请求类型:POST 请求URL:http://localhost:8080/myapp/performance 请求头:Content-Type: application/json 请求体:{ "param1": "value1", ... "param100": "value100" } 期望响应:{ "code": 0, "msg": "请求成功" }
3、安全测试用例:
测试用例1:未授权访问 请求类型:GET 请求URL:http://localhost:8080/myapp/users/list 期望响应:{ "code": 401, "msg": "未授权访问" } 测试用例2:SQL注入攻击 请求类型:POST 请求URL:http://localhost:8080/myapp/users/login 请求头:Content-Type: application/json 请求体:{ "username": "xxx' OR '1'='1", "password": "xxx" } 期望响应:{ "code": -1, "msg": "用户名或密码错误" }
四、Webservice测试工具
1、SoapUI:支持对SOAP和RESTful Webservice进行测试、模拟和 mocking。
2、JMeter:支持对Web应用程序、Web服务、FTP等进行测试,可以进行高并发测试。
3、Postman:支持对HTTP请求进行测试和调试,支持RESTful风格的API。
五、结语
Webservice测试是Web应用测试中重要的一环,需要从多个方面进行测试,包括功能、性能和安全等方面。同时,需要选择合适的测试工具进行测试,以保证Webservice的质量。