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 等属性;
2. id 或者 class 是动态的
3、标签的属性或文本信息特征没有或者不明显;
4、标签嵌套复杂,层次太多等。
xpath 能精准定位,能模糊定位,写 Xpath 表达式让元素定位更稳定,更灵活
4.如何理解自动化测试分层思想?
分层思想是让不同层去做不同类型的事情,让代码结构清晰,增加复用性、一般分两层
或三层、代码重用。控制脚本失败,降低维护成本,对自化的成败至关重要。
一般分为以下几层
1.对象库层(基础对象:浏览器,元素对象)
2.逻辑处理层:脚本运行过程,公共方法封装
3.业务层:功能测试用例的业务过程
4.数据层:数据驱动
5.自动化测试中你是如何做数据驱动的?
数据驱动我用的是 python 中的 ddt 模块,或者 pytest 自带的数据驱动
实现方式有以下几种
1. 用 excel 表格,每一行代表一个测试用例,循环读取 excel 表中测试用例的数
据
2. 用 yaml 文件形式
3. 用 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 的区别能说说吗?
1. unittest 用例格式复杂,不能兼容 pytest 用例
Pytest 用例格式简单,能兼容 unittest 用例
2. unittest 的测试报告需要用第三方库 HTMLTestRunner
Pytest 自带 pytest-HTML 测试报告,集合 allure
3. unittest 不支持失败重运行,pytest 用 rerunfai‘ures 插件支持失败重运行
4. Pytest 支持用例并发运行
5. Pytest 支持 mark 标签,用于冒烟回归测试
6. Pytest 可以通过 conftest 实现跨文件共享数据,比如共享前置操作