01 什么是自动化测试,
自动化测试的优势是什么?
通过工具或脚本代替手工测试实行过程的测试都叫自动化测试。
自动化测试的优势:
淘汰回归测试成本
淘汰兼容性测试成本
提高测试反馈速率
提高测试覆盖率
让测试工程师做更有意义的测试
02 什么样的项目比较得当做自动化测试,
什么样的不得当做自动化测试?
得当做的项目:
项目周期长且相对稳固
必要做频仍的冒烟测试
必要经常做回归测试
必要举行大数据量的数据驱动测试
不得当做的项目:
项目周期短用例不会多次重复实行
被测项目不稳固变化太频仍
03 说一下开展自动化工作的告急流程是怎样的?
选择合适的测试工具
界说自动化测试覆盖的范围
制定测试计划
自动化测试环境搭建
脚本开辟
测试实行
测试脚本维护
04 在制定自动化测试计划的时候一般要考虑哪些点?
选择得当的测试工具或分析当前的工具是否得当新项目
选择合适的自动化测试框架
确定要做自动化测试的范围和不做自动化测试的范围
测试环境的准备与搭建
制定一个大略的脚本开辟的时间表
制定脚本实行的一些策略,如冒烟测试的频率、回归测试的时间点及频率等
界说自动化测试的输出,比如脚本、测试数据、发现的缺陷、测试报告等
05 编写自动化脚本时的一些规范?
统一的命名约定,如用例名、方法名等
精良的脚本表明
遵循代码规范,利用适当的缩进
对异常举行处置惩罚
06 你一般一天能编写多少个自动化脚本?
这个取决于测试用例场景的复杂度,一般一天能写~个左右,复杂的话一天只能写一个。
07 做自动化测试时关注的一些指标?
自动化测试用例的覆盖率=自动化测试用例数/所用用例总数,这个比例越高测试反馈越快,成本节省越多。
节省的时间成本=手工测试所花的时间-自动化测试所花的时间。
自动化测试的投入=开辟脚本的投入+脚本维护的投入+工具价格。
自动化测试发现的缺陷数,每次回归测试时自动化测试发现的缺陷数及漏测数,反应了自动化用例的有效性。
自动化测试投入产出比:
ROI=(手工测试的成本-自动化测试成本)/自动化测试成本。
ROI假如是负值阐明自动化测试的成本未收回,ROI为正值阐明自动化测试成本已接纳,且值越大阐明回报越好。
08 自动化测试可以到达100%的覆盖率吗?
比较难,因为有些用例场景无法被自动化,一些验证易用性友好性的用例不得当做自动化,有些边沿的用例很少被重复实行,从投入产出比来说也不得当做自动化。
09 你们公司开展自动化测试遇到一些什么问题?
项目流程不规范,项目变更频仍导致自动化用例维护成本高。
如何解决:深入理解用户需求,规范开辟流程,自动化用例先覆盖已经稳固的功能。
对自动化期望太高。
如何解决:自动化也是一个逐步完善的过程,不可能一下子完全代替手工。
有些自动化工程师的技术本领偏弱。
如何解决:提升编程本领、提升自动化工具利用本领、对新人举行培训等。
10 Selenium驱动浏览器利用的协议是什么?
JsonWireProtocol是通过利用WebDriver与remote server举行通信的Web Service协议。通过http请求,完成和remote server的交互。
11 Selenium工具都包罗哪些组件?
Selenium WebDriver:
Selenium IDE:
Selenium Grid:
12 Selenium中定位网页元素的八种方式?
13 WebDriver启动常见的浏览器语句?
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver = webdriver.Firefox()
- driver = webdriver.Ie()
复制代码 14 如何选中下拉列表中的下拉选项?
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # 通过选项的顺序,第一个为0
- select_by_index(index)
- # 通过value属性
- select_by_value(value)
- # 通过选项可见文本
- select_by_visible_text(text)
复制代码 15 如何取消选中下拉列表中的下拉选项?
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- deselect_by_index(index)
- deselect_by_value(value)
- deselect_by_visible_text(text)
- deselect_all()
复制代码 16 Selenium如何处置惩罚弹窗?
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # 确认
- driver.switch_to.alert.accept()
- # 取消
- driver.switch_to.alert.dismiss()
- # 在弹出框输入内容
- driver.switch_to.alert.send_keys("输入数据")
复制代码 17 Selenium可以处置惩罚Windows弹窗吗?
Selenium自己是不可以处置惩罚Windows弹窗的,但是Selenium可以借助Autolt小工具来完成对Windows弹窗的操纵。
18 如何判定一个元素在页面上是体现出来的?
webelement类中的is_displayed()方法。自己这个函数用于判定某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素)。
19 Selenium中如何判定元素是否存在?
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- from selenium.common.exceptions import NoSuchElementException
- # 判断元素是否存在
- def isElementPresent(self, by, value):
- try:
- element =self.driver.find_element(by=by, value=value)
- except NoSuchElementException as e:
- # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
- return False
- else:
- # 没有发生异常,表示在页面中找到了该元素,返回True
- return True
复制代码 20 driver.quit()和driver.close()的区别?
driver.close()仅关闭当前用户正在操纵的页面;
driver.quit()关闭整个浏览器,关闭所有的页面。
21 自动化测试用例从哪里来?
手工用例中抽取
参考自动化用例的实行策略
22 常见的自动化测试框架有哪些?
线性脚本框架、基于模块化的框架、库结构框架、数据驱动框架、关键字驱动框架、混淆框架等。
23 什么是POM?
POM中文字母意思是页面临象模型,POM是一种最近几年非常流行的自动化测试模型,或者说思想。
POM不是一个框架,是一个解决问题的思想。采用POM的目的是为相识决前端中UI变化频仍,从而造成测试自动化脚本维护的成本越来越大。
POM告急有以下长处:
把Web UI对象仓库从测试脚天职离,业务代码和测试脚天职离;
每一个页面临应一个页面类,页面的元素写到这个页面类中;
页面类告急包罗该页面的元素定位,和这些元素相关的业务操纵代码封装的方法;
代码复用,从而淘汰测试脚本代码量;
层次清楚,同时支持多个编写自动化脚本开辟,例如每个人写哪几个页面,不影响他人;
发起页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。
24 Selenium中如何保证操纵元素的乐成率?
也就是说如何保证我点击的元素一定是可以点击的?
添加元素智能等待时间driver.implicitly_wait()。
try方式举行id、name、class、xPath、css selector 不同方式举行定位,假如第一种失败可以自动实行第二种。
Selenium保证元素乐成率是通过元素的定位,当然它的定位方法很多,一定能有合适的。
但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的,必要开辟人员规范开辟习惯,如给页面元素加上唯一的name、id等,这样就能大大地提高元素定位的正确性。
当然假如开辟人员开辟不规范,我们在定位元素的时候尽量利用相对所在定位,这样能淘汰元素定位受页面变化的影响。只要我们元素定位正确,就能保证每一个操纵符合预期结果。
25 如何提高Selenium脚本的实行速率?
Selenium脚本的实行速率受多方面因素的影响,如网速、操纵步骤的繁琐程度、页面加载的速率以及我们在脚本中设置的等待时间、运行脚本的线程数等。以是不能单方面追求运行速率的,要确保稳固性,能稳固地实现回归测试才是关键。
我们可以从以下几个方面来提高速率:
淘汰操纵步骤,如经过三四步才气打开我们要测试的页面的话,我们就可以直接通过网址来打开,淘汰不必要的操纵。
停止页面加载,假如页面加载的内容过多,我们可以检察一下加载慢的原因,假如加载的内容不影响我们测试,就设置超时时间,停止页面加载。
在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后停止等待也可以提高速率。
设置实现多线程,在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高实行速率。
26 你的自动化用例的实行策略是什么?
自动化测试用例的实行策略是要看自动化测试的目的,通常有如下几种策略:
自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时实行的,比如每五分钟或是一个小时实行一次,在Jenkins上创建一个定时任务即可。
必须回归的用例,有些测试用例在产物变更上线之前都必要回归实行,那我们就把测试用例设置成触发式实行,在Jenkins大将我们的自动化测试任务绑定到开辟的build任务上,当开辟人员在测试环境上摆设代码的时候,我们的自动化测试用例就会被触发实行。
不必要经常实行的测试用例,像全量测试用例,我们没有必要不停回归实行,必竟还是有时间斲丧的,有些非告急业务线也不必要时时回归,这类测试用例我们就采用人工实行,在Jenkins上创建一个任务,必要实行的时候人工去构建即可。
27 什么是连续集成?
连续集成源于极限编程(XP),是一种软件实践,软件开辟过程中集成步骤是一个漫长并且无法猜测的过程。集成过程中可能会发作大量的问题,因此集成过程必要尽可能小而多,实际上连续集成讲的是不断的去做软件的集成工作。连续集成,最简单的形式是包罗一个监控版本控制(SVNGit等)变化的工具,当变化被发觉时,这个工具可以自动的编译并测试你的应用。
最后: 下方这份完备的软件测试视频学习教程已经整理上传完成,朋侪们假如必要可以自行免费领取 【保证100%免费】
这些资料,对于【软件测试】的朋侪来说应该是最全面最完备的备战仓库,这个仓库也伴随上万个测试工程师们走过最艰巨的旅程,希望也能帮助到你!
- 软件测试技术交流群社:746506216(里面还有工作内推机会,毕竟我们是关系社会。)
复制代码 软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
面试文档获取方式:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |