1.在ops系统的接口使用pageCode+opCode进行改造的过程中,通过fiddler工具,拦截ops系统中的所有发出的Ajax请求,收集每个请求发出的参数,进行评价;
2.为了评估pageCode+opCode的正确性,根据url找到数据库中对应的menu_id的值,如果这个集合内存在pageCode+opCode的值,就说明是正确的;十分的高效。
3.其实就是通过fiddler工具获取到所有的请求链接,生成一个文件,再通过Python去读取url上的两个code值
并根据url地址去数据库找到对应的menu_code集合,在这个集合中,应该存在一个menu_code=pageCode+opCode,存在则说明是正确的,产生一个成功的记录;否则是错误的,产生一个失败记录。
4.这个功能使用nodejs也可以实现。实现的主要思路和代码如下所示,通过这个例子初步理解测试人员的自动化测试的基本过程:
/**
* Created by 80002909 on 2019/4/16.
*/
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '10.203.12.190***',
port : '3306**',
user : 'opsdb***',
password : '***sf123456',
database : '****opsdevelop'
});
connection.connect();
var fs = require("fs");
var async = require('async');
//数组去重removeDuplication_arr
var removeDuplication_arr = function (array) {
var temp = []; //一个新的临时数组
for(var i = 0; i < array.length; i++){
if(temp.indexOf(array[i]) == -1){
temp.push(array[i]);
}
}
return temp;
};
// 异步读取
fs.readFile('新产品支持.txt', function (err, data) {
if (err) {
return console.error(err);
}
var content = data.toString();
var content_toArr = content.split('\r\n');
content_toArr.length = content_toArr.length-1;
//数组去重
content_toArr = removeDuplication_arr(content_toArr);
//console.log(content_toArr.length);
var lastRes = [];
for(var index in content_toArr){
var single = content_toArr[index];
var url_start_index = single.indexOf('.com') != -1 ? single.indexOf('.com'): null ;
var url_end_index = single.indexOf('?') != -1 ? single.indexOf('?'): null ;
var pageCode_index = single.indexOf('pageCode') != -1 ? single.indexOf('pageCode'): null ;
var opCode_index = single.indexOf('opCode') != -1 ? single.indexOf('opCode'): null ;
var obj = {
url:null,
pageCode:null,
opCode:null,
res:null
};
if(pageCode_index && opCode_index){
obj.url = single.substring(url_start_index+4,url_end_index);
obj.pageCode = single.substring(pageCode_index+9,opCode_index-1);
obj.opCode = single.substring(opCode_index+7,opCode_index+9);
obj.res = obj.pageCode + '' + obj.opCode
}
lastRes.push(obj);
}
//console.log(lastRes);
var ws = fs.createWriteStream(__dirname + '/新产品支持s.txt', {start: 0});
if(lastRes.length>0){
lastRes.forEach(function(item, index) {
//console.log(item);
var sql = 'select * from ts_module where ACTION_URL = ' + connection.escape(item.url);
connection.query(sql, function (error, results, fields) {
if (error) throw error;
if (results.length > 0) {
for (var i = 0; i < results.length; i++) {
var sjngle = results[i];
//console.log(item.res, sjngle.MENU_CODE);
if (item.res == sjngle.MENU_CODE) {
var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:' + sjngle.MENU_CODE + ', succ\r\n';
var buffer = new Buffer(w_data);
ws.write(buffer, 'utf8', function (err, buffer) {
console.log(arguments,err,buffer);
//console.log('写入完成,回调函数没有参数')
});
if(index == lastRes.length-1){
//写入文件流最后要写入的内容
ws.end('再见');
//断开数据库
connection.end();
}
break;
}
}
if (i == results.length) {
var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:noCode' + ', fail\r\n';
var buffer = new Buffer(w_data);
ws.write(buffer, 'utf8', function (err, buffer) {
console.log(arguments,err,buffer);
//console.log('写入完成,回调函数没有参数')
});
if(index == lastRes.length-1){
//写入文件流最后要写入的内容
ws.end('再见');
//断开数据库
connection.end();
}
}
} else {
var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:noCode' + ', fail\r\n';
var buffer = new Buffer(w_data);
ws.write(buffer, 'utf8', function (err, buffer) {
console.log(arguments,err,buffer);
//console.log('写入完成,回调函数没有参数')
});
if(index == lastRes.length-1){
//写入文件流最后要写入的内容
ws.end('再见');
//断开数据库
connection.end();
}
}
});
})
}
});