持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
1. 什么是Page Object设计模式
Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题等)。这样在selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或位置变化时,需要修改测试页面代码的情况。
当页面元素id变化时,只需要更改测试页Class中页面的属性即可。获取页面中元素的属性可以通过id,class或xpath获取,在id唯一的情况下可以使用id获取页面元素,否则可以使用xpath定位页面元素。
2. 如何开展自动化测试框架的构建
我们公司的自动化测试框架主要有页面对象,数据驱动,测试脚本,测试报告这几个部分组成。
页面对象是对自动化包括工具(Selenium、Appium)API的二次封闭,还有使用二次封装后的自动化工具类实现的页面元素封装(Page Object),然后会给封装好的页面设置一个统一入口类。这些之中会有一个页面元素文件专门存在元素的定位方法。
数据驱动部分主要是测试脚本中使用的数据文件(Excel,yaml,txt)以及读取方法类,如果数据涉及到数据库,也会把对应的数据读取方法封装到这个部分。
测试脚本主要是通过unittest或pytest测试框架进行编写的,pytest和unittest都支持assert语句断言。能够进行结果的验证,方便查看哪些测试用例是通过的,哪些测试用例是失败的。
测试报告主要是通过unittest自动生成Beautiful Report,也可以通过pytest自动生成Allure报告。
持续集成方面主要是通过Jenkins进行实现的,目的在于测试脚本在无人值守执行以及自动生成测试报告,方便测试人员能够省出时间进行更多的功能测试和探索性测试。
3. 不可逆的操作,如何处理,比如删除一个订单这种接口如何测试
在进行自动化执行时,因为订单的删除可能会导致脚本再次执行时无数据可删除,这时候该怎么办呢?我们可以如下处理:
1. 平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,查询到系统存量订单(数据),再对此订单进行删除操作。
2. 我们也可以通过前置条件setUp做数据准备,生成一个订单。然后再将此订单删除,这样就可以可持续化执行了。
4. 自动化测试时候是不是需要连接数据库进行数据校验()
一般UI自动化不需要,但是咱们也可以使用pymysql获取Mysql数据库中的数据,再进行断言。
5. 你的自动化用例的执行策略是怎样的
手工执行
定时任务触发执行(周末或晚上),可以使用windows计划任务、Jenkins来进行定时任务
Jenkins自动构建执行(Jenkins定时去比较当前版本与svn上的版本是否一致,如何不一致则更新,一致则不更新)
6. 什么是断言
断言的英文是assertion,断言检查的英文是assertion checking。断言是指定一个程序必须已经存在的状态的一个逻辑表达式或一组程序变量在程序执行期间的某个点上必须满足的条件。
7. 什么是持续集成
持续集成是源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断去做软件的集成工作。
8. 持续集成如何做()
最简单的形式是包括一个监控版本控制(SVN等)变化的工具,当变化被发觉时,这个工具可以自动的编译并测试你的应用。
维护一个单一的代码库,使构建自动化,使构建自测试。每人每天都向主线提交代码,每次提交都应在集成机上进行构建,快速构建,使任何人都轻易获得可执行文件,人人都能看到正在发生什么,自动化部署。