项目介绍
项目名称:某大数据检索项目
项目介绍:用于精确检索xx信息,并且对检索结果进行二次加工,生成分析报告。
业务介绍
用户使用检索平台通过筛选条件,精确检索到所需要的xx信息并查看,同时支持按批量条件去检索,可对检索结果进行二次加工;也可以将检索结果自定义生成报告。
主要模块有:登录、检索、个人中心等。
架构介绍
前端:Vue
后端:Java语言编写
数据中台:Elasticsearch、 Hbase
测试方案
项目在每次迭代的版本需要上线,除了新增功能之外,需要回归一下主流程。
UI自动化测试
改进之前的测试方法:
- 每次迭代除了要去验证新功能之外,还需要花费很多人力、时间去手工回归其他功能。
解决方案:
- 搭建UI自动化测试框架,将主流程场景写成脚本自动化执行。
技术总结:
-
在主流程的自动化测试脚本中主要使用:python+pytest+selenium+allure+Jenkins的技术架构,同时采用PO设计模式将逻辑层、数据层分层处理,每次页面元素变化只要找到对应的page修改页面属性,测试用例通过excel编写即可,降低了维护成本,提高了脚本的复用效率,allure即美观又可以添加日志和截图方便于查看报告的人去排查问题。项目架构目录如下:
-
在主流程中因为结合到多个场景一起执行,所以解决driver复用的问题,每一个场景结束(不管成功与否),我都会跳转回首页执行下一个场景。解决办法:是将base_page将driver写成单例,其他页面在调用时实例化确保都是同一个driver,不会出现反复调用新的driver。
-
在失败的测试用例中除了日志,还有相关测试失败的截图能更好的让查看报告的人去排查问题。解决办法:通过hooks函数在测试失败时自动截图并添加到allure:
-
在UI自动化测试中验证码绕不开需要想办法解决。目前我的解决方案是利用python的OCR工具pytesseract去识别验证码。
效果:
在没UI自动化测试之前:每次发版验证完功能后至少需要1-2小时回归。
使用UI自动化测试之后:每次发版在验证其他功能的同时只需要输入命令去执行对应的主流程脚本,等执行结束后报告推送到企业微信查看就可以了,大大缩短了发版回归测试的时间。
遗留问题
1.pytesseract毕竟是开源的东西识别率不能到百分百,可能因为我们的验证码比较简单70%还是有的,但是有时候刷新出反人类的验证码真的无法识别,目前系统是用token和学院在直播课程中的cookie保持登录的场景不一样,有没有推荐更好一点的解决方案(因为公司想把UI自动化测试的脚本也作为线上巡检,但是目前在服务器上试了确实有很多失败的情况)?
2.allure报告推送到企业微信群后只能在公司内网才能打开,请问一下怎么解决报告在外网情况下的查看?
3.关于Chromedriver的更新每次都要手动去更新,有没有其他推荐的方式?
4.关于脚本稳定性,目前主流程跑完要一个小时,其中有异常我都是简单粗暴的跳过执行,关于脚本稳定性有什么建议?