前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >助力新年加薪,自动化面试题放送

助力新年加薪,自动化面试题放送

作者头像
ITester软件测试小栈
发布2022-01-19 15:34:12
4950
发布2022-01-19 15:34:12
举报
文章被收录于专栏:全栈测试全栈测试全栈测试

本文3124字,阅读约需7分钟

Hi,大家好,新的一年,你有什么Flag呢?想必加薪搞钱必定是其中一项,新年伊始,给大家分享一波自动化面试题。祝2022年加薪成功~

一 什么是PO模式,为什么要使用它?

PO是page Object 模式的简称,它是一种设计思想,意思是把一个页面,当作一个对象,页面的元素和元素之间的操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,分别为基础封装层BasePage,PO页面对象层,TestCase测试用例层。

Page Object是一种程序设计模式,将面向过程转变为面向对象(页面对象),将测试对象(按钮、输入框、标题等)及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。

这样,在Selenium测试页面中可以通过调用页面类来获取页面元素,从而巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。当页面元素id变化时,只需要更改测试Class中页面的属性即可。可以代码复用,降低维护成本,提高程序可读性可编辑效率。

PO模式优点:

  • 以页面为单位,集中管理元素和方法。当页面元素或流程变动时只需要修改相关页面方法即可,可不需要修改相应的脚本;
  • 编写脚本简单,顺着业务逻辑写脚本。page object模式以业务逻辑上的每一步操作作为分区点,页面方法代表了此页面的业务操作并严格控制此操作的后续流程;
  • 后期维护方便。

二 在Python中如何进行数据驱动测试?

① 在unittest中,没有自带的数据驱动,我们得借助ddt来实现。

1)安装ddt

2)ddt常用方法

② pytest框架,自带数据驱动实现,是通过@pytest.mark.parametrize(argnames,argvalues) 来实现参数化的。

③ 也可以根据自己需求用python实现数据的读取和驱动。

三 自动化使用的测试框架是什么?

测试框架: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:持续集成。

四 selenium自动化中quit和close的区别?

close是关闭你当前的tab页面;

quit是关闭全部浏览器tab页面,并退出浏览器session。

应用场景:

close用在执行用例过程中关闭某一个页面的操作。

quit一般用在结束测试之前的操作。

五 你们公司业务中,自动化和手工分别占多少?

各公司自动化和手工的占比取决于对自动化测试的投入,这个问题的回答建议先做好数据,比如我们的功能测试用例总计1000,从中分析出要实现的自动化用例300条,那么自动化的占比就出来了。那么哪些测试用例会被用来做自动化,稳定模块的用例、更能优先级高的用例。手工测试一般用来做新功能测试业务,自动化一般用来做旧的功能用来回归业务。

六 如何提高selenium脚本的执行速度?

1.优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;

2.减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;

3.中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载; 4.使用Selenium grid,通过testNG实现并发执行。在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

七 你平常做接口测试的过程中发现过哪些bug?

发现的Bug可总结如下:

  • 常规错误,接口没实现,没按约定返回结果,边界值处理出错等。
  • 输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理;
  • 输入错误的参数、多输入、少输入参数,接口可能出现的错误;
  • 安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等;
  • 性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等;

八 Python中dict和json格式怎么转换?

① dict转json

使用json.dumps,python对象编码成json对象。

示例代码如下:

输出结果如下:

② json转dict

使用json.loads,将json对象解码成python对象。

示例代码如下:

输出结果如下:

九 Python将如何2个元组合并成字典?

示例代码如下所示:

输出结果如下:

{'name': '公众号:ITester软件测试小栈', 'author': 'coco'}

十 Selenium有几种常见定位方式?

id:根据id来获取元素,返回单个元素,id值一般是唯一的;

name:根据元素的name属性定位;

tagName:根据元素的标签名定位;

className:根据元素的样式class值定位;

linkText:根据超链接的文本值定位;

partiaLinkText:根据超链接的部分文本值定位;

cssSelector:css选择器定位;

xpath:通过元素的路径、属性定位。

其中xpath和css定位都比较强大,在自动化中使用较多。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ITester软件测试小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档