服务端测试之接口测试初探

  提起服务端测试,第一反应想到的可能就是http协议、socket连接、post/get发送请求等等。回想起小编当时初次接触服务端测试,真可谓一脸懵逼,不知道要干什么也不知道从哪儿开始做。服务端测试往往呈现给大家的是一个很大很宽泛的任务,我们知道要做服务端测试但却不知道怎么做,流程是啥,用什么工具去做,要达到什么样的效果。今天小编就结合最近自己做的一些服务端测试的任务,和大家聊聊服务端测试中的一个常见方法——接口测试。

一、什么是接口测试

先来看看接口测试的定义:

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

如今的软件系统通常采用前后端分离的模式进行设计与实现,即一个系统分为前端(客户端)和后端(服务端)两部分。通常服务端以接口的形式给客户端提供服务,实际上接口和客户端的功能之间是关联的:每个接口都对应着客户端一个或多个功能点;而客户端同服务端的交互,一般也是以接口作为基础,客户端根据不同的需要请求不同的接口,服务端根据客户端请求的接口及携带的参数进行逻辑处理。因此服务端测试可以先从接口测试入手,保证其对客户端提供的服务没有问题后再进行更加深入的业务逻辑测试,这也是目前我们做服务端测试的一个“套路”。

定义中说的接口包括两种:系统与系统之间的接口,内部各个子系统之间的交互点。根据不同的划分会有不同的结果:如果我们把一个系统的客户端和服务器看成一个整体,那么此时服务端的接口相当于是内部子系统之间的交互点;如果我们把客户端和服务端各自看成是一个整体,那么接口就相当于是不同系统之间的交互点了。

二、接口测试常用工具

说到接口测试,最常见的一种测试方式就是检查服务端返回的数据正确性了。实际项目中,服务端在收到客户端的请求之后,对请求进行处理并将处理的结果返回给客户端,这种结果比较常见的是Json、XML等数据格式,所以测试的时候一个主要工作就是检查这些数据的正确性。比如,服务端以Json的格式返回客户端需要的数据,那么在测试中我们就需要关注返回的Json中是否包含我们期望的字段、字段的内容是否正确等等。这个时候自动化脚本就显得非常重要了。

小编在测试过程中发现好多接口都是以Json格式返回数据的,在实际执行中,我们用到了Python的一个开源框架Requests,该框架保留了所有urllib2的优点,比起urllib2更加简洁明了,更像是纯粹的“Python”,该框架在平时接口测试中几乎所有的自动化脚本中都在使用,关于该框架,小编之前在一次公开课中做过一次分享,有兴趣的话大家可以关注搜狗测试粉丝群(459645679)进行查看哦。

还有一些工具在实际的操作中用的比较多,比如Postman。Postman是谷歌Chrome的一个插件,使用起来非常简单,可以支持我们以get/post等各种方式发送请求,当然也可以自己构造请求,服务器返回的数据会全部展示出来,便于检查,这和Fiddler比较相似。此外Postman还支持用户自行构造环境,设置检查点等,不考虑时间的情况下基本能满足接口数据验证的需求。关于Postman的安装和使用教程,网上资源比较多,此处就不再赘述了。

接口测试的工具和自动化框架可谓非常多,除了上面罗列的之外,还有许多实践中比较常用的:urllib/urllib2,Jmeter等等,关于各种工具的使用和优缺点,小编会在后续的文章中结合自己项目的使用情况和大家进行分享。

三、接口测试的用例设计

不同于功能测试,接口测试的用例设计出了要验证正常功能之外,还需要考虑其他的一些情况,总结起来,接口测试的用例设计可以从以下几个方面入手:

1.功能用例设计

服务端的接口与客户端的功能是对应的,那么这个接口是否能提供给客户端某个特定功能所需要的数据自然是我们需要验证的地方,功能性用例的主要目的是帮助我们验证该接口最初设计的功能是否被实现以及该功能是否按照规定的接口文档进行实现等等。

2.业务逻辑用例设计

业务逻辑方面的测试用例主要是针对服务端接口的处理逻辑进行的用例设计,这种用例设计不是针对某个功能点是否实现,而是对接口的处理逻辑以及一些相互依赖的业务进行验证,通常依照接口的逻辑流程图来进行。举一个例子,购物系统中的两个动作:登录和下单操作,这两个业务是相互依赖的,下单操作必须在登录完成后(登录状态下),否则无法完成下单,这个时候我们就可以设计这样一条case:没有登录的状态下进行下单操作,看服务端如何处理。

3.异常处理的情况

服务端接口和客户端之间通常是通过HTTP请求来传递数据,在发送请求的时候,客户端会携带各种不同的参数,此时服务端会根据不同的参数进行不同的处理,所以异常处理主要是针对请求中的参数情况:比如参数增加和缺省、参数的数据类型错误,参数携带错误的值、参数为空等等,这需要我们根据接口文档中各种不同的参数去构造不同的参数异常,检查服务端的响应情况。

4.性能和安全性方面

