1、自动化测试怎么做?
参考答案: 自动化测试,是在手工测试之后进行的,是将手工测试用例转化为自动化测试脚本,用于回归测试。 首先,我们会对手工测试用例进行评估,一般选取正常场景的,复杂度不高,复用性高手工测试用例来转化为脚本。我们是用selenium工具来实现自动化,采用python脚本语言,基于unittest框架实现。首先,我们会构建测试套,测试套包含public部分(包括测试用例中公共的部分),testCases(存放测试用例),reports(存放测试报告),runAllCases(用于运行项目自动化用例)等,脚本调试完后,我们会用jenkins持续集成工具,设置脚本每天晚上8点跑一遍脚本,跑完后生成html格式的自动化测试报告,并自动把测试结果以邮件的形式发送给指定的脚本负责人,相关人员第二天上班第一时间就要检查测试报告中有没有失败的脚本,如果失败,就定位一下脚本失败的原因,(失败的原因:1)、可能是测试环境不稳定;2)、开发修改了代码没通知到测试人员修改脚本;3)、开发引入了新的问题),如果是脚本问题,就修改脚本,如果是系统的问题,就提交问题单给开发修改。
2、测试脚本用到了哪些技术?
参考答案:元素定位,表单切换,模块调用,获取指定文本信息等等,脚本是基于python自带的unittest单元测试框架,采用了模块化方式编写,把复用性高的元素封装到模块中,如果脚本需要用到对应的元素,直接调用就可以了,减少了冗余代码,如果元素发生变化,只需要调整元素封装的代码就可以了,提高测试用例的可维护性。
xpath和CSS定位方式的区别: 1、语法不一样; 2、CSS定位比较稳定。
3、脚本怎么组织的?
参考答案:构建测试套,测试套包含public部分(包括测试用例中公共的部分),testCases(存放测试用例),reports(存放测试报告),runAllCases(用于运行项目自动化用例),测试脚本使用的是python的unittest单元测试框架组织管理,将所有测试脚本通过单元测试框架组织起来运行,这样做的好处是,维护起来方便,可以生成测试html格式的测试报告,报告包括:测试用例,通过数,失败数。
4、自动化率多少? 一般是30%到40%
5、问:你们自动化脚本的通过率是多少?(注意这个题目的意思)
参考答案:这个说不准,如果没有什么异常情况,自动化脚本都是100%运行通过;如果异常情况比较多,比如出现测试环境不稳定,或者开发修改了代码没通知到测试人员及时修改脚本,又或者开发引入了新的问题等等,自动化脚本通过率可能80%都不到。
6、用那个方法判断元素是否显示 is_displayed()
7.你曾经都写过多少自动化测试用例?
这个具体没有算过。但是只要有时间,模块稳定的功能都会写。就拿上个项目来说,自动化测试用例大概写了将近有70-80条这样子吧。
8、python3 的数据类型有哪些?
Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) 不可变数据(四个):Number(数字)、String(字符串)、Tuple(元组)、Sets(集合); 可变数据(两个):List(列表)、Dictionary(字典)。
9、面:unittest框架了解吗?
参考答案:unittest框架,由setUp()--环境预置,testCase()--- 测试用例 tearDown()----环境恢复,三大部分组成,unittest框架可组织执行测试用例,并且提供丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
10、app自动化做过吗?
参考答案:没有做过,不过和web端自动化的测试思路差不多的,也要用到元素定位,unittest框架这些,使用appium工具,如果以后工作需要,我会利用工作之外的时间,买这方面的书或到网上找这方面的资料来学习。
11、怎样用python连接mysql数据。
参考答案:我们之前主要是用python语言来写web端的自动化测试脚本,没有连过mysql数据库,到时候工作需要的话,学一下很快就能上手了。 PS:确实没接触过的知识,先告诉人家,你确实没做过,如果以后工作需要,你能够很快学会。
12、用python做过接口自动化吗?
参考答案:我们之前主要是用python语言来写web端的自动化测试脚本,接口测试是用Jmeter来做的,用python写接口的脚本也在网上学习过,但是工作中没用用过,到时候工作需要的话,再学一下应该没问题。
13、元素定位失败的原因 1)、等待时间太短 2)、元素不唯一 3)、元素值是动态值 4)、元素在另外一个表单 5)、元素在另外一个页面 6)、元素在前端是隐藏元素
14、元素定位的8种方式:
find_element_by_id();find_element_by_name();find_element_by_class_name();
find_element_by_tag_name();find_element_by_link_text();
find_element_by_partial_link_text();find_element_by_xpath();
find_element_by_css_selector();
15、如何切换iframe?
switch_to.frame()
16、如何切换窗口?
window_handles 获取所有窗口,以列表的形式返回 switch_to.window() 切换窗口
17、鼠标悬停的方法是什么?
首先要把ActionChains类导进来,引入ActionChains类的方法如下: from selenium.webdriver import ActionChains;move_to_element() 将鼠标移动到对应的元素 ;perform() 执行所有ActionChains中存储的行为,即让悬停的动作生效
语法:ActionChains(d).move_to_element(login_ele).perform()
18、如何定位下拉框?
三种常用选择方法:
Select(element).select_by_index(index) 根据index定位,从0开始
Select(element).select_by_value(value) 根据值定位
Select(element).select_by_visible_text(text) 根据文本定位
19、如何获取弹出警告框的text?switch_to.alert;该方法,包含三个属性: text 返回告警信息中的文字信息。 accept 点击确认按钮。 dismiss 点击取消按钮
20、selenium如何做兼容性测试?在不同浏览器上测试
21、什么样的项目适合做自动化?周期长,版本多,界面元素比较稳定的项目
22、selenium的工作原理是什么?C/S架构,C自动化脚本,S浏览器端
23、为什么会生成HTML报告?利用html testrunner第三方的包来实现
24、怎样提高自动化脚本的执行率
1、用implicitly wait,少用sleep
2、用独立的环境跑自动化脚本
3、用CSS定位