自动化测试--初版
当你已经快要习惯,习惯忙忙碌碌的工作,忽然一天的清闲,顿时又会让自己惊慌失措,突然不知道自己该干嘛了,这就是我生活轨迹上偶尔的笑话。
废话不多说了,说说最近瞎搞的一个小web版接口测试网站。
一、用到的所谓的框架(框架,听起来好高大上,其实是高大上,我得理解就是jar包的引用及相关配置文件(原谅我的拙见))
1.spring
2.springMVC
3.Mybatis
三者的整合:就是jar包的引入,配置文件的配置。
具体请参考:http://www.cnblogs.com/fqfanqi/p/7154075.html
spring一大优点:使用注解,减少了对对象的new操作,具体请参考:http://www.cnblogs.com/fqfanqi/p/7153843.html
二、前端框架是从网上down的一套页面,修改为jsp页面进行展示,下面就各页面做下简介
1.接口配置页面:
1)项目名称,
2)接口名称(唯一,作为表索引,表的关联基本靠它--需改进为(项目名称+接口名称)作为唯一索引),
3)请求头信息,
4)请求IP(或域名),
5)请求端口,
6)请求方式(暂搞get和Post,后续加入hessian等)
7)请求报文格式,
8)请求参数,
9)是否验签,验签是否有盐值
10)参与验签的参数
11)返回报文格式
12)备注
备注:当验签选择“否“时,盐值和参与验签参数两个input将被隐藏(当然在页面修改display即可展现,所以最好后端加一个判断);本页面以表单形式提交,表单对应一个JavaBean。
-- -----------------------------------------------------------------
-- Table structure for configure_info(建表)
-- -----------------------------------------------------------------
DROP TABLE IF EXISTS `configure_info`;
CREATE TABLE `configure_info` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`project_name` varchar(20) DEFAULT NULL,
`api_name` varchar(20) NOT NULL,
`request_method` varchar(10) NOT NULL,
`request_header` varchar(255) DEFAULT NULL,
`content_type` varchar(20) NOT NULL,
`request_ip` varchar(15) NOT NULL,
`request_port` varchar(5) NOT NULL,
`request_parameters` varchar(255) DEFAULT NULL,
`is_sign` char(2) NOT NULL DEFAULT '否',
`salt` varchar(20) DEFAULT NULL,
`remarks` varchar(255) DEFAULT NULL,
`md_parameters` varchar(255) DEFAULT NULL,
`response_type` varchar(10) NOT NULL,
`create_time` varchar(30) NOT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `api_name_index` (`api_name`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
2.接口查询页面
接口查询页面只展示了:项目名称、接口名称、参数;可以根据项目名称和接口名称查询;分页采用软分页,每页最多展示5条数据。
点击【修改】,页面跳转至接口配置页面。在接口配置页面点击【提交】,会更新该条数据。【提交】走的后台逻辑是:如果该条数据不存在就插入,如果存在就更新。
点击【删除】,即数据中删除该条数据,页面隐藏该条数据,采用的AJax操作。
点击【参数配置】,进入参数配置页面,两种页面展示。
3.参数配置页面
表设计:
-- -------------------------------------------------------------
-- Table structure for parameter_info
-- --------------------------------------------------------------
DROP TABLE IF EXISTS `parameter_info`;
CREATE TABLE `parameter_info` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`api_name` varchar(20) NOT NULL,
`parameter_name` varchar(20) NOT NULL,
`is_must` varchar(2) NOT NULL,
`parameter_type` varchar(10) NOT NULL,
`parameter_length` varchar(10) DEFAULT NULL,
`parameter_max` varchar(10) DEFAULT NULL,
`parameter_min` varchar(10) DEFAULT NULL,
`character_constraint` varchar(20) DEFAULT NULL,
`create_time` varchar(30) NOT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `api_name_index` (`api_name`,`parameter_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;
3.1未配置或配置了部分参数
页面配置好某参数的约束条件后,点击【添加】,按钮变成【修改】,表中会插入一条数据,前端提示添加成功,采用AJax传输数据。
点击【删除】,接口配置信息表中删除该参数,验签参数中删除该参数(如果有),参数信息表中删除所有该接口参数配置信息(已知的bug)。
点击【添加用例数据】,跳转到用例数据配置页面。
3.2参数都已配置
点击【修改】,会更新该条数据;
点击【删除】,接口配置信息表中删除该参数,验签参数中删除该参数(如果有),参数信息表中删除所有该接口参数配置信息(已知的bug)。
点击【添加用例数据】,跳转到用例数据配置页面。
点击【创建用例表】,会创建一张用例数据表,表名为接口名+“_table”,通用字段为id,data_desc,update_time。
1 @RequestMapping("createTable") 2 @ResponseBody 3 public String createTable(@RequestParam("apiName") String apiName) { 4 List<ParametersConfigure> listPC = parametersConfigureService.getAllParametersByApiName(apiName); 5 String strP = ""; 6 for(int i=0;i<listPC.size();i++){ 7 strP = strP + listPC.get(i).getParameterName() + " " + "varchar(50),"; 8 } 9 String cTable = "create table "+apiName+"_table "+"("+ 10 "id int(10) NOT NULL AUTO_INCREMENT," 11 + "name_table " + "varchar(20)," 12 + "api_name " + "varchar(20)," 13 + "data_desc " + "varchar(20)," 14 + strP 15 + "update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP," 16 + "PRIMARY KEY (id)," 17 + "KEY api_name_index (api_name)" 18 + ") ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 " 19 ; 20 System.out.println(cTable); 21 logger.info(cTable); 22 DataBaseOperate.createtable(cTable,apiName); 23 return "Create Tabl Success !"; 24 }
4.测试数据配置页面
点击【提交】后,数据插入表中(先创建用例表),页面跳转测试用例数据查询页面。
5.测试用例数据查询页面
该页面可以根据用例描述进行筛选查询;点击【修改】,回到用例数据配置页面,因为传递的是该条所有数据,会将id,table_name,update_time也传过去,用例数据配置页面对这些字段进行隐藏(id在提交更新该条数据时需要用到,所以必须传递)。
6.测试结果详情页面
----------------------------很多可以完善---------------------------------