freetest执行模块图
2022-03-28 18:43:01 8 举报
freetest
作者其他创作
大纲/内容
isAllDiff为true?(无需进行字段遍历对比)
启动任务
方法路径:GetDiffResultByGorServlet.startDiffAndSaveData()
拉取请求包数据
方法路径:MainTest.getDiffDataByGor()
参数:cgiNamecgi的名字,若为统一cgi,则传入无空格的module和method,例:\"module\":\"Imusic.ImusicQueryServer\
返回包数据解压
方法路径:MainTest.unzieResponse
参数:boolean isUnifyCGI true-是统一Cgibyte[] result 返回包数据
噪音剔除
方法路径:mainTest.getContentDeleteNoiceData
去除集合里面的噪音数据,两个集合相等的结构部分则为噪音数据,需要去除。返回被去除了噪音数据的返回包字符串,结构+值 * 参数:ArrayList<String> list_source需要进行噪音数据去除逻辑的数据源 * List<String> list_noice噪音数据列表
对比结束,输出数据
方法路径:mainTest.compareRequest
结果参数:private int result;//返回包结构字段和code值的对比结果,系统默认是0-失败private int wholeResult;//整个返回包的直接对比结果,系统默认是0-失败private boolean needUnziped = false;//是否需要解压,初始为falseprivate String noice;//噪音字段private String codeValue = \"\";//用于记录code的值,code不为0才填private String failDetail = \"\";//用于单个服务跑,记录具体失败的字段,初始为空字符串,避免有些地方没赋值而直接取值崩溃
解析和构造请求包
方法路径:MainTest.testPost2/testGet
进行内外网请求,以及外网5次请求获取噪音返回包参数:type0-普通cgi 1-统一cgi * isAlldiff 是否全部cgi都对比的标记,是的话则只拿一个请求包回放比code值,无需内外网对比。 * ignoreEqualCode加个任务的接口名标记(非单个接口名,而是任务创建的目标接口,如==ALL==),用于基准环境建设, * 不为==ALL==则加上正式环境内容的对比,不过只看两个环境code值,不为0但是相等的话也当成成功,减少开发侧工作量,因为可能是正常错误逻辑,而非环境建设问题 mesh_devops基准环境名称,用于插到请求包里 rules自定义校验规则,json转换的String,实例:{\"rules\":[{\"rule_type\
整合所有线程里的结果对象,入库
噪音获取
方法路径:mainTest.getNoiceContent_JSON
对比第一重-全字符匹配
判空:有一个返回包为空,则直接返回失败全字符匹配判断
单个请求任务执行结束,组装输出数据
结果参数-对象:private String request;//请求包private DataBean dataBean;//解析好的请求包,里面有url host cookie body等信息private String formalReponse;private String testReponse;private int isSameFormat;//整个返回包的结构是否一致,0-否,1-是, 2-返回包的code值不为0, 3-内外网都是空返回包,4-JSON返回包的code值不为0private int isAllCodeEquals;//整个返回包里的各个对应code的值相等,0-不相等,1-相等private String failMSG;//失败原因,一般是内外网返回包不一致private String noice;//噪音数据private String formalHeader;//正式环境返回包的headerprivate String testHeader;//测试环境返回包的headerprivate String cgiName;//接口名,用于统计环境建设里出现失败次数,如\"module\":\"musicToplist.ToplistInfoServer\
对比方法
对比内外网结果 * 参数:result_formal 正式环境返回包 * result_test被测环境返回包 * result_formal_noice正式环境第N次返回包集合,用于处理噪音数据 * isAllDiff 是否全部cgi都对比的标记,是的话则只拿一个请求包回放比code值,无需内外网对比。 * ignoreEqualCode标记是否忽略相等的code,相等则不为0也输出成功,用于基准环境建设。 * cgiName 透传cgi名,用于cgi重编时字段验证 *rules自定义校验规则,json转换的String,实例:{\"rules\":[{\"rule_type\
是
否
对比第三重-全字段遍历
1、正式环境返回包字段为基准,遍历测试环境字段及值来对比;2、第一次全部值匹配了,则开始第二次对比,用被测环境来匹配正式环境,避免被测环境多了字段,而第一次匹配会输出成功结果
返回包格式处理
jsonp截取为jsonxml:遇到xml外层有个<!-- -->注释掉的情况,导致截取不到xml,处理一下
对比第二重-自定义规则对比
自定义规则rule1-不校验内外网相等目标字段插到噪音字段集合里,过滤掉//自定义规则rule2-仅校验该字段内外网相等//若自定义规则“仅校验某字段内外网相等”的集合有内容,则直接获取对应字段,其余字段丢弃,找不到自定义字段则直接报错失败//自定义规则rule3-校验值是否为空循环对比结构是否有目标字段,校验值是否为空//自定义规则rule4-校验值是否为0循环对比结构是否有目标字段,校验值是否为0//自定义规则rule5-校验值是否包含目标值循环对比结构是否有目标字段,校验值是否包含目标值//自定义规则rule6-校验值是否等于目标值循环对比结构是否有目标字段,校验值是否等于目标值7.替换被测环境请求包里的命令字8.对应devops环境指定
自定义规则解析
方法路径:mainTest.analyDIYCompareRules
对比第四重-code是否为0
xml截取code方法:mainTest.cutCodeValueAndCompare_XML()json截取code方法:mainTest.cutCodeValueAndCompare()
收藏
0 条评论
下一页