接口联调测试工作总结

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

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

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

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

相关文章

如何用Vue3打造一个令人惊叹的极坐标图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 Vue3-ApexCharts 绘制极地区域图 应用场景 极地区域图常用于展示具有周期性或分类性数据的分布情况,例如不同月份的销售额、不同年龄段的人口分布等。 基本功能 此代码使用 Vue3-ApexChart…

平安养老险黄山中支开展“反洗钱电影送下乡”活动

为不断增强反洗钱教育宣传的精准性和有效性,提升乡村群众的洗钱风险防范意识,6月18日,在中国人民银行黄山市分行的部署和指导下,平安养老保险股份有限公司(以下简称“平安养老险”)黄山中心支公司、平安人寿…

Python基础教程(二十六):对接MongoDB

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

COSMOSPANDA星际熊猫X 2024广州童博会|聚焦星潮,潮酷无限

中国国宝级原创潮玩IP COSMOSPANDA星际熊猫 震撼亮相2024广州童博会现场 聚焦星潮,潮酷无限 星际熊猫亮相展馆C位 3天展期、400㎡展位 超大型潮玩原创艺术装置 潮玩艺术,打造强烈视觉冲击 外贸中心周善青副主任代表中国第一展广交会前来巡馆 星际…

虚拟机配置桥接模式

背景 因为要打一些awd比赛,一些扫描工具什么的,要用到kali,就想着换成一个桥接模式 但是我看网上的一些文章任然没弄好,遇到了一些问题 前置小问题 每次点开虚拟网络编辑器的时候都没有vmnet0,但是点击更改的时候却有vmnet0 第一步: 点击更改设置 第二步: 把wmnet0删掉 …

构建高效的大数据量延迟任务调度平台

目录 引言系统需求分析系统架构设计 总体架构任务调度模块任务存储模块任务执行模块 任务调度算法 时间轮算法优先级队列分布式锁 数据存储方案 关系型数据库NoSQL数据库混合存储方案 容错和高可用性 主从复制数据备份与恢复故障转移 性能优化 水平扩展缓存机制异步处理 监控与…

【代码随想录】【算法训练营】【第44天】 [322]零钱兑换 [279]完全平方数 [139]单词拆分

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 44,周四,坚持不住了~ 题目详情 [322] 零钱兑换 题目描述 322 零钱兑换 解题思路 前提: 思路: 重点: 代码实现 C语言 [279] 完全…

(创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据

目录 一、主要内容: 二、运行效果: 三、VMD-BiLSTM负荷预测理论: 四、代码数据下载: 一、主要内容: 本代码结合变分模态分解( Variational Mode Decomposition,VMD) 和卷积神经网络(Convolutional neu…

视频去水印,视频去水印软件

有时候我们在网上下载了一些喜欢的视频,但是却发现上面有水印,影响观看体验。今天我就来教大家一个轻松去除视频水印的简单的方法。 一、使用专业视频编辑软件去水印 市面上有很多专业的视频编辑软件,如Adobe Premiere Pro,它们都…

代码大模型揭秘:从下载到推理,全流程体验StarCoder

选择模型 模型榜单 大模型的发展日新月异,性能强劲的大模型不断涌现,可以实时关注开源大模型的榜单,选择合适自己的大模型 开源大模型榜单 开源代码大模型榜单 模型网站 目前主流的下载模型的网站就是 huggingface 全球社区,…

react实现窗口悬浮框,可拖拽、折叠、滚动

1、效果如下 2、如下两个文件不需要修改 drag.js import React from "react"; import PropTypes from "prop-types";export default class DragM extends React.Component {static propTypes {children: PropTypes.element.isRequired};static defaultP…

Python - 各种计算器合集【附源码】

计算器合集 一:极简版计算器二:简易版计算器三:不简易的计算器四:还可以计算器 一:极简版计算器 运行效果: import tkinter as tk import tkinter.messagebox win tk.Tk() win.title("计算器")…

Faiss:选择合适的索引Index

向量相似性搜索彻底改变了搜索领域。它允许我们高效地检索从GIF到文章等各种媒体,即使在处理十亿级别数据集时,也能在亚秒级时间内提供令人印象深刻的准确性。 然而,这种灵活性也带来了一个问题:如何知道哪种索引大小最适合我们的…

EE trade:现货黄金交易时间与操作技巧

现货黄金作为当今最为热门的投资方式之一,其独特的交易机制和高收益潜力吸引了大量投资者的关注。对于新手投资者而言,可能对于现货黄金交易完全是一片空白。因此,了解现货黄金的交易时间和操作技巧、掌握基本投资知识,是至关重要…

opencv的RGB 颜色表

RGB(255,23,140)是光的三原色,也即是红绿蓝Red,Green,Blue,它们的最大值是255,相当于100%。 白色:rgb(255,255,255) 黑色:rgb(0,0,0) 红色:rgb(255,0,0) …

【Spine学习13】之 制作受击动画思路总结(叠加颜色特效发光效果)

绑定IK腿部骨骼容易出错的一种方式, 要记住 如果按照错误方式绑定骨骼,可能移动IK约束的时候会另腿部的弯曲方向相反了 : 上节分享了攻击动作的制作思路总结, 这节总结受击思路。 第一步: 创建一个新的动画&#xff1…

【数学建模】——【新手小白到国奖选手】——【学习路线】

专栏:数学建模学习笔记 目录 ​编辑 第一阶段:基础知识和工具 1.Python基础 1.学习内容 1.基本语法 2.函数和模块 3.面向对象编程 4.文件操作 2.推荐资源 书籍: 在线课程: 在线教程: 2.数学基础 1.学习内…

智能猫砂盆是养猫必需品吗?三个好用品牌让你实现铲屎自动化!

随着现代社会的快节奏和压力增大,许多人开始因工作、旅行或其他紧急情况需要暂时离家,但这样的话,大家又要如何确保猫咪的猫砂盆在无人照料的情况下依旧保持清洁?尤其在炎热的季节,猫砂盆若长时间未得到清理&#xff0…

ENVI实战—一文搞定监督分类

实验1:利用ROI建立样本训练集和验证集 目的:学会利用ROI建立计算机分类时的样本集 过程: ①导入影像:打开ENVI,选择“打开→打开为→光学传感器→ESA→Sentinel-2”,将Sentinel-2影像导入到ENVI平台中。…

6.20学习总结

D - 刻录光盘https://vjudge.net/problem/%E6%B4%9B%E8%B0%B7-P2835 思路&#xff1a; 利用并查集和弗洛伊德&#xff0c;对需要传递的对象都进行标记&#xff0c;经过处理后使他们的父亲发生相应的改变&#xff0c;最后对数组进行查询累加即可 代码&#xff1a; #include<…