自动化测试部分面试题的整理

举例来说一下你的自动化测试是怎么做的?

参考答案:就拿简历上的xxx项目来说吧,在编写脚本前,我们会对系统进行评估,确认这个系统可不可以实现UI自动化,如果可以的话,就筛选出能实现自动化测试的用例,一般优先把冒烟测试用例的转为成脚本。我们是用selenium工具来实现自动化,采用python脚本语言,基于unittest框架进行用例的编写。比如,下单这个功能的脚本,我们是这样做的:首先,我们会构建一个测试工程,测试工程包含testcase,主要用来存放测试用例,report用来存放测试报告,其次我们会把用例中公共的部分封装到public中,最后用runAllCase的python文件运行项目自动化用例,脚本调试完后,我们会用jenkins持续集成工具,设置脚本每天晚上10点跑一遍脚本,跑完后生成html格式的自动化测试报告。

自动化脚本失败的原因:

可能是测试环境的网络不稳定;
开发修改了代码没通知到测试人员修改脚本;
开发引入了新的问题。

测试脚本用到了哪些技术?

参考答案:元素定位,表单切换,模块调用,JS定位等等,脚本是基于python自带的unittest单元测试框架,采用了模块化方式编写,把复用性高的操作封装到公共模块中,如果脚本需要用到对应的操作,直接调用就可以了,如果元素发生变化,只需要调整元素封装的代码就可以了,提高测试用例的可维护性。

xpath和CSS定位方式的区别:

1、语法不一样;
2、CSS定位比较稳定。

脚本怎么组织的?(编写自动化脚本,你的思路是什么?)

参考答案:构建一个测试工程,测试工程包含testcase,主要用来存放测试用例,report用来存放测试报告,其次我们会把用例中公共的部分封装到public中,最后用runAllCase的python文件运行项目自动化用例。测试脚本使用的是python的unittest单元测试框架组织管理,将所有测试脚本通过单元测试框架组织起来运行,这样做的好处是,维护起来方便,可以生成测试html格式的测试报告,报告包括:测试用例,通过数,失败数。

自动化率多少?

一般是30%到40%,这个没有固定的,我们是优先将优先级高的测试用例,比如,冒烟测试的测试用例转换成自动化脚本的,后面有时间的时候再不断补充,能写多少写多少。

自动化脚本的通过率是多少?(注意这个题目的意思)

参考答案:这个说不准,如果没有什么异常情况,自动化脚本都是100%运行通过;如果异常情况比较多,比如出现测试环境不稳定,或者开发修改了代码没通知到测试人员及时修改脚本,又或者开发引入了新的问题等等,自动化脚本通过率可能80%都不到。

用那个方法判断元素是否显示

is_displayed()

你曾经都写过多少自动化测试用例?

这个具体没有算过。但是只要有时间,模块稳定的功能都会写。就拿上个项目来说,自动化测试用例大概写了将近有100-120条这样子吧。

python3 的数据类型有哪些?

