接口联调测试工作总结

news2024/12/22 9:47:54

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

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).text
        print(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岁职业年龄限制,能干到退休,直至财富自由;愿测试技术越来越进步,软件质量进一步得到提高,效率提高。愿祖国更加美好,人民更加幸福。多喜乐,常安宁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三甲硅烷基胺(TSA)可用作半导体前驱体材料 南大光电为我国代表企业

三甲硅烷基胺(TSA)可用作半导体前驱体材料 南大光电为我国代表企业 三甲硅烷基胺(TSA)是一种无机化合物,分子式为(SiH3)3N,其外观呈无色流动性液体。三甲硅烷基胺具有易水解、自燃性…

Java面向对象的三大特性之一——继承

目录 一、继承概念 二、为什么要继承 三、继承语法(关键字extends) 四、父类成员访问 1、子类中访问父类的成员变量 (1)子类和父类不存在同名的成员变量 (2)子类和父类中存在同名的成员变量 2、子类中访…

CVPR 2024揭幕,清华大学论文接收量霸榜,轻松碾压斯坦福、麻省理工

CVPR2024 会议之眼 快讯 会议介绍 2024 年 CVPR (Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议,于6月17日至21日正在美国西雅图召开。CVPR是计算机视觉和模式识别领域的顶级会议之一。与ICCV和ECCV并称为计算…

Vue中使用ElementUI组件Form组件的校验validate

先准备一些el-form元素 这里面el-form中:model(v-bind:model)是单项绑定的,如果你写成了v-model""可能会出现校验没有效果的情况。 这是校验过后的结果了 现在开始使用下吧! 1.在el-form中绑定一个ref,名字自拟,后续触发检验结果…

ASM字节码插桩技术初探

一、ASM简介 ASM(全称:ASMifier Class Visitor)是一个java字节码操纵框架,ASM 提供了许多 API 和工具,可以直接以二进制形式读取和修改类文件、动态生成类或者增强既有类的功能。 1、 ASM 主要作用 asm用于生成、编辑、分析java的class…

仿真模拟--telnet服务两种认证模式(自作)

自己做的笔记,有问题或看不懂请见解一下~ 目录 两个路由器间实现telnet服务(password认证模式) server client 两个路由器间实现telnet服务(aaa认证模式) server client 改名 tab键补齐 不会就扣问号 ? save 两个路由器间实现telnet服务…

【车载开发系列】CAN通信总线再理解(中篇)

【车载开发系列】CAN通信总线再理解(中篇) 九. CAN总线标准十. CAN物理层十一. CAN数据链路层1)CAN的通信帧类型2)CAN的标准帧格式1. CAN ID2. 数据场 3)CAN总线仲裁 十二. CAN应用层1)CANopen2&#xff09…

蚓链数字化营销系统,开启企业无限可能!

蚓链数字化营销系统带给企业的不仅仅是卖货方案,其重要的是让企业具备拥有融合资源的能力、实现在更多业态跨界赚钱的能力、及打造品牌价值的能力。 在当今数字化时代,蚓链数字化营销系统正为企业带来新的变革与机遇。它所赋予企业的,绝非仅仅…

[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering

信息收集 Server IP AddressPorts Opening192.168.8.100TCP:21,8009,9001 $ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT Nmap scan report for 192.168.8.100 (192.168.8.100) Host is up (0.00…

Python学习打卡:day11

day11 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1183、自定义 Python 包创建包导入包方式1方式2方式3方式4 84、安装第三方包安装第三方包——pippip的网络优化 安装第三方包——PyCharm 85、…

【DKN: Deep Knowledge-Aware Network for News Recommendation】

DKN: Deep Knowledge-Aware Network for News Recommendation 摘要 在线新闻推荐系统旨在解决新闻信息爆炸的问题,为用户进行个性化推荐。 总体而言,新闻语言高度凝练,充满知识实体和常识。 然而,现有的方法并没有意识到这些外部…

Cesium源码解析六(3dtiles属性获取、建筑物距离计算、建筑物着色及其原理分析)

快速导航 Cesium源码解析一(搭建开发环境) Cesium源码解析二(terrain文件的加载、解析与渲染全过程梳理) Cesium源码解析三(metadataAvailability的含义) Cesium源码解析四(metadata元数据拓展…

【因果推断python】46_估计量2

目录 连续型干预变量案例 非线性处理效果 关键思想 连续型干预变量案例 目标转换方法的另一个明显缺点是它仅适用于离散或二元处理。这是你在因果推理文献中经常看到的东西。大多数研究都是针对二元干预案例进行的,但您找不到很多关于连续干预的研究。这让我很困…

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题: 4. String类oj4.…

使用虚拟滚动条优化通过el-collapse展示多条数据的性能问题

我们将一个10000条的数据通过el-collapse展示出来,同时在点开每一个item时,要内置一个编辑器,对文本内容进行编辑。其实,如果仅10000条数据的文本的单独展示,可能性能不会太差,但由于每一条都需要带有一个文…

web中间件漏洞-jboss部署war包

web中间件漏洞-jboss部署war包 攻击机服务器准备好的ma.war

FreeBSD在zfs挂接第二块ssd 硬盘

为FreeBSD机器新增加了一块ssd硬盘:骑尘 256G 先格式化分区硬盘 进入bsdconfig 选Disk Management 选择ada1 ,也就是新增加的硬盘 选择auto 然后选择Entire Disk 提示信息 The existing partition scheme on this disk (MBR) │ …

Python数据科学 | 是时候跟Conda说再见了

本文来源公众号“Python数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:是时候跟Conda说再见了 1 简介 conda作为Python数据科学领域的常用软件,是对Python环境及相关依赖进行管理的经典工具,通…

容声神助攻!欧洲杯最刺激一战诞生,神来之笔背后有高人

2-2,当比分最终被定格在这个数字时,克罗地亚的老将们即使职业生涯已经经历了太多太多惨烈的比赛,此刻依然难掩心中的复杂情绪。 欧洲杯开赛至今最刺激的一战,从0-1落后的长时间焦虑,到下半场3分钟扳平反超的狂喜&…

【嵌入式Linux】<总览> 文件IO(更新中)

文章目录 前言 一、常用函数 1. open函数 2. close函数 3. write函数 4. read函数 5. dup函数 6. dup2函数 二、文件读写细节 1. 换行符 2. 文件描述符 3. errno和perror 前言 在Linux系统中,一切皆文件。因此,掌握Linux下文件IO常用的函数…