当前位置: 首页 > news >正文

接口联调测试工作总结

接口联调测试工作已经告一段落,现在总结如下:

1、首先接口联调测试的价值

2、接口联调要有工作思路

3、接口联调工作准备

4、接口联调测试数据设计

5、接口联调脚本研发

6、脚本联调测试

测试业务本身需要接口联调调用

独立接口正确,但有可能接口联调时会报错

提高接口测试脚本的复用性,降低接口脚本的维护成本

为后续的测试框架的设计合实现做好准备工作

1、接口联调工作分析及设计

1.1需求:对多个接口组成的联调测试的脚本 进行结构优化

# 1、用户注册

# 2、用户登录

# 3、忘记密码

# 4、提交密保问题答案

# 5、回答完密保问题后修改密码

1.2、工作步骤

1、设计接口联调流程

2、每个接口的一些参数用postman进行确认

3、依据接口设计要求,完善所有接口的参数说明文档。

4、类的设计,方法的设计

设计一个类及方法,

先实现一个接口的测试

逐步实现其他接口的类及方法的编写,实现一个调试一个

5、脚本结构优化,提升代码的复用性。

V1.0: 一个方法一个接口测试

V2.0:可以合并的类似的接口方法进行结构优化

V3.0:进行接口测试数据的参数化
        csv测试数据文档,脚本参数化,只需要维护测试数据即可实现任意多个参数的测试

V4.0:进行接口测试报告的编写

6、工作问题随时记录

2、接口联调脚本设计

2.1 类图的设计:

类名称:workflow_forgetpassword_v2

属性包括属性名和属性类型

方法:包括方法名,是否需要参数,是否需要返回值。

 这个里面,用户注册、用户登录、忘记密码可以优化成一个接口联调的测试类workflow_forgetpassword_v2,需要从main函数中传入url,userinfo,expresult的参数。4和5需要传递token,因此不能和123写在一起。

2.2  接口测试方法流程的设计


    1、获取接口访问地址
    2、明确接口测试数据
    3、向服务器发送请求
        get
        post
    4、获取服务器端的响应结果
    5、依据接口设计要求
            实际接口返回值与设计要求是否一致
            给出测试结论
            适用find方法查找字符串

2.3  特殊注意的地方

    某些接口的测试参数可能来自于其他接口的实际返回值

     接口的测试方法需要进行参数或返回值的定义

2.4  测试过程中

一旦发现接口的缺陷,及时的进行bug报告的编写,及时提交开发进行审核或修复。

3、脚本中用到的技术

3.1 与类相关的

1、类的定义   class 类名():

2、其他python中类的引用    

        适用于多人同时进行测试脚本的研发

        from模块名.文件名  import 类名

3、类对象实例化    对象名=类名()

4、类的属性    写在类的初始化方法中   def __init__(self):

5、类的方法    def 方法名(self,其他参数):

3.2  发送请求并接受响应

导入包

import requests

发送接口post请求

response=request.post(url,data=...).text

发送接口get请求

response=request.get(url,data=...).text

3.3 对接口返回的响应结果进行比对

r=response.find("预期结果")

if r>0:   表示存在预期结果

                测试通过

else: 

                测试失败

3.4  读取测试数据从csv文件中

import csv

file = open("测试数据文件名.csv","r")

table=csv.reader(file)

for row in table:

row[0]  

下标从0开始

3.5 将测试结果写入文件中

将测试结果写入文件中
    file=open("测试报告文件名.csv","方式")
        w方式
            覆盖写入
                把文件进行一个清空
                重新写入新的内容
        a方式
            追加写入
                不清空以前的内容
                在文档的后面继续写入
    file.write("相关内容")
        使用,号可以进行分割
        使用/n来进行回车换行
    file.close()
        关闭文件
    注意:如果有写文件的内容,在程序执行前,必须把对应文件关闭

3.6 根据代码转化为流程图

代码如下所示:

# 把测试脚本结构优化,脚本参数化,以及测试报告所有的技术进行合并V6.0
import csv
import requests# 定义测试类
class workflow_forgetpassword_v6_test():# 接口测试通用脚本def userinterface_test(self, url, userinfo, expresult, interfacename):# 定义字典数据,存储实际接口响应结果和测试结论resultdate = {}# 发送注册请求,并获取响应response = requests.post(url, data=userinfo).textprint(response)resultdate["接口实际返回值"] = str(response)r = response.find(expresult)if r > 0:print(interfacename, "接口测试通过")resultdate["测试结论"] = "测试通过"else:print(interfacename, "接口测试失败")resultdate["测试结论"] = "测试失败"print(resultdate)return resultdate# 把相关的测试结论写入测试报告def result_report(self,reportfilename,resultdate,interfacename):file=open(reportfilename,'a')for key,value in resultdate.items():file.write(interfacename+","+key+","+value+",")file.write("\n")file.close()if __name__ == '__main__':workflowobj=workflow_forgetpassword_v6_test()reportfilename="testresultnew.csv"file=open("test1.csv","r")table=csv.reader(file)for row in table:#逐行读取相关内容,并将其设置为相关的参数url=row[1]expresult=row[3]interfacename=row[5]print("url=", url, "  ", "expresult=", expresult, " ", "interfacename=", interfacename)# 读取接口测试数据userinfo = {}resultdata={}j=int(row[6])for i in range(7,j*2+7,2):userinfo[row[i]]=row[i+1]# 调用接口测试方法,传入接口测试数据resultdata=workflowobj.userinterface_test(url, userinfo, expresult, interfacename)#调用写入测试报告文件,传入测试结论及实际接口参数workflowobj.result_report(reportfilename,resultdata,interfacename)

