自动化常见面试题

122 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第31天,点击查看活动详情 自动化使用的测试框架是什么?简述自动化框架的设计、维护

测试框架:python+unittest+requests+ddt+openpyxl+pymysql+logging

python:入门简单,语法简洁

unittest :定义一个测试用例类,具体的方法来维护测试用例的生命周期,测试场景行为,测试用例 前置场景,行为,期望结果,实际结果,断言方法,Setup teardown方法

requests:接口调用 ,支持http请求的库,API 简洁,提供不同的http请求方法,支持session,cookies,

ddt :数据驱动,ddt 类装饰器,data 测试方法装饰器 unpack解包可迭代的数据类型

普通用户,数据库,配置文件---(基础数据)

openpyxl: 数据管理 excel管理数据,使用openpyxl模块来进行excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据)

pymysql:数据库交互,数据校验

eval,json:数据格式的转换 Eval将python支持的格式转换成对应的格式

logging:日志处理, 统一日志输出格式,渠道,级别,执行结果的记录,便于定位问题

jenkins:持续集成

2/框架设计思路:数据驱动+结构分层(可读性,可维护性,可扩展性)

数据驱动:将维护数据与代码分离,接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余

结构分层:数据层+用例层+逻辑层

数据层:测试数据的支撑 data.xls

用例层:用例的执行 test_register.py test_recharge.py

逻辑层:公用的方法的封装与提取 doexcle.py do_mysql.py http_requests.py logger.py等模块

3/框架设计步骤:

准备测试数据: EXCEL表准备测试用例---excel数据的读取---参数值的替换

发起请求:请求方法(get/post方法进行封装---URL的拼接(不同---参数转化为字典

拿到请求的返回值:解析返回值code,status,msg信息

断言

好处:

1、自动化测试用例和手工测试用例的完美结合,减少重复工作

2、配置灵活,可以自主切换测试环境,执行测试用例

3、常用功能进行封装,逻辑清晰,易于维护

4、统一执行入口,管理测试用例集:

run.py模块通过模糊查找来选择需要执行的测试用例

5、持续集成,定时构建,快速反馈

具体的在这个项目中自动化怎么应用到实际的,您对自动化结果的分析

完成所有的自动化测试框架的设计和实现后,进行接口测试,然后集成到

jenkins,配置定时执行,生成html报表,查看测试通过率,查看接口的功能

每次发版时,进行回归测试,新功能开发未提测前

 

 

PO 模式(Page Object Model),页面对象设计模式,UI 自动化测试中常用的设计模式。 使用 PO 模式的自动化测试脚本能减少大量重复代码,使测试脚本更加具有维护性,可读性更好,同时具备更高的复用性。

PO 模式的主要思想是把页面对象,包含页面上的控件以及操作控件的动作,抽象封装成一个类。测试业务逻辑的代码,基于页面对象来完成相应的页面操作,固定调用格式为:  

xxxPage.xxxComponent.xxxOperate

当页面有变动时,只需要修改 PageObject 类中的代码即可,测试业务逻辑的代码不用修改。使用 PO 模式和未使用 PO 模式的测试脚本代码,两者的区别可以通过下面的伪代码对比出来。

PO 模式伪代码:

class BaiduPage(){

    inputElement = findElemetByID("kw");

    searchButtonElement = findElemetByID("su");

    }

 

test_serach(keyWord){

    BaiduPage.inputElement.input(keyWord);

    BaiduPage.searchButtonElement.click;

    }

上面的伪代码只是抽象了页面控件,也可以把页面控件的操作也写到页面对象类中,抽象粒度需要结合业务实际来决定,并不是抽象维度越高越好。

非PO 模式伪代码:

test_serach(keyWord){

    inputElement = findElemetByID("kw");

    searchButtonElement = findElemetByID("su");

   

    inputElement.input(keyWord);

    searchButtonElement.click;

}

使用PO 模式,需要操作页面控件的测试方法中,按照固定的调用格式直接调用即可,不用再重复写页面控件的代码,页面控件一处编写可以多处复用。非 PO 模式,需要操作页面控件的地方,都需要再写一遍页面控件的代码,造成代码冗余还不利于维护。