zoukankan      html  css  js  c++  java
  • 0223 研发工程师如何提高接口质量?

    背景

    最近团队中把只会做功能测试的测试岗位去掉了,那么软件质量的保证就落到了开发人员和产品人员的工作职责中了,不说这完全是一件坏事,这为开发岗位提出了更高的要求。

    为了适应团队的变化,找了一门小课程补充了一下关于接口测试的知识和思维。本文是学习完毕之后的一个小结。
    当成是学完之后的一个收货的输出,希望可以帮到相关的研发同学。

    主要内容

    软件测试的主要内容是:
    image.png

    测试工程师做的最多是界面测试,而研发工程师由于实际工作环境的限制,可能只做过少量的单元测试和少量的单接口功能测试;

    那如何在没有或者缺少测试工程师的情况下保证基本的软件功能的质量呢?
    那就是研发工程师去做接口测试这个事情,这个是跟业务逻辑最近的测试工作。至于单元测试,当然也要做,但是那本来就是属于研发工程师的本质工作,这里不讨论。

    那么结合新的团队情况,软件测试的情况变成了下面这样:
    image.png

    研发工程师通过接口测试最大限度的保证了提供的接口的高质量,界面测试交给前端工程师和产品人员去做;
    在满足接口测试的基础上,单元测试可以少做或者不做,因为接口测试通过了,单元测试基本也没问题。

    在研发工程师写完接口测试代码之后,挂接到持续集成工具中,就实现了接口的自动化测试,研发的产品质量更上一个台阶。

    首先需要明确几个概念;

    接口

    满足特定输入得到特定输出的逻辑处理单元,比如http接口,dubbo接口,websocket接口,物联网设备接口等

    接口测试

    验证某个接口符合预期,在特定的输入下,得到特定的输出;在不满足特定输入的情况,得不到特定的异常输出。
    接口测试分为单接口测试和流程测试;
    单接口测试: 找到接口文档,按照约定来验证;
    流程测试:根据产品需求设计,编排单接口,验证需求内容;

    接口测试的本质

    模拟一个客户端调用接口,通过输入和输出检查逻辑处理是否按照预期设计来。

    下面按照测试测试大法,进行心法修炼。

    初级测试

    完美的提测项目:

    1. 产品需求文档
    2. 原型设计文档
    3. 接口文档(swagger)
    4. 单元测试脚本

    在编码能力欠缺的情况下,可以熟悉工具的使用:

    比如: fidder抓包,postman接口模拟,jmeter接口模拟,selumn录入界面测试脚本等;

    在文档缺失的情况下,善于使用抓包工具得到软件的接口协议,并记录疑问;

    然后通过跟产品,研发工程师的沟通,得到完善的接口协议;

    写好测试用例是基础,测试用例一般写在xls中或者持久化存储到数据库中;

    如果是由研发工程师去做这种程度的事情,
    首先,单接口协议是很明确的,沟通成本很低,如果刚好是自己写的软件接口,沟通成本为0,如果不是自己开发的接口,也可以很快的得到单接口的文档;
    其次,实现的过程当中,必须是非常的理解整个业务流程的,对接口的编排不会有理解上的偏差;
    最后比较费时间的是测试用例的编写,只要花点时间,对接口的条件进行排列组合,得到测试用例其实只是时间问题。

    中级测试

    具备编码能力,那么测试的功力就又增加了一级了。

    可以学习一些测试工具类:

    比如:
    Http工具:

    模拟htt的客户端,按照接口协议调用

    Rest工具:

    模拟http的客户端,基于接口协议,按照rest风格调用

    WebSocket工具:

    模拟websocket客户端,基于协议调用

    Mock工具:

    对微服务的场景,如果依赖的服务没有开发完毕,可以mock,快速验证单个微服务

    从xls或者数据库中读取测试用例数据:

    集中管理测试数据

    然后就可以熟练的写各种客户端代码,模拟接口调用了。

    然后把代码放进团队的git代码仓库中;

    对测试工程师来说,编码能力天然就弱一些,学习这些意味着做界面验证的时间减少了。

    而对于研发工程师来说,这些天然的就是基本编程技能,即使不太熟悉,学习起来也是非常快速的事情;

    高级测试

    具备测试思维,可以持续的封装接口测试代码,形成团队适用的接口框架或者平台;

    测试框架

    对接口测试的过程中使用的代码进行进一步的抽象和封装,形成一个测试脚本编写的框架,后续的接口测试和流程测试按照规则实现即可,并可以推广到其它的研发工程师,研发团队;

    测试平台

    合理管理各个测试的接口文档资源,和流程资源,跟持续集成工具打通,形成自动化测试;

    小结

    工具层面

    熟悉常见工具的使用,比如:
    抓包工具:fidder;
    **接口模拟工具: **postman,jmeter;

    技术层面

    站在java工程师的角度,需要熟悉以下技术:


    junit工具包
    http工具包
    RestTemplate工具包
    WebSocket工具包
    Mockito工具包
    swagger文档生成


    通过课程的学习,得到的是一些理论,更多的还是需要在工作中实践,可以从一个实际的微服务项目出发,搭建自己的测试框架,并不断的完善,完善之后,跟其它的工程师和其它团队宣讲,建立一个自动测试平台,从而让自己的能力和价值更上一个台阶。

    希望对所有看到的小伙伴能有帮助。奔向更高的职业台阶。

    softqa.pngfile

    原创不易,转载请注明出处。

  • 相关阅读:
    python eval() 进行条件匹配
    spring boot 学习
    JAVA基础
    在mac上进行JAVA开发
    移动端开发基础【8】页面生命周期
    数据挖掘【1】概述(引言)
    项目管理【26】 | 项目成本管理-规划成本管理
    项目管理【24】 | 项目进度管理-控制进度
    项目管理【25】 | 项目成本管理-成本管理概念
    操作系统【8】 Linux虚拟内存和物理内存
  • 原文地址:https://www.cnblogs.com/snidget/p/12349290.html
Copyright © 2011-2022 走看看