接口测试工具开发文档

news2024/11/25 6:49:43

1 开发规划

1.1 开发人员

角 色

主要职责

负责模块

人员

备注

n xxx模块

xxx

1.2 开发计划

<附开发计划表>

1.3 开发环境和工具

开发工具

工具

作用

Notepad++

编辑器

Perl

解释器

2 总体设计

设计思路:因为测试app和server。首先必须将app和server的通信断开,构造一个连接层,然后再根据这个连接层进行case设计,以及设计case对app的回馈。

2.1 概念术语描述

2.1.1 术语1

<术语1的描述>

2.1.2 术语2

<术语2的描述>

2.1.3 采用算法说明

2.1.4 模块依赖:

⒈ JSON,提供json解析功能

⒉ Parallel::ForkManager,提供多进程的fork等功能。

⒊ HTTP::Proxy,提供代理功能。

⒋ Log::Fast,提供日志功能

2.2 基本设计描述

采用多进程的CS模型。大概模块以及功能分为4个:

⑴ 、数据同步模块,主要同步线上下线的数据。线上模块对于该模块的数据是只读的。

⑵ 、配置解析模块。主要是JSON解析,将整体Case的配置文件解析生成所有case列表。

⑶ 、HttpProxy代理模块,主要功能是代理http请求,并记录下http请求的内容。为以后做Http请求分析对比做的一个东西。

a) 、在CaseManager启动的时候启动Proxy。

b) 、其他功能待定/****/

⑷ 、Executor模块。主要功能连接Manager并且执行Manager分配给它的内容。并且将执行结果发送给Manager。

a) 、启动后连接server固定的端口,连接陈功之后等待server下发任务。

b) 、解析server下发的任务命令,JSON的形式,并按照命令的内容执行。

⑸ 、CaseManager模块,主要功能管理case、分配任务给Executor。接收Executor发回的执行结果。

a) 、启动的时候加载解析配置,失败退出。

b) 、启动SOCKETserver并且初始化绑定端口。必须支持stub,以及mesgtype,以便后续进行扩展

c) 、fork出一些进程,然后进行任务分派。

d) 、接收Executor发回的一些信息做一下处理/**需要商议**/

e) 、等待case下发完成并且有Executor执行完成之后进行清理动作

⑹ 、生成最终的报告。(可以选择的模块)

⑺ 、其他必须的组件。

2.2.1 系统总体逻辑结构/流程图(图1)

2.2.2 配置文件引导/说明

{
 
"Proxy": {
 
这里是代理相关的配置
 
},
 
"Global": {
 
"LocaleType": "utf8",#本地语言,可以为空,默认ascii
 
"Protocal": "HTTP",#协议的类型,http或者https目前只支持Http
 
"IsRsyncData": 0,#是否需要从线上同步数据
 
"DataServerIp": "127.0.0.1",#从线上同步数据的IP
 
"DataServerPort" : "127.0.0.1",#从线上同步数据的Port
 
"RequestType":[ "POST", "GET" ],#需要测试的Request类型
 
"PostReqSkipSection": ["aa","bb"],#POST请求类型需要忽略的section,开启之后所在的sections里面所有的POST类型的请求case都将不会执行。
 
"GetReqSkipSection": ["aa","bb"],#GET请求类型需要忽略的section,开启之后所在的sections里面所有的GET类型的请求case都将不会执行。
 
"PostReqSkipFunction": ["aa","bb"],#POST请求类型需要忽略的case名称,开启之后所有的名字和列表中名字相同的POST类型的请求case都将不会执行。
 
"GetReqSkipFunction": ["aa","bb"], GET请求类型需要忽略的case名称,开启之后所有的名字和列表中名字相同的GET类型的请求case都将不会执行。
 
"Version":[
 
#需要测试的所有的server的版本列表
 
{
 
"VersionNumber": "xx.xx.xx.xx",#版本号
 
"AddressIP": "127.0.0.1",#对应的server的IP
 
"AddressPort": "9999",#对应的server的Port
 
"VersionSkipFunction":[],#本版本不测试的case名称
 
"VersionSkipSection": []##本版本不测试的Section名称
 
},{#同上
 
"VersionNumber": "xx.xx.xx.xc",
 
"AddressIP": "127.0.0.1",
 
"AddressPort": "9999",
 
"VersionSkipFunction":[],
 
"VersionSkipSection": []
 
}
 
]
 
},
 
"Sections": {#这个Sections的名字就叫Sections
 
"Normal":{#名字为function_name的case。
 
"function_name":{
 
"url":"/api/plugInfo",#Version中的IP+PORT+url即是当前请求的URL
 
"ReqHeaderArgs": [],#需要添加的header的内容
 
"ReqContentArgs": [],#需要添加httpcontent内容,位于HTTP-content中。
 
"ReqArgs":[ ##需要添加content内容,位于HTTP-content中。
 
{"aaaa": "bbb"},
 
{"aaaa": "bbb"}
 
#例如www.baidu.com/login?user=aa&passwrod=bb这个请求构造的过程中ReqArgs = [{“user”: “aa”},{“password”:”bb”}]而ReqHeaderArgs和ReqContentArgs可以置空。
 
],
 
"Asserts": [
 
{"/code" : 0, type : equal },
 
{"/cc": 1, type : diff, "force" : 1 }
 
{"/cc": 1, "type": "between", "force" :1,"from": 0, "to": 1}
 
#断言列表,对于server反悔的JSON值。断言的类型有两种,between ,equal和nequal分别表示在from和to之间,相等和不等。如果force值为1,那么说明这个断言是强制满足的。以路径表示返回值的内容。例如:
 
要判断marketingImage的url是否是null,加一个断言即可{"/plug/marketingImage/url": NULL}
 
]
 
}
 
},
 
"Exception":{#这个Sections的名字叫Exception
 
"exception_name":{#同上
 
"url":"/api/plugInfo",
 
"ReqHeaderArgs": [],
 
"ReqContentArgs": [],
 
"ReqArgs":[
 
{"aaaa": "bbb"},
 
{"aaaa": "bbb"}
 
]
 
}
 
},
 
"Bound":{#这个Sections的名字叫Bound
 
"exception_name":{#同上
 
"url":"/api/plugInfo",
 
"ReqHeaderArgs": [],
 
"ReqContentArgs": [],
 
"ReqArgs":[
 
{"aaaa": "bbb"},
 
{"aaaa" :"bbb"}
 
]
 
}
 
}
 
}
 
}

