1. 请说说常用主流的自动化测试框架?
Web端主流框架:selenium,RF
移动端:appium,RF,airtest,uiautomator
C/S端:RF,airtest
接口:python库requests,RF,jmeter,postman
2. web自动化元素定位方式有哪些?
css、xpath、id、name、class_name、tag_name、link_text、partial_link_text这是web自动化测试的元素定位方法。用的比较多的话基本就是css、xpath、id
3. xpath定位通过开发者工具定位直接复制,那么为什么还要手写xpath表达式?
通常情况下,元素定位使用id、name、class、text等可以满足日常大部分定位需求。
但是随着自动化测试的深入,和不同前端同框架要求,会发现上面的定位方式无法解决一些元素定位
1、没有id、name、class等属性;
- id或者class是动态的
3、标签的属性或文本信息特征没有或者不明显;
4、标签嵌套复杂,层次太多等。
xpath能精准定位,能模糊定位,写Xpath表达式让元素定位更稳定,更灵活
4. 如何理解自动化测试分层思想?
分层思想是让不同层去做不同类型的事情,让代码结构清晰,增加复用性、一般分两层或三层、代码重用。控制脚本失败,降低维护成本,对自化的成败至关重要。
一般分为以下几层
1.对象库层(基础对象:浏览器,元素对象)
2.逻辑处理层:脚本运行过程,公共方法封装
3.业务层:功能测试用例的业务过程
4.数据层:数据驱动
5.自动化测试中你是如何做数据驱动的?
数据驱动我用的是python中的ddt模块,或者pytest自带的数据驱动
实现方式有以下几种
-
用excel表格,每一行代表一个测试用例,循环读取excel表中测试用例的数据
-
用yaml文件形式
-
用xmind方式写用例,python读取xmind文件
6.能说一下POM模式吗?
定义:PO模式是UI自动化常用的设计模式,是一种封装思想,这种设计模式旨在为每个待测试的页面创建一个页面对象(class),将那些繁琐的定位操作封装到这个页面对象中,只对外提供必要的操作接口,是一种封装思想
如何实现POM:
在POM下,被测项目的每一个页面都有一个对应的page class
每一个page class维护着该web页的元素定位集和
每一个page class维护着该web页的操作这些元素的方法
7. unittest单元测试框架了解过吗,为什么会用到unit test?
unittest是Python单元测试框架,使用unittest的目的
1.灵活的组织ui自动化/接口测试用例
2.让用例高效的执行
3.断言:方便验证测试用例的结果
4.集成html形式测试报告
Unittest的特性:
1.一个class继承unittest.TestCase,即是一个个具体的TestCase(类方法以 test 开头,否则是不被unittest识别)
2.每一个用例执行的结果的标识,成功是 .,失败是 F,出错是 E
3.verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。
4.用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境
5.参数中加stream,可以将报告输出到文件:可以用HTMLTestRunner输出html报告。
6.多个单个的测试用例集合在一起,就是TestSuite
8.unit test与pytest的区别能说说吗?
- unittest 用例格式复杂,不能兼容pytest用例
Pytest用例格式简单,能兼容unittest用例
- unittest的测试报告需要用第三方库HTMLTestRunner
Pytest 自带pytest-HTML测试报告,集合allure
-
unittest不支持失败重运行,pytest用rerunfai’ures插件支持失败重运行
-
Pytest支持用例并发运行
-
Pytest支持mark标签,用于冒烟回归测试
-
Pytest可以通过conftest实现跨文件共享数据,比如共享前置操作
【软件测试工作流程】