自制快速冒烟测试小工具--基于python多线程

2778 篇文章 17 订阅
2704 篇文章 27 订阅

在项目测试的过程中,发现经常会有下面这些情况:

•新版本升级后,有时会因为代码或部署时配置错误,某个菜单报类似404或500的错误;
•为避免以上问题,实施部署人员升级完后,需要手动冒烟一遍所有菜单页面;
•发布当天还有修改提测,来不及再全部手动回归一遍;
•项目周期不长,没有时间来做业务流程的自动化。

如果所有的菜单都通过手动来冒烟一遍的话,我们假定一个菜单页面要5秒,那么如果一个项目有600个菜单页面,那么就需要3000秒,整整一个小时啊,而且是每次升级都要来这么一次。于是我就想,虽然没时间将所有功能都做成自动化,那能不能实现对所有的菜单页面都自动去访问一遍,然后根据访问结果判断是不是都是正常的,以此做个快速的冒烟测试呢?

一、实现步骤分析

想法有了,那就得分析该怎么实现了。最大的问题就在于所有菜单对应的url要怎么获取了,通过各种尝试之后,发现所测项目由于框架原因,无法直接通过爬虫来获取所有的url。

但是在数据库里,对应前后台都有两张表,如eclp_A存放有域名,eclp_B则存有各个菜单页面的具体路径,那么只需要把两张表的数据取出来拼接在一起就成了一个完整的url了。

具体步骤:

(1)在数据库里将客户端和后台管理端(客户端是uc,后台管理端是eclp)域名和路径取出来进行拼接放到一个新表,并加入对应断言关键词;

(2)不同项目的数据库配置不一样,所以把数据库配置放在配置文件,再通过程序获取;

(3)获取到数据库的配置后,连接数据库,从表里获取到所有的url;

(4)取到所有的url之后遍历去request,但是这个需要先登录获取到cookie后做个cookie绑定,那么登录需要用到的用户密码也需要放到配置文件;

(5)遍历访问所有url,并记录其访问结果,成功与失败个数;

(6)在程序执行访问页面时,把成功与失败的日志都记录下来,方便后续查找问题;

(7)因为url可能比较多,访问所有页面会很慢,所以实现多进程或多线程的方式;

(8)将所有页面访问结果利用HTML报告输出;

二、前期准备

1. 在数据库(此处是oracle)拼接URL

1.1 创建存放url的表

查看后台存放主域名和路径的表

select t.*,t.rowid from eclp_A t orderby id desc;
select t.*,t.rowid from eclp_B t orderby id desc;

创建存放完整url的表

CREATETABLE eclp_uc_url (
ID NUMBER(20) DEFAULT0  NOTNULL ,
SUB_SYSTEM_ID  NUMBER(20) DEFAULT0  NOTNULL ,
SUB_SYSTEM_CODEVARCHAR2(100 BYTE) DEFAULT''  NULL ,
NAME  VARCHAR2(255 BYTE) DEFAULT''  NULL ,
DOMAINVARCHAR2(100 BYTE) DEFAULT''  NULL ,
PATH VARCHAR2(100 BYTE)DEFAULT''  NULL ,
URL  VARCHAR2(100 BYTE) DEFAULT''  NULL ,
ASSERT_WORD  VARCHAR2(255 BYTE) DEFAULT''  NULL
)

创建主键

ALTERTABLE eclp_uc_url ADDPRIMARYKEY (ID);

创建id自增序列

drop SEQUENCE SEQ_ECLP_UC_URL;
CREATE SEQUENCE SEQ_ECLP_UC_URL
INCREMENTBY1
START WITH1
MAXVALUE9999999999999
CYCLE
CACHE 20

1.2 从两个表分别插入域名和路径到存放url的新表

eclp的路径path插入表

INSERTINTO eclp_uc_url(id,SUB_SYSTEM_ID,NAME,PATH) 
SELECT SEQ_ECLP_UC_URL.NEXTVAL,SUB_SYSTEM_ID,NAME,URL from eclp_A;

eclp的域名domian插入表

updateeclp_uc_url set DOMAIN = (select DOMAIN from eclp_B whereeclp_uc_url.SUB_SYSTEM_ID = eclp_B.id)
whereexists (select 1 from eclp_B where eclp_uc_url.SUB_SYSTEM_ID =eclp_sub_system.id);

将domain和path拼接成url

MERGEINTO eclp_uc_url A
USING( select t.id, t.domain || '/' || t.path as urls from eclp_uc_url t) B ON (A.ID= B.ID)
WHENMATCHED THEN UPDATE SET A.URL = B.URLS;

2. 数据库配置与前后台用户配置文件

创建一个DbUser.ini文件:
存有数据库连接配置、前后台用户信息、浏览器选择(chrome、firefox、ie)

[db]
oracle_ip=127.0.0.1
oracle_account=test_account
oracle_password=test_password

[eclp]
center_url=http://127.0.0.1:8020/system/login.htm
center_account=test01
center_password=123456a
 
[uc]
uc_url=http://127.0.0.1:9001/login.htm
uc_account=test02
uc_password=123456a

[driver]
browser=chrome

3. 前后台登录元素定位方式配置文件

包含用户名、密码、登录按钮的定位方位,UiObjectMap.ini

[eclp]
LoginAccount=id>account
LoginPassword=id>password
LoginButton=xpath>//input[@class='btn2']

[uc]
LoginAccount=id>account
LoginPassword=id>password
LoginButton=id>button

现在我邀请你进入我们的软件测试学习交流群:746506216】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值