2.3 主要界面流程描述

2.4 模块列表

模块名称(英文)

功能

备注

模块1Module1

模块2Module2

模块3Module3

3 数据结构

数据表列表

表名

作用

<附SQL数据库结构定义文档>

若未用数据库,可不写

4 模块设计

4.1 Module1设计

<更具具体情况细化模块设计>

4.1.1 模块设计描述

4.1.2 模块界面描述

4.2 Module2设计

5 附录

5.1 遇到问题以及解决方案

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

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

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

相关文章

vue3中使用viewerjs实现图片预览效果

vue3中使用viewerjs实现图片预览效果 1、前言2、实现效果3、在vue3项目中使用viewer.js3.1 安装3.2 在main.js中引入3.3 组件中使用 1、前言 viewer.js是一款开源的图片预览插件&#xff0c;功能十分强大: 支持移动设备触摸事件支持响应式支持放大/缩小支持旋转&#xff08;类…

CPU及并发

2.9G Hz,即每秒进行2.9G次运算(即29亿次) 几个命令 us: 用户使用的cpu sy: 系统(内核)使用的cpu id: idle,即空闲cpu wa: 等待I/O的cpu st: 开虚拟机后会有的一个指标,即虚拟机的cpu使用率 一个进程拥有一整套虚拟地址空间,该进程的所有线程都共享该地址空间. 线程是CPU运算的最…

Docker如何安装seafile

SQLite 方式 要在 Docker 中安装 Seafile&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装 Docker&#xff1a;确保您的系统上已经安装了 Docker。您可以根据您的操作系统类型&#xff0c;在官方网站上找到适合您系统的 Docker 版本并进行安装。 下载 Seafile 镜像&…

管理类联考——数学——汇总篇——知识点突破——数据分析——计数原理——排列组合——涂色

⛲️ 一、考点讲解 1.题目特征 如果给几种颜色来填涂所给的图形&#xff0c;就是涂色问题。 2.解题方法 可以按照图形逐一依次填涂&#xff0c;也可以按照所用颜色的种数进行分类讨论。 二、考试解读 &#xff08;1&#xff09;涂色问题一般要求相邻的颜色不能相同&#xff0c…

2023年9月9日(星期六)骑行笔架山

2023年9月9日 (星期六)&#xff1a;骑行笔架山&#xff0c;早8:30到9:00&#xff0c; 大观楼门囗集合&#xff0c;9:30准时出发 【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点: 大观楼门囗集合&#xff0c;家住东&#xff0c;南&#xff0c;北…

将Vivado设为xpr文件的默认打开方式

在linux上安装vivado后不会将vivado设为默认的打开方式&#xff0c;需要修改部分gnome配置文件解决。本文基于RHEL 8.8&#xff08;gnome 3.32.2&#xff09;编写&#xff0c;所涉及的文件路径可能因gnome版本而异。 操作步骤 1. 新增xpr文件类型&#xff08;可选&#xff0c;…

【zookeeper】ZooKeeper的特点及应用场景

