接口测试的定义—全栈软件测试自动化(13)

发表于:2020-7-27 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵旭斌 余杰    来源:51Testing软件测试网原创

  5.5  接口测试的定义
  接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间及内部各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的逻辑依赖关系等。简单地说,接口测试就是通过URL向服务器或者其他模块传输数据,然后看看它们返回的数据是不是预期的。
  5.6  接口测试的必要性
  做接口测试主要有以下几个原因。
  (1)发现底层的Bug,降低修复成本。
  (2)只要接口测试完了,后端就不变了,前端的变化也不会影响后端。
  (3)检查系统的安全性、稳定性。
  (4)系统的复杂度不断上升,传统测试方法的成本急剧增加且测试效率不断下降,针对这些情况,接口测试可以提供好的解决方案。
  (5)接口测试不同于传统的单元测试,接口测试是站在用户的角度对系统接口进行全面、高效、持续的测试。
  (6)通过接口自动化测试可以实现自动化持续集成,且相对UI自动化测试来讲,其稳定性大幅度增加,可以减少人工回归测试成本,缩短测试周期,满足后端快速发布的需求。
  (7)现在很多系统的前后端架构是分离的,从安全层面来说进行接口测试有以下好处。
  ① 只在前端限制访问已经不能满足系统的安全要求,需要在后端进行控制,因此需要从接口层面进行用户访问验证。
  ② 前后端传输、日志打印等信息是否加密传输需要验证,特别是涉及用户的隐私信息,如身份证、银行卡等,也需要进行接口测试。
  5.7 怎样做接口测试
  如果项目前后端调用主要基于HTTP接口,可以通过工具如工具Postman、JMeter、SoupUI等;或代码模拟HTTP请求的发送与接收,也可以用接口自动化来实现,即用测试代码实现,后面会介绍用Python 3来实现接口测试自动化的整个过程。
  5.8 接口测试的测试点
  目的:测试接口的正确性和稳定性。
  原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文进行处理并向客户端返回应答,客户端接收应答。
  重点:检查数据的交换、传递,控制管理过程,以及处理的次数。
  核心:持续集成。
  优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本)。
  对于测试用例设计,通常情况下主要测试最外层的两类接口—数据进入系统的接口(调用外部系统的参数为本系统使用)和数据流出系统的接口(验证系统处理后的数据是否正常)。
  问题1:后端接口测试的测试内容是什么?
  对于这个问题,我们可以从接口测试活动内容的角度回答,图5.2所示为一些项目后端接口测试的主要内容。
  图5.2  后端接口测试的主要内容
  问题2:后端接口测试一遍,前端接口也测试一遍,是不是重复测试了?
  对于这个问题,我们可以通过对比接口测试和App端测试活动的内容进行回答,图5.3所示是App端测试的内容。
  图5.3  App端测试的内容
  对比图5.2和图5.3可以看出,两个测试中相同的部分有功能测试、边界分析测试和性能测试。对于其他部分,由于各自特性或关注点不同,需要进行特殊的测试,在此不做讨论。接下来我们针对以上3部分相同的内容进行分析。
  功能测试
  由于测试是针对基本业务功能进行的,因此这部分是上述两种测试中重合度最高的一块业务,开发人员通常所做的测试也主要是针对这部分的内容。
  边界分析测试
  在功能测试的基础上考虑输入/输出的边界条件,这部分内容也会有重复的部分(如业务规则的边界)。但是,前端的输入/输出很多时候提供固定的值让用户选择(如下拉框),在这种情况下,测试的边界范围就非常有限,但接口测试不存在这方面的限制,相对来说接口测试覆盖的范围更广。同样地,接口测试发现问题的概率也更高。
  性能测试
  虽然前后端都需要做性能测试,但其关注点不相同。App端性能测试主要关注与手机相关的特性,如手机CPU、内存、流量、帧率等;而接口性能测试主要关注接口响应时间、并发、服务端资源的使用情况等。因为两种测试的策略和方法有很大区别,所以这部分内容需要单独进行测试的。
  综述
  (1)接口测试和App端测试有部分重复内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行针对性的测试,才能确保整个产品的质量。
  (2)接口测试关注于服务器逻辑验证,UI测试关注于页面展示逻辑及界面前端与服务器集成的验证。
  (3)对于接口测试而言,持续集成自动化是核心内容。通过持续集成自动化的手段,才能做到低成本、高收益。除了实现接口测试的自动化之外,还需要包括下面的内容。
  ① 在回归阶段提高接口异常场景的覆盖率,并逐步向系统测试、冒烟测试阶段延伸,最终达到全流程自动化测试。
  ② 实现更加丰富的结果展示、趋势分析、质量统计和分析等。
  ③ 具有更准确的报错信息、日志,方便复现与定位问题。
  ④ 加强自动化校验能力,如数据库信息校验。
  (4)接口测试的质量评估标准如下:
  评估业务功能覆盖是否完整;
  评估业务规则覆盖是否完整;
  评估参数验证是否达到要求(边界、业务规则);
  评估接口异常场景是否完整覆盖;
  评估接口覆盖率是否达到要求;
  评估代码覆盖率是否达到要求;
  评估性能指标是否满足要求;
  评估安全指标是否满足要求。
  (5)接口测试的其他意义。
  在工作的流程上,各个测试“角色”是可以互补的,接口测试的设计、用例可以与功能测试和性能测试共享;接口测试的报告可以作为功能测试的重要参考,让工程师了解底层都进行了哪些测试,哪里是缺陷的重灾区,哪里相对安全一些等。在功能测试工程师找到缺陷之后,接口测试工程师可以用代码直接覆盖这个缺陷并将其加入持续自动化测试中,使这个已知的缺陷在后续的版本中,不会成为“漏网之鱼”。
  接口测试工程师可以直接对底层系统进行接口的性能测试和压力测试,不用先测试UI,减少了测试成本,为系统安全提供全方位的质量保障。

查看《全栈软件测试自动化 SeleniumAppium (Python版)》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号