流程图如图所示:

4、常见脚本编写问题

4.1、心理问题

代码能力弱
    1、练习多少?自己写过多少行代码
        统计
            一个工作至少重复10遍
    2、出现的代码问题是哪一类的?
        思路没有,思路混乱
            画流程图
                把自己写过的代码转化为流程图
            缺少整体编程观念
    3、不细心,不严谨
        语法错误
        多次犯了不该犯的错
            1、先记录到本子上
            2、每次错误都记录一遍
            3、响应的惩罚措施
                超过5次以上
                少吃一顿饭
    4、举一反三
        思考力提升

        一定要在工作过程中,项目实践过程中,把自己的心态调整正确了,加上一个正确的方法,一个正确的思路,加上勤奋的实践,做成一件事情还是比较容易的。所以一定要仔细的分析一下,你在整个的过程中,你的问题主要出在哪里,比如对接口的设计是不是很清楚啊,对设计是不是很明确呢,设计数据时是不是很仔细呢?调试代码时是不是很耐心呢?判断自己哪里不足,自己有重点的做一些训练,才能提升我们的工作能力,转化成我们的成果物,对我们的公司,在我们工作中才能发挥价值。

4.2 方法问题

1、写代码不要求快
    先写注释
    发现问题,加入print调试语句
    逐行逐个方法单独调试,逐个编写,逐个调试

    由简到繁,逐步优化
    把错误要进行记录和总结

2、注意脚本的请求方法以及传参合返回值的特点,基本一致才可以进行脚本结构的优化,否则还是要单独编写。

3、测试数据的设计尽量明确统一,脚本和数据文档的设计要相一致。

4、先进行技术试验,再进行脚本研发

先进行类及方法的设计,再进行具体实现。

4.3  编码难度

相比于开发而言,测试的工作难度主要集中在灵活性,同一个脚本能否处理多项测试。

4.4 FAQ及解决方法:
        

        愿每个测试都能顺利转为测试开发,提高职业技能,成为前1%的存在,为社会创造更大的价值,为自己和家庭谋求更高的收入,所有人不受35岁职业年龄限制,能干到退休,直至财富自由;愿测试技术越来越进步,软件质量进一步得到提高,效率提高。愿祖国更加美好,人民更加幸福。多喜乐,常安宁。

相关文章:

  • Python 设计模式(第2版) -- 第二部分(结构型模式)
  • Java启动jar设置内存分配详解
  • JWT整合Gateway实现鉴权(RSA与公私密钥工具类)
  • 示例:WPF中DataGrid简单设置合并列头
  • 数据结构和算法之复杂度比较
  • 数据治理:如何通过优化数据提取流程提高数据分析效果
  • 使用 Python 中的美丽汤进行网络数据解析的完整指南
  • python从入门到精通6:变量类型
  • ES6数组新增API
  • Jenkins简要说明
  • uniapp中u-input点击事件失效
  • 流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-TS的详细介绍、应用场景及对比
  • 高通Android13 WIFI配置国家码
  • 汇聚荣做拼多多口碑怎么样?
  • FLEXPART拉格朗日粒子扩散模式建模技术及研究大气污染物源-汇关系
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 345-反转字符串中的元音字母
  • chrome扩展demo1-小时钟
  • Cookie 在前端中的实践
  • JavaScript对象详解
  • Java编程基础24——递归练习
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • laravel with 查询列表限制条数
  • MYSQL 的 IF 函数
  • Object.assign方法不能实现深复制
  • PAT A1050
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 观察者模式实现非直接耦合
  • 前嗅ForeSpider采集配置界面介绍
  • 少走弯路,给Java 1~5 年程序员的建议
  • 从如何停掉 Promise 链说起
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #QT(QCharts绘制曲线)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (zt)最盛行的警世狂言(爆笑)
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (七)理解angular中的module和injector,即依赖注入
  • (三)c52学习之旅-点亮LED灯
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (算法二)滑动窗口
  • (一)SpringBoot3---尚硅谷总结
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 后台导出excel ,word
  • .NET设计模式(11):组合模式(Composite Pattern)
  • ::前边啥也没有
  • @Data注解的作用
  • @JsonFormat与@DateTimeFormat注解的使用
  • @RestControllerAdvice异常统一处理类失效原因