接口测试工具开发文档

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 配置文件引导/说明
 
  1. {

  2. "Proxy": {

  3. 这里是代理相关的配置

  4. },

  5. "Global": {

  6. "LocaleType": "utf8",#本地语言,可以为空,默认ascii

  7. "Protocal": "HTTP",#协议的类型,http或者https目前只支持Http

  8. "IsRsyncData": 0,#是否需要从线上同步数据

  9. "DataServerIp": "127.0.0.1",#从线上同步数据的IP

  10. "DataServerPort" : "127.0.0.1",#从线上同步数据的Port

  11. "RequestType":[ "POST", "GET" ],#需要测试的Request类型

  12. "PostReqSkipSection": ["aa","bb"],#POST请求类型需要忽略的section,开启之后所在的sections里面所有的POST类型的请求case都将不会执行。

  13. "GetReqSkipSection": ["aa","bb"],#GET请求类型需要忽略的section,开启之后所在的sections里面所有的GET类型的请求case都将不会执行。

  14. "PostReqSkipFunction": ["aa","bb"],#POST请求类型需要忽略的case名称,开启之后所有的名字和列表中名字相同的POST类型的请求case都将不会执行。

  15. "GetReqSkipFunction": ["aa","bb"], GET请求类型需要忽略的case名称,开启之后所有的名字和列表中名字相同的GET类型的请求case都将不会执行。

  16. "Version":[

  17. #需要测试的所有的server的版本列表

  18. {

  19. "VersionNumber": "xx.xx.xx.xx",#版本号

  20. "AddressIP": "127.0.0.1",#对应的server的IP

  21. "AddressPort": "9999",#对应的server的Port

  22. "VersionSkipFunction":[],#本版本不测试的case名称

  23. "VersionSkipSection": []##本版本不测试的Section名称

  24. },{#同上

  25. "VersionNumber": "xx.xx.xx.xc",

  26. "AddressIP": "127.0.0.1",

  27. "AddressPort": "9999",

  28. "VersionSkipFunction":[],

  29. "VersionSkipSection": []

  30. }

  31. ]

  32. },

  33. "Sections": {#这个Sections的名字就叫Sections

  34. "Normal":{#名字为function_name的case。

  35. "function_name":{

  36. "url":"/api/plugInfo",#Version中的IP+PORT+url即是当前请求的URL

  37. "ReqHeaderArgs": [],#需要添加的header的内容

  38. "ReqContentArgs": [],#需要添加httpcontent内容,位于HTTP-content中。

  39. "ReqArgs":[ ##需要添加content内容,位于HTTP-content中。

  40. {"aaaa": "bbb"},

  41. {"aaaa": "bbb"}

  42. #例如www.baidu.com/login?user=aa&passwrod=bb这个请求构造的过程中ReqArgs = [{“user”: “aa”},{“password”:”bb”}]而ReqHeaderArgs和ReqContentArgs可以置空。

  43. ],

  44. "Asserts": [

  45. {"/code" : 0, type : equal },

  46. {"/cc": 1, type : diff, "force" : 1 }

  47. {"/cc": 1, "type": "between", "force" :1,"from": 0, "to": 1}

  48. #断言列表,对于server反悔的JSON值。断言的类型有两种,between ,equal和nequal分别表示在from和to之间,相等和不等。如果force值为1,那么说明这个断言是强制满足的。以路径表示返回值的内容。例如:

  49. 要判断marketingImage的url是否是null,加一个断言即可{"/plug/marketingImage/url": NULL}

  50. ]

  51. }

  52. },

  53. "Exception":{#这个Sections的名字叫Exception

  54. "exception_name":{#同上

  55. "url":"/api/plugInfo",

  56. "ReqHeaderArgs": [],

  57. "ReqContentArgs": [],

  58. "ReqArgs":[

  59. {"aaaa": "bbb"},

  60. {"aaaa": "bbb"}

  61. ]

  62. }

  63. },

  64. "Bound":{#这个Sections的名字叫Bound

  65. "exception_name":{#同上

  66. "url":"/api/plugInfo",

  67. "ReqHeaderArgs": [],

  68. "ReqContentArgs": [],

  69. "ReqArgs":[

  70. {"aaaa": "bbb"},

  71. {"aaaa" :"bbb"}

  72. ]

  73. }

  74. }

  75. }

  76. }

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 遇到问题以及解决方案

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值