前言
关于Python自动化测试学习,总结了一个学习规划图,分享给大家(看不清点原图链接)
原图链接:https://shimo.im/docs/pwCpGXKWDKPKDJDK/
全网最全自动化测试面试题
简单阐述一下你对自动化测试的理解
自动化测试是一种使用自动化工具编写和执行测试人员测试脚本和案例的技术。
自动化测试的主要目标是减少手动运行的测试用例数量,而不是完全取消手动测试。
一、你会封装自动化测试框架吗?
当然会(回答果断一点),自动化框架主要的核心框架就是分层+PO模式:分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。
二、请简单描述一下自动化测试的流程
编写自动化测试计划设计自动化测试用例编写自动化测试框架和脚本调试并维护脚本无人值守测试后期脚本维护(添加用例、开发更新版本)
三、上一个项目中自动化测试的执行策略?
上一个项目中是定时执行的,设置的执行时间是晚上12点,执行完毕后会自动发送邮件通知
四、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?
引用自动化测试之后,可以代替大量繁琐的回归测试工作,能把业务测试人员解放出来,能让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
五、良好的自动化工具的主要特征是什么?
测试环境支持且易于使用良好的调试设施强大的物体识别对象和图像测试能力对象识别测试数据库支持多个框架
六、哪些是最受欢迎的自动化测试工具?
QTP(HP UFT)理性机器人Selenium
七、你对Selenium的了解,阐述一下?
Selenium是一个免费的(开源)Test Suite框架。它用于自动化Web和移动环境。它包括
Selenium IDE(浏览器插件 - 录制和播放工具)
Selenium WebDriver
Selenium Grid(分布式测试)
Selenium支持Java,C#,Python,Ruby,PHP,Perl,Javascript等语言的脚本编写。
八、你如何从Selenium连接到数据库?
Selenium是一个Web UI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。在下面的例子中,我们假设正在使用Java。
一个Connection对象表示与数据库的连接。当我们使用连接方法连接到一个数据库时,我们创建了一个连接对象,它代表了与数据库的连接。单个数据库可能有一个连接或多个连接,还可能有多个连接到不同的数据库上。
我们可以使用Connection对象来做以下事情:
创建用于执行SQL语句的Statement,PreparedStatement和CallableStatement对象。可以帮助我们提交或回滚一个JDBC事务。如果你想知道连接到的数据库或数据源信息,Connection对象通过使用DatabaseMetaData就可以收集有关数据库或数据源的信息。可以帮助我们关闭数据源。Connection.isClosed() 方法只有在调用了Connection.close()时才返回true,此方法用于关闭所有连接。
首先我们需要通过使用DriverManager.getConnection()方法,建立与数据库的连接。这个方法接受一个包含URL的字符串。DriverManager类尝试查找可以连接到由字符串URL表示的数据库的驱动程序。每当调用getConnection()方法时,DriverManager类都会检查可以连接到URL中指定的数据库的所有已注册的Driver类的列表。
句法:
String url = “jdbc: odbc: makeConnection”;Connection con = DriverManager.getConnection(url, “userID”, “password”);
九、Selenium中有哪些验证点?
Selenium主要有三种验证点 -检查页面标题检查某些文字检查某些元素(文本框,下拉菜单,表等)
十、在上一家公司做自动化测试用的什么框架?
可以说出以下自己擅长的一种:
python+selenium+unittest+htmltestrunnerpython+selenium+pytest+allurerobotframework+Selenium2Library
十一、如果一个元素无法定位,你一般会考虑哪些方面的原因?
页面加载元素过慢,加等待时间页面有frame框架页,需要先跳转入frame框架再定位可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成
十二、你如何处理使用Selenium的Ajax控件?
来看一个例子。假如一个文本框是一个Ajax控件,当我们输入一些文本时,它会显示自动建议的值。
处理这样的控件,需要在文本框中输入值之后,捕获字符串中的所有建议值;然后,分割字符串,取值就好了。
十三、自动化中有哪三类等待?他们有什么特点?
线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码
十四、什么是PO模式,为什么要使用它?
PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,
分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
十五、自动化测试与测试自动化的区别。
测试自动化:测试脱离人工,对于控制成本,控制质量,减少测试周期有积极的影响
自动化测试:将测试的部分或者全部交由机器执行的一种测试,叫做自动化测试,比手工测试昂贵。
自动化测试可以看成测试自动化的一部分。
十六、什么是关键字驱动?
按下数字1的时候,会发出1的声音
按下数字2的时候,会发出2的声音
按下数字3的时候,会发出3的声音
把它们使用python封装成一个个函数,那么这一个个函数就是所说的关键字驱动,
每一个关键字驱动一个业务,这便是关键字驱动了。
十七、在什么条件下我们不能使用Agile方法的自动化测试?
当敏捷测试总是要求改变需求时
当敏捷需要详尽的文档级别时
仅适用于敏捷测试期间的回归测试,如持续集成
十八、解释Sikuli是什么?
Sikuli是一个使用“Visual Image Match”方法自动化图形用户界面的工具。Sikuli中的所有Web元素都应作为图像存储在项目中。
十九、Selenium和Sikuli有什么区别?
Selenium:
它不能自动化视频播放器,音频播放器等闪存对象。它有复杂的API它没有视觉匹配它只能自动化Web应用程序
Sikuli:
它为自动化Flash对象提供了广泛的支持它有简单的API它使用视觉匹配来查找屏幕上的元素。因此,我们可以自动化我们在屏幕上看到的任何内容 它可以自动化Web和Windows应用程序
二十、什么是POM,为什么要使用它
POM是Page Object
Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,所以自然而然就用了类的思想来组织我们的页面。一般一个页面写一个类文件,这个类文件包含该页面的元素定位和业务操作方法
为了我们测试用例写的简单,清晰,我们很多时候在页面对象会封装很多业务操作方法,测试脚本只需要调用相关方法就可以。
还有一个可能和这个问题相关的面试题,如果页面元素经常发生需求变化,你是如何做,答案就是采用POM思想。好处就是只要该一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。
二十一、在你做自动化过程中,遇到了什么问题吗?举例下
这个问题,不管是自动化还是任何工作,都会被问到。主要想知道你是如何解决问题的,从而推断你问题分析和解决的能力。
当然有遇到问题和挑战,主要有以下几点:
频繁地变更UI,经常要修改页面对象里面代码运行用例报错和处理,例如元素不可见,元素找不到这样异常测试脚本复用,尽可能多代码复用一些新框架产生的页面元素定位问题,例如ck编辑器,动态表格等
听说CSDN新开发一键三连功能了?如果本篇博客对你有帮助,请支持下博主哦