面试问题
1、自我介绍:大概介绍了自己的工作经历
2、数据库问题:学生表中包含id、姓名、成绩、班级,求平均成绩
SELECT AVG(成绩) AS 平均成绩 FROM table
3、python的访问限制
在Python中,实例的变量名如果以__
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。
变量名类似__xxx__
的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量
以一个下划线开头的实例变量名,比如_name
,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
4、python的继承和多态
继承:子类获得父类的所有功能,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。
多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,在代码运行时,会调用子类的方法。
如果重写了构造方法的话,将会导致父类的构造方法无法被调用。解决办法:1、子类构造方法中调用基类构造方法 2、使用super函数
5、如何理解pageobject设计模式
把界面元素的定位和操作,封装成页面对象层的接口,减少代码冗余。测试用例只需调用这些接口实现功能,如果UI元素发生变化,只需调整页面对象层的代码,无需修改测试用例代码,提高用例的可维护性。
对用户来说,要进行邮箱登陆,需要关心的就是通过哪个浏览器打开邮箱网址,登陆的用户名和密码是什么,至于输入框,按钮时如何定位的,则不需要关心,测试用例只关心测试数据。
6、selenium查找元素常用什么方法
xpath和css
7、描述一下cookies,sessionStorage(会话存储)和localStrorage(本地存储)的区别
共同点:都是保存在浏览器端,且同源的。
区别:
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
数据的生命期 | 在设置的cookie过期时间之前一直有效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4K左右 | 一般为5MB | 一般为5MB |
与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在浏览器中保存,不参与和服务器的通信 | 仅在浏览器中保存,不参与和服务器的通信 |
8、什么样的项目适合自动化测试?自动化测试目的?如何编写自动化用例?
软件需求不会频繁变动,项目周期较长,系统界面稳定变动少,项目需要频繁回归测试。
目的:自动化测试仅仅在于让测试人员从繁琐重复的机械式测试过程解脱出来,把时间和精力突入到更有价值的地方,从而挖掘更多的产品缺陷。目前自动化测试更多的时候是定位在冒烟测试和回归测试。
编写自动化测试用例的原则:
1)一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。
2)一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)
4)脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5)如果对数据进行了修改,需要对数据进行还原。
6)在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。
9、自动化测试用例怎么执行的?
多进程并发执行,也可以使用selenium grid,在多个机器分布式执行测试用例,比如多平台多浏览器的兼容性测试。
10、做自动化遇到最大的困难
11、自动化脚本是定时执行的吗?多久执行一次
jenkins定时执行,每天一次。
12、请简单说明Python中的下划线和双下划线的作用
1)__foo__:以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识;
2)_foo: "单下划线"(_foo) 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
3)__foo:"双下划线" (__foo)开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据
13、请详细说明你的自动化框架实现思想和整体结构
包含两部分:接口自动化和UI自动化。
接口自动化使用unittest+request+ddt+HtmlTestRunner框架实现,整体结构:
1)配置文件:用于获取项目、测试数据(保存在excel)、日志、报告、用例等路径。
2)公共类:读取excel,查询mysql,http接口请求封装,日志打印,读取配置文件,发送邮件等。
3)测试用例:读取测试数据、ddt拆分数据、参数替换、执行http请求、保存登录cookie、断言并保存结果
4)测试结果:保存测试报告、日志
5)run.py: 加载和运行测试用例。
UI自动化使用pytest+selenium+allure框架实现,整体结构:
1)配置文件:用于获取项目、测试数据(保存在py文件)、日志、报告、用例等路径。
2)公共类:页面元素基类(封装公共操作,等待元素可见、存在、查找、点击元素、输入操作、获取元素属性、元素滚动、截图等),日志打印等。
3)业务界面类:封装各个页面的业务操作,比如用户登录、获取用户信息。
4)测试用例:读取测试数据、执行用例、断言。
5)测试结果:保存测试报告、日志
6)run.py: 加载和运行测试用例。