int (整型)
float (浮点型)
str(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
不可变数据(四个):int (整型)、float (浮点型)、str(字符串)、Tuple(元组)、Set(集合);
可变数据(两个):List(列表)、Dictionary(字典)。

面:unittest框架了解吗?

参考答案:unittest框架,由setUp()–环境预置,testCase()— 测试用例 tearDown()----环境恢复,三大部分组成,unittest框架可组织执行测试用例,并且提供丰富的断言方法,判断测试用例是否通过,最终生成测试结果。

怎样用python连接mysql数据。

参考答案:我们之前主要是用python语言来写web端的自动化测试脚本,连接数据库的话,我们主要使用pymysql这个模块来进行连接的。一般在进行完自动化测试之后,我们会连接上数据库,将数据进行清除

用python做过接口测试自动化测试吗?

参考答案:我们之前主要是用python语言来写web端的自动化测试脚,接口是用Jmeter来做的,用python写接口的脚本也在网上学习过,主要使用到requests模块,但是工作中没用用过,到时候工作需要的话,再学一下应该没问题。

元素定位失败的原因

页面的元素未加载完成
元素的属性值不唯一
元素的属性值是动态值
元素在另外一个表单
元素在另外一个页面

自动化脚本,如何切换不同的浏览器

参考答案:使用对应的浏览器驱动,然后在脚本中更换不同的浏览器。

python怎么定义一个函数,怎么定义一个类

def 函数名:
函数体
class 类名:
属性
方法

有些元素,在谷歌浏览器上能定位,在火狐浏览器上定位失败,是什么原因呢?

参考答案:因为不同浏览器的内核不一样,他们的CSS样式不一样。

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

提高网速;
少用sleep,多用隐式等待或显式等待。
提升电脑配置

元素定位的方式有哪些

d.find_element_by_id(‘id的值’)
d.find_element_by_name(‘name的值’)
d.find_element_by_class_name(‘class的值’)
d.find_element_by_tag_name(‘标签名’)
d.find_element_by_link_text(‘完整的文本链接’)
d.find_element_by_partial_link_text(‘部分的文本链接’)
d.find_element_by_css_selector(‘css表达式’)
d.find_element_by_xpath(‘xpath表达式’)
js定位

如何切换iframe

switch_to.frame()

如何切换窗口

switch_to.window()

鼠标悬停的方法是什么

鼠标悬停用到ActionChains类提供的move_to_element方法

如何定位下拉框

需要导入Select类,可以使用下标、值和文本定位

如何获取弹出警告框的text

switch_to.alert.text

什么样的项目适合做自动化

项目周期长,版本多,界面元素稳定的项目

selenium如何做兼容性测试

使用对应的浏览器驱动,然后在脚本中更换不同的浏览器。

为什么会生成HTML报告

使用了HTMLTestRunner第三方工具包来实现的

脚本运行出错,应该怎样定位,说出分析过程

运行结束之后我们会得到一个测试报告,我们根据测试报告先定位一下是脚本的原因还是程序的原因,一般来说脚本的原因在报告中都会显示出哪一行代码出错了,如果是程序的原因通常来说都是断言的问题。

如果系统有验证码,怎么做自动化?

去掉验证码。
设置万能验证码。
用python调用OCR模块,自己写代码来识别。这种方法可以识别出简单的验证码。
调用第三方平台提供的接口进行识别。比如:斐斐打码,尖叫数据这些平台接口。

setUp(),tearDown()和setUpClass(),tearDownClass()的区别:

参考答案:当测试用例有多个,setUp()和tearDown()就会被执行多次;不管测试用例有多少个,setUpClass()和tearDownClass()只会被执行一次。

python的第三方模块/标准库有哪些?

time,random,unittest,selenium,HTMLTestRunner

python的pass语句的作用是什么?

参考答案:占位符,当方法没有内容时,防止出现语法错误。

自动化写过哪些模块的脚本?

参考答案:主要是把冒烟测试的用例转化为脚本,比如,我这个xx商城系统,做自动化的模块有后台的上架商品,订单查询,添加团购活动,促销活动,前台的搜索商品,添加商品到购物车,下单等等。

元素的属性值是动态变化的,怎么定位这个元素?

参考答案:如果元素有属性值是动态变化的,我们就不要使用这个属性进行定位;我们可以使用这个元素的非动态变化,并且是唯一的值属性进行定位;也可以使用xpath或者css,使用层次+属性的方式定位。

webdriver的原理是什么?

参考答案:浏览器的驱动,接收客户端发过来的指令(指令就是我们的脚本),浏览器的驱动根据接收到的指令,驱动浏览器工作。

你们是怎么检查自动化的结果是不是正确的?

参考答案:我们会用unittest单元测试框架提供的断言方式来检查实际结果和预期结果是否一致,常用的断言方式有assertEqual(),assertIn(),还有一些其他的,不常用就没记了。

怎么样提升自动化脚本成功率

1.在容易失败的地方,加上sleep
2.尽量定位一些稳定的元素
3.使用try…except多中方式定位

run_all_case中有哪些内容?

run_all_case具体的内容不太记得了,一般都是直接使用的,一般需要修改的是测试报告的路径,测试用例的路径,还有用例的匹配规则。

自动化的优点和缺点?

自动化的优点的话,可以提升测试的效率,比如我们之前是将冒烟测试的用例转换成自动化用例。可以节省自己的测试时间。
缺点的话,可能他的执行速度比较慢,其次他对于测试人员的代码能力需要一定要求。

unittest单元测试怎么安装的?

参考答案:不需要安装,是python自带的,直接通过import 关键字引用就可以了。

pytest了解吗?

参考答案:也是python的一个单元测试框架,它的用法比unittest框架复杂些。自动化测试我们一般是基于unittest框架来做的,pytest用的少,以后工作需要,我业余时间学习一下,很快上手。

po(page object:页面对象)设计模式了解吗?

参考答案:po还是了解的。po是web自动化测试目前最佳的一种实践方式,简单来说就是类和类之间的封装和调用。
包括基础类、页面类、用例层等部分。目前正在往这个方面进阶脚本。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值