ZooKeeper 的特点/设计目标 ZooKeeper&#xff08;动物园管理员&#xff09; &#xff0c;顾名思义&#xff0c;是用来管理Hadoop&#xff08;大象&#xff09;、Hive&#xff08;蜜蜂&#xff09;、Pig&#xff08;小猪&#xff09;的管理员&#xff0c;同时Apache HBase、Ap…

人工神经网络实验:第一次上机

pratice03&#xff1a; 1.问题描述&#xff1a; 就是通过设置只有一个hidden层的神经网络&#xff0c;对一个平面的灰面和白面进行分类 2.完整代码&#xff1a; # 可提供解题和验证代码&#xff0c;自行产生数据import torch import torch.nn as nn import torch.nn.functi…

【Cisco Packet Tracer】交换机划分Vlan实验

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

制作成绩查询平台

成绩查询是学校教学管理中必不可少的一项工作&#xff0c;传统的成绩查询方式通常是将成绩表格发到群里供家长查看。然而&#xff0c;这种方式存在许多不便之处&#xff0c;如成绩表格容易丢失、家长需要翻找自己孩子的成绩等问题。 好消息&#xff01;博主给大家争取到的易查分…

“谁天生是项目经理?四大特质决定你的机会“

大家好&#xff0c;我是老原。 但其实不少刚开始尝试项目管理的人&#xff0c;包括老原自己也曾经遇到过这样的问题&#xff1a; ▪ 自己没权没势&#xff0c;大家凭什么听我的&#xff1f; ▪ 资源受限&#xff0c;如何向老板争取更多资源&#xff1f; ▪ 怎样才能推进多方…

el-date-picker 禁止选择当前年之前或者之后的年份

<el-date-picker v-model"ruleForm.years" type"year" :disabled-date"pickerOptions"placeholder"请选择获奖年度" class"wih-650p" value-format"YYYY" />之前 const disabledDateFun (time: any) >…

pycharm如何配置 .gitignore 文件

参考&#xff1a;https://zongweizhou1.github.io/2019/06/16/pycharm-gitignore/ .gitignore 文件本身不需要纳入版本控制&#xff0c;在 .gitignore 文件中写入“.gitignore"忽略即可

Python,如何安装cython_bbox

我是windows系统&#xff0c;pip install cython_bbox无法编译。 解决&#xff1a; 安装pip install cpython 安装VS2019企业版&#xff0c;为了windows能编译一些乱七八糟的&#xff0c;我一般都装个这个。 key BF8Y8-GN2QH-T84XB-QVY3B-RC4DF下载源码&#xff1a;https://…

中国电信举办5G RedCap产业对接交流会,加速推进RedCap商用

近日&#xff0c;由中国电信股份有限公司浙江分公司、天翼物联产业联盟、浙江5G产业联盟联合主办的 “5G融合领先&#xff0c;赋能千行百业数字化”中国电信5G RedCap产业对接交流会&#xff08;浙江站&#xff09;在杭州举办&#xff0c;相关产业链同仁齐聚一堂&#xff0c;共…

Vue+NodeJS+MongoDB实现邮箱验证注册、登录

一.主要内容 邮件发送用户注册用户信息存储到数据库用户登录密码加密JWT生成tokenCookie实现快速登录 在用户注册时,先发送邮件得到验证码.后端将验证进行缓存比对,如果验证码到期,比对不正确,拒绝登录;如果比对正确,将用户的信息进行加密存储到数据库. 用户登录时,先通过用…

c高级day1(9.6) 离线软件安装,文件相关指令,文件权限相关指令,

作业: 使用cut截取出Ubuntu用户的家目录&#xff0c;要求&#xff1a;不能使用":"作为分割 不会 Xmind&#xff1a;

r5 7640h和i5 1340p选哪个 锐龙r57640h和酷睿i51340p对比

i5 1340P采用10nm工艺 最高睿频4.6GHz 十核心 十六线程三级缓存 12MB热设计功耗(TDP) 28W 支持最大内存 64GB内存类型 DDR4 3200MHzDDR5 5200MHz集成显卡 Intel Iris Xe Graphics 选i5-1340P还是R5-7640H、这些点很重要 http://www.adiannao.cn/dy R5 7640H搭载Radeon 760M核显…

IDEA创建注释模板

IDEA创建注释模板 一&#xff0c;类注释模板 1.创建类注释模板 **位置&#xff1a;**File—Settings—Editor—File and Code Templates—Files&#xff0c;进入该页面后可选择Class、Interface、Enum等文件&#xff0c;对应右侧内容分别为&#xff1a; 2.模板内容 /*** Desc…

深入学习JavaScript ES8函数式编程:特性与实践指南

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 函数式编程已经成为现代…