服务器的性能往往是个非常重要的关注点,在实际的测试中我们主要关注的是接口的QPS数值,以及CPU和内存占用等性能指标,通常借助于其他工具比如LoadRunner进行性能测试。安全性方面,主要考虑一些常见的安全策略比如请求加密、sql注入等等。

以上向大家简单介绍了接口测试的一些基本概念,服务端测试是一个很庞大很复杂的过程,有自己的方法和特点,因此在后续的文章中,小编主要会就服务端测试的流程方法、工具使用以及踩到的坑和积累的经验与大家做分享,欢迎大家持续关注。

时间: 2024-10-16 21:15:31

服务端测试之接口测试初探的相关文章

服务端测试之接口测试用例设计

小伙伴们大家好,上一次和大家分享了<服务端测试之接口测试初探>,讲了一些接口测试的基本概念和理论知识.在上次的分享中,简单提到了接口测试用例设计包含的几个方面.本期我将在上次分享的基础上,和各位小伙伴一起具体看看这几个方面都是什么,在实际的项目中应该如何使用. 一.功能性用例设计 之前讲过,服务端的接口是和客户端的功能相对应的,对功能的验证,可以参照接口说明文档来进行.概括起来讲,就是我们需要验证接口说明文档中提到的各种情况,保证这些情况下接口的返回和最初设计的是一样的,这样我们就可以认为该接

如何利用cURL和python对服务端和web端进行接口测试

工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使用7.26.0,从这里可以下载7.26.0版本. 以下是官方介绍的翻译: cURL是一个使用URL语法来传输数据的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,S

WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探

Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事,但是对于那些实时要求比较高的应用来说,比如说在线游戏.在线证券.设备监控.新闻在线播报.RSS 订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了.所以保持客户端和服务器端的信息同步是实时 Web 应用的关键要素,对 Web 开发人员来说也是一个难题.在 WebSo

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十五║实战二:初探SSR服务端渲染(个人博客二)

缘起 时间真快,现在已经是这个系列教程的下半部 Vue 第 12 篇了,昨天我也简单思考了下,可能明天再来一篇,Vue 就基本告一段落了,因为什么呢,这里给大家说个题外话,当时写博文的时候,只是想给大家增加点儿学习的动力,每天提醒下,完全没有提纲或者安排说明什么的,就是按照我自己学的方向走,正好发现了一个规律就是:每一个系列正好是 1 个引子 + 12 篇正文,不知道大家对这个有没有感觉,大家可能看到我的头像就知道了,哈哈,其实我是一个红迷,正好这里机缘巧合,两个系列都形成了这样的,我自私的给自

接口测试初探(流程,文档,工具,技术)

什么是接口测试 接口测试是目前测试的主流手段之一,采用接口测试有很多优点: 提高测试效率:可通过自动化手段实现重复验证,也可以在依赖服务没有开发完成时优先测试部分服务 方便定位Bug:通过接口的抓包和分析,可以清楚的知道问题是来源于前端还是后台服务 提高服务端健壮性:通过接口测试可以测出来开发是否在后端做了校验,帮助提高服务的健壮性 对很多新手来说接口测试很高大上,但实际上接口测试很简单,掌握关键技术以后就可以把接口测试应用到日常工作中.开始讲解接口测试之前,先看看当你在浏览器中输入地址,并看到

美团外卖服务端的测试面试题居然泄……泄……泄……泄密了

点击链接加入QQ群 522720170(免费公开课.视频应有尽有):https://jq.qq.com/?_wv=1027&k=5C08ATe 1.列出你常用的linux命令 答:vim/touch/cat/tail/grep/cd/chmod/mv/rm等 2.测试接口时,常会遇到需要传入不同参数来测试不同场景,如何实现 答:自己写方法,并添加到test中去.详细代码后期补充. 3.浏览器中输入一个URL后,详细说明将会发生什么 答:1.解析URL 2.通过DNS找到域名对应的服务器IP 3.

项目二:企业级java电商网站开发(服务端)

声明:项目源于网络,支持正版教程,学习使用,仅记录在此 项目介绍 企业级java电商网站开发(服务端),模块划分:用户管理,商品管理,商品品类管理,订单管理,订单详情管理,购物车管理,收货地址管理,支付管理 集成工具使用idea,一个springboot项目,使用maven进行依赖管理,持久层使用mybatis(接口+mapper xml),没有前端页面,仅服务端开发,最后返回封装好的数据,以json方式呈现,可以使用postman工具,google浏览器的Restlet Client插件等进行

Spring Cloud官方文档中文版-服务发现:Eureka服务端

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server 文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation Service Discovery: Eureka Server 服务发现:Eureka服务端 How to Include Eureka Server 如何创建Eurek

ssh 服务端安全配置

更改ssh服务端配置文件 [[email protected] ~]# vi /etc/ssh/sshd_config Port 59118                 #ssh 连接默认端口为22 ,更改后提高安全级别 PermitRootLogin no         #禁止root用户远程登录 PermitEmptyPasswords no    #禁止空密码登录 UseDNS no                  #不使用DNS GSSAPIAuthentication no