最近伙伴传回来的,高频自动化测试面试题集锦!

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等属性;

  1. 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用例

  1. unittest的测试报告需要用第三方库HTMLTestRunner

Pytest 自带pytest-HTML测试报告,集合allure

  1. unittest不支持失败重运行,pytest用rerunfai’ures插件支持失败重运行

  2. Pytest支持用例并发运行

  3. Pytest支持mark标签,用于冒烟回归测试

  4. Pytest可以通过conftest实现跨文件共享数据,比如共享前置操作

最近伙伴传回来的,高频自动化测试面试题集锦!

【软件测试工作流程】

文章首发于微信公众号:程序员一凡,转载请注明出处!

上一篇:pytest快速入门(1)--pytest与unittest的比较总揽


下一篇:python【第二篇】列表、元组、字典及文件操作