某大数据检索项目测试方案

项目介绍

项目名称:某大数据检索项目
项目介绍:用于精确检索xx信息,并且对检索结果进行二次加工,生成分析报告。

业务介绍

用户使用检索平台通过筛选条件,精确检索到所需要的xx信息并查看,同时支持按批量条件去检索,可对检索结果进行二次加工;也可以将检索结果自定义生成报告。
主要模块有:登录、检索、个人中心等。

架构介绍

前端:Vue
后端:Java语言编写
数据中台:Elasticsearch、 Hbase

测试方案

项目在每次迭代的版本需要上线,除了新增功能之外,需要回归一下主流程。

UI自动化测试

改进之前的测试方法:

  1. 每次迭代除了要去验证新功能之外,还需要花费很多人力、时间去手工回归其他功能。

解决方案:

  1. 搭建UI自动化测试框架,将主流程场景写成脚本自动化执行。

技术总结:

  1. 在主流程的自动化测试脚本中主要使用:python+pytest+selenium+allure+Jenkins的技术架构,同时采用PO设计模式将逻辑层、数据层分层处理,每次页面元素变化只要找到对应的page修改页面属性,测试用例通过excel编写即可,降低了维护成本,提高了脚本的复用效率,allure即美观又可以添加日志和截图方便于查看报告的人去排查问题。项目架构目录如下:
    image

  2. 在主流程中因为结合到多个场景一起执行,所以解决driver复用的问题,每一个场景结束(不管成功与否),我都会跳转回首页执行下一个场景。解决办法:是将base_page将driver写成单例,其他页面在调用时实例化确保都是同一个driver,不会出现反复调用新的driver。

  3. 在失败的测试用例中除了日志,还有相关测试失败的截图能更好的让查看报告的人去排查问题。解决办法:通过hooks函数在测试失败时自动截图并添加到allure:


  4. 在UI自动化测试中验证码绕不开需要想办法解决。目前我的解决方案是利用python的OCR工具pytesseract去识别验证码。

效果:

在没UI自动化测试之前:每次发版验证完功能后至少需要1-2小时回归。
使用UI自动化测试之后:每次发版在验证其他功能的同时只需要输入命令去执行对应的主流程脚本,等执行结束后报告推送到企业微信查看就可以了,大大缩短了发版回归测试的时间。

遗留问题

1.pytesseract毕竟是开源的东西识别率不能到百分百,可能因为我们的验证码比较简单70%还是有的,但是有时候刷新出反人类的验证码真的无法识别,目前系统是用token和学院在直播课程中的cookie保持登录的场景不一样,有没有推荐更好一点的解决方案(因为公司想把UI自动化测试的脚本也作为线上巡检,但是目前在服务器上试了确实有很多失败的情况)?
2.allure报告推送到企业微信群后只能在公司内网才能打开,请问一下怎么解决报告在外网情况下的查看?
3.关于Chromedriver的更新每次都要手动去更新,有没有其他推荐的方式?
4.关于脚本稳定性,目前主流程跑完要一个小时,其中有异常我都是简单粗暴的跳过执行,关于脚本稳定性有什么建议?

本质其实是前端将部分认证信息写入了localstorage(大部分情况)。和cookie登录一样的思路可以解决

因为你数据在内网。内外网的访问权限,这个应该是运维控制的,要不然就是得把数据传出去,要不然就是让运维帮忙做一层处理。

现在应该有很多第三方库了。可以搜一下,另外说下开发思路,可以自己开发下试试

  1. 通过命令获取当前浏览器的版本 与 chromedriver 是否匹配
  2. 如果匹配则跳过,如果不匹配则通过一个wget 下载与当前浏览器匹配的版本,并自动替换环境变量中的chromedriver 文件

(其实这样说感觉学院可以开发一个,就是最近太忙了,不太有时间做这个。有兴趣的话可以一起开发,开源一下)

具体情况具体分析,UI最难的点就是稳定性问题,但是通常一个产品稳定性差的原因都是同质性的。也就那么几种情况,用显式等待封装下处理下即可

毕业设计点评

  1. 亮点讲解的不是很清楚,自己可以提现先组织下语言。
  2. 比如做了企业微信的推送,相当于自动化测试的过程之后:u6709:做通知,这点没有在方案中体现出来
  3. 缺少持续集成持续交付流水线,建议做好规划之后,拉通研发将提测的整个流程也完成自动化测试