自动化测试相关面试题

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 实现跨文件共享数据,比如共享前置操作

原文地址:https://www.cnblogs.com/Sandy-1128/p/autotest-1.html