本文将学习1.接口测试的基本概念,包括什么是接口,什么是接口测试,为什么要进行接口测试2.接口测试用例设计3.不用怎么写代码,根据开发的API文档,快速完成接口自动化测试脚本。注意:如果熟悉接口的基本概念和接口测试用例,可以直接跳过。适合本文人群1.之前学习过接口测试从入门到放弃的初级测试工程师2.想快速完成接口测试脚本编写的测试工程师(强烈推荐)3.由于某些原因(例如,公司没有专职测试人员),需要自己的开发人员编写接口测试脚本(强烈推荐)1.接口测试的基本概念首先了解被测对象:接口接口指的是外部系统和系统之间的交互点内部子系统。包括外部接口,内部接口,内部接口包括:上层服务和下层服务接口(比如serivce层调用DAO层接口),同级接口(比如用户注册,会先调用查询用户的接口检查用户是否注册的信息)。不管是内部接口还是外部接口,通常都是以API的形式出现。通常,标准的API接口文档应该包括:接口说明、接口URL、请求方法、请求参数、参数类型、参数含义说明、取值限制、是否必填、返回参数、成功失败示例等。然后理解接口上的测试活动:接口测试的广义理解是测试模块或系统之间的接口;接口测试狭义的理解就是测试接口的输入参数,接口处理逻辑,设计的返回内容。接口测试形式:单一接口测试(包括性能测试)和通过接口调用的场景测试。接口测试原理:自己使用工具或代码模拟客户端(根据测试用例定义请求参数)向服务端请求访问接口,检查服务端返回的内容是否与预期一致价值。接口测试流程(仅指迭代流程):需求评审->接口定义->用例设计->脚本编写->执行脚本->结果分析终于明白接口测试的意义,即:whyitiseasy做接口测试,也就是说,降低测试成本,提高开发效率。全面来说:1.接口测试相对容易实现自动化持续集成。2、接口测试可以让测试及早介入,发现潜在的问题;保证接口质量,提高前后端联调开发效率。3、接口测试更容易进行安全校验:前后端是否统一校验,打印敏感信息(接口返回内容中的敏感信息)是否加密。2.界面测试用例设计这里只讲单一界面测试用例设计,场景界面测试用例设计和UI功能场景测试用例一样,只是通过调用接口实现。接口测试用例的设计主要从接口入参、接口处理逻辑、接口返回参数三个方面入手:1.设计接口入参测试用例。常见的参数类型包括:数值、字符串、数组或链表,以及结构体这些类型的输入参数,通常我们使用等价类方法和边界值方法来设计测试用例等价类方法:注意情况其中值在范围内,值在范围外;通常当值超出范围时,接口没有正确返回错误信息。边界值法:关注取值范围的边界值和输入参数的数据类型边界值;通常会出现数据类型边界值溢出的问题,比如int类型数据的最大值和最小值。为了补充用例,还要考虑特殊值的情况,比如0、空、null、负数、非特定类型值和重复值等;通常会出现接口没有正确处理逻辑导致异常退出的问题。2、设计接口处理逻辑测试用例,主要验证前后端是否统一验证。对于接口处理逻辑,从角度分析:约束条件分析,常见的约束条件:数值限制、状态限制(登录状态)、关系限制(绑定某种关系)、权限限制(会员、非会员等)).操作对象分析,例如项目ID为PJ000,属于用户A,访问该项目的接口,需要传递项目ID。用户B传参时,使用PJ000的ID时,检查该项目是否应该不可访问。状态变迁分析,如优惠券已使用,是否还能通过接口使用等。时序分析,如不按流程顺序执行,是否有数据异常。3、设计接口返回参数测试用例对于接口处理逻辑,从以下几个角度分析:返回结果分析,覆盖所有返回码。接口超时分析,一般会出现接口超时,没有进行超时处理,导致进程阻塞或者超时后返回接口,导致逻辑错误。3、不用写代码也能做好接口测试:NoCode,StillAPITest不用写代码也能做好接口测试。当然,你需要借助神器来完成这项工作。这个神器叫做:eolinker,官网https://www.eolinker.com在使用eolinker之前,我是用jmeter进行接口测试的。在使用jmeter之前,我使用的是python请求。我觉得jmeter效率更高,效率高体现在:1.测试不需要写代码,大家都知道用测试代码写测试脚本和开发写产品代码是一样的。需要编写-调试-测试-维护。对于测试来说,太费时间和精力了,除非公司有专人做测试开发。2.在UI模式下,你可以只填空。这很简单。顶多可以用Beanshell写少量的函数调用或者断言来做接口测试。你只用eolinker的自动测试功能模块。其他功能在官网注册账号后,可自行学习。eoLinker自动化测试功能模块的特点也是我选择的原因:1、开发的API文档的编写和测试接口测试脚本的编写都可以在eolinker上进行,所以在编写测试脚本的时候,你可以直接从eolinker的API文档中读取功能模块,导入API接口,编写测试脚本只需要添加断言和需要传递的参数即可。2.支持UI和Code编写模式,即可以通过填写UI完成测试脚本设计,也可以通过编写JS代码完成测试脚本设计。有官方教程。3.调用上一个接口的返回参数内容作为当前接口的请求参数。eolinker提供了关联功能,只需点击几下即可完成,比Jmeter方便多了。4、还提供了比较高级的代码注入功能,可以在请求接口前做一些预处理,比如请求参数值加密等,或者对返回内容进行后处理,比如返回的某个字段接口内容Value,设置为全局变量5.测试结果断言提供4种方式:Json校验、XML校验、精确匹配、正则匹配,用的最多的是Json校验,如果要校验某个字段的内容,不用写Regular,直接验证的字段名即可。6、测试用例可以定时执行,执行后将测试报告发送至指定人员邮箱。接口测试用例脚本编写流程:开发编写API接口文档->导入开发好的API接口,并根据编写好的测试用例进行测试,编写测试用例以eolinker的“添加接口工程接口”测试为例,做主要工作如下:1、编写并添加名为“添加接口项”和“查询项列表”的API接口文档2、导入API接口,编写“添加项成功”的测试用例:a.添加项目并验证返回码。b.调用“查询商品列表接口”查看商品是否添加成功。(对于这种新接口,我之前验证过,我是先连接数据库,然后查表内容,发现执行脚本的时候,速度有点慢,后来用调用查询列表接口的方法进行验证)3.执行测试脚本,查看测试报告。预准备接口1:添加接口item接口add接口item接口请求header添加接口item接口返回内容接口2:查询item列表接口queryitem列表接口requestheader查询item列表接口returncontent从上面API文档信息获取2个接口:注意:在实际项目中,有完善的API文档。可能在Word上,可能在RAP上,也可能在eolinker上。我这里只是举个例子,通过F12取了2个接口的信息(如下),写了2个不完整的API文档作为本文的操作实例。接口一:添加接口项目接口URL:https://www.eolinker.com/apiM...请求方式:POST请求参数:companyHashKeyprojectNameprojectVersion:1.0projectType:0返回内容:{"type":"project","statusCode":"000000","projectHashKey":"Nr2PNlf82c6a7995d30286e041944fd40e4c01d58b3edeb"}接口二:查询项目列表接口URL:https://www.eolinker.com/apiM...请求方式:POST请求参数:companyHashKey返回内容:{"type":"project","itemNum":4,"statusCode":"000000","projectList":[{"projectHashKey":"83uUHhud0519435001f268f0871eee88090cc68dc00cac7","projectName":"demo_project","projectType":0,"projectDesc":"","projectUpdateTime":"2018-10-0818:26:57","projectVersion":"1.0","userType":0,"permission":{"userType":0,"endTime":"2099-01-01","isExpire":0}}]}Step1编写并添加名为“添加API接口管理项”和“查询项列表”的API接口文档1.添加API接口管理项接口API文档2.查询项目列表界面eAPIDocumentationStep2导入API接口,编写“添加项目成功”的测试用例注意:这里需要登录才能访问接口。这里我直接使用cookie模拟登录状态导入API接口,添加item,验证返回码。注意:这里使用正则表达式,因为返回的projectList是一个数组。在JSON验证中,目前不支持数组验证。编辑需要导入的API接口创建测试用例脚本Step3执行测试脚本查看测试报告执行测试脚本并查看测试报告这样很快就完成了一个测试用例脚本写好了!(点击所有的测试,去泡杯茶,回来看测试报告,这一天指日可待!!)补充:1.关于登录和获取接口授权的处理,可以是写在pre-usecases(也有post-usecases),作为pythonunittest2的setUp和tearDown的功能。有一个单独的环境管理模块,包括设置默认主机名,请求头信息,全局变量和附加参数等,见上图环境管理界面。最后总结:本文学习接口测试作者描述了接口,什么是接口测试。在了解接口测试的基本概念后,进而掌握接口测试用例的设计方法和思路,最终利用优秀的工具达到简单快速的工作效果;个人意见,不喜喷:有些测试可能会用大量的代码来写自动化测试脚本,以表明你也是一个开发人员。你可以写代码。我还在文章中提到,编写测试代码的成本非常高。开发方面,我们可以开发一些测试工具来辅助自己的测试工作,一是锻炼开发能力,二是了解软件运行原理,方便测试过程,更加清楚软件的内部结构;项目通常给我们的测试时间不多,为了保证项目按时保质保量完成,简单快速的工作状态是我们迫切需要的,所以我们可以借助一些优秀的工具来实现我们的目标。结尾...
