前几天面试了5家公司,因为这次面试的目的不是要真正的找工作,而是想通过面试发现自己存在的问题,然后花点时间弥补自己的不足,准备好之后再去投简历到想进入的公司。
1、本来以为自动化、性能、接口、安全(这个要求的不多)有一样比较熟悉就可以出去找个不错的工作了。但是面试的结果看来,只会一样,是达不到高级岗位的要求的。
2、高级岗位对应聘人员的要求也比较高,用人单位面试的时候会比较谨慎,如果面试过程有任何一个小问题回答不好,都可能被pass掉。
3、面试的几家公司,基本都对用例的设计能力有考察,这也是测试人员的基本功。用例的设计能力,主要是考察对正常场景用例的设计,一定要发散思维,考虑尽量多的情况,即便有些场景极少见,考虑的情况越多,说明思维越缜密。
各个公司面试问题总结:
一、湖南伦拜
1、有三个输入框,规定只能输入整数,功能是生成一个三角形。对这个功能设计用例。
一般对输入的长度有限制,比如为10位。
正常场景(所列场景还不够详细,应该用决策表法):
(1)三边长度都为一位正整数
(2)三边长度都为10位正整数
(3)一边为一位正整数,两边为10位正整数
(4)等边三角形
(5)等腰三角形
异常场景:
(1)有一边为0
(2)三边都为0
(3)两边之和小于第三边
(4)三边都是超过10位的正整数
(5)三边都是负整数
(6)小数
(7)分数
(8)特殊字符,如汉字、字母、标点符号、特殊字符
(9)网络异常
安全:
(1)URL越权
(2)前后台校验
(3)跨站伪造请求
(4)存储型XSS
(5)反射型XSS
(6)SQL注入
兼容性:
(1)不同版本浏览器
(2)不同的操作系统
性能:
(1)单用户使用时,响应时间
(2)大量户使用时响应时间
(3)数据较大时响应时间
2、测试分为哪几个阶段?
单元测试、集成测试、系统测试、α测试、β测试
二、中国正通汽车信息技术部
1、有一个二维数组,请用任何一种你熟悉的语言遍历其中的元素。
for i in len(a):
for j in .len(a[1]):
print(a[i][j])
2、有一个log文件,想找到含有“test”的一行,并输出它的前5行和后5行(用shell命令或脚本)
先用grep命令找到test所在的行,将行号打印出来,再用awk命令取行号,赋给变量a,最后用sed命令输出a+5和a-5,即得到日志文件指定文字所在区域的前后五行。
3、你们测试的流程是什么样的?
(1)首先由SE规划处版本的需求,输出需求描述文档;
(2)SE对需求进行讲解,与会人员包括测试、开发、产品;
(3)开发人员对各自的需求进行详细设计;
(4)开发人员对详细设计进行讲解,包括SE、开发、测试;
(5)开发人员开始写代码,测试人员设计思维导图和测试用例;
(6)测试人员对用例进行讲解,与会人员包括测试、开发、SE,讲解过程也相当于评审;
(7)测试人员对评审后的用例进行修改、补充等,之后导入用例库;
(8)冒烟测试;
(9)单元测试,回归测试
(10)集成测试、回归测试
(11)系统测试、回归测试
(12)发布产品
(13)测试总结
三、随手科技
1、对登录功能做用例设计,界面上有用户名输入框、密码输入框和登录按钮。
用户注册的时候,一般都会有字符类型及长度的限制。假如要求的是,只能是字母、数字和下划线。长度都是5至10位。
正常场景:
(1)用户名和密码全是5位数字
(2)用户名和面全是10位数字
(3)用户名和密码全是5位下划线
(4)用户名和密码全是10位下划线
(5)用户名和密码全是5位字母
(6)用户名和密码全是10位字母
(7)用户名和密码是字母、数字、下划线的组合5位
(8)用户名和密码是字母、数字、下划线的组合10位
(9)用户为普通用户
(10)用户为管理员账户
(11)用户为其他角色用户
(12)用户为自定义角色的用户
(13)用户被锁定又解锁后,能正常登录
(14)选择账号中的历史记录,输入密码能登录成功
(15)网络异常时登录未成功,网络恢复后再次登录
异常场景:
(1)4位数字
(2)11位数字
(3)4位字母
(4)11位字母
(5)4位下划线
(6)11位下划线
(7)特殊字符:<>”’\*?
(8)用户名错误
(9)密码错误
(10)用户名为空
(11)密码为空
(12)都为空
(13)网络异常
兼容性:
(1)不同版本浏览器
(2)不同的操作系统
安全:
(1)URL越权
(2)前后台校验
(3)跨站伪造请求
(4)存储型XSS
(5)反射型XSS
(6)SQL注入
(7)密码是否加密显示
(8)密码传输过程中是否加密
(9)多次输入密码错误是否会有控制措施,如锁定IP、锁定用户账号等
(10)如果没有记住密码的功能,点击历史记录中的账号,不能自动填充密码
性能:
(1)单人登录时响应时间
(2)大量用户登录时响应时间
(3)登录时,资源消耗情况(CPU、内存、IO、网络)
2、Jmeter能不能做分布式部署?如果能,如何配置?
在bin目录下的jmeter.properties文件中的remote_hosts处填写负载机的IP和端口号(1099),如果有多个,则用逗号分开。然后启动每个Jmeter上的jmeter-server.bat服务。在“运行—>远程启动”中选择需要远程启动的执行机(每一个执行机上面都要放同样的脚本)。
3、有一个列表,列表中都是整数,请用一种你熟悉的语言设计一个函数,要求统计这个列表中每一个元素出现的次数,并按照出现次数的多少,由大到小输出它的前N个数。
def printTopN(list1, num):
dict1 = {}
for i in list1:
if i not in dict1:
dict1[i] = list1.count(i)
list2 = sorted(dict1.items(), key=lambda x:x[1],reverse=True)
for j in range(num):
print(list2[j][0])
4、有没有做过接口自动化测试?
用unittest框架做接口自动化测试。
5、Jmeter做接口测试时,如果用户名密码要进行加密,要怎么处理?
答:向开发人员要加密的类,Class文件或打包成jar文件都可以,然后导入到Jmeter中,在接口方法的预处理处,调用加密的方法,对用户名和密码进行加密。然后再执行接口方法的请求。
6、有没有做过App测试?
手动测试过安卓app
四、金山软件WPS
1、对excel单元格的合并功能设计用例。
2、对单元格的排序功能设计用例。
3、对协程编辑功能做用例设计。
4、在自动化测试过程中,如果数据库是公用的,不能重装,即数据库中的数据不能初始化,你是怎么做的?
答:再执行测试之前做一个预处理的动作,将数据库中相关表清空,再插入要测试的数据。之后再执行测试用例。
5、你没有做过接口自动化,如果让你搭建好一个接口自动化的框架,你觉得能完成吗?
答:有做过。有两种方式,一是用Jmeter做接口测试;二是用unittest做接口自动化测试。接口自动化测试和UI自动化测试整体的思想都是相似的,就是需要对用例做统一管理,要有日志,测试报告等。只需要把接口调试通,然后再放在框架里面就可以了。无非是等用例越来越多之后,需要对框架不断的调整和优化,以及功能模块的扩展。
6、你做过web端的测试,对web端的测试有什么看法或总结吗?
答:我觉得web端的测试最难把握的是对浏览器兼容性的测试。因为浏览的种类很多,不同浏览器的版本又有很多,但是测试的人力和时间都有限,要在有限的时间里做好浏览器兼容性的工作,就需要制定好兼容性的测试策略。
比如,如果业务是ToBy的,就要调查好客户使用的是什么浏览器以及浏览器的版本,如果是ToC类的业务就需要根据用户的群体使用浏览器的习惯和频度,对要测浏览器的重要程度做一个排名。在用户使用最多的浏览器上执行全量的用例,而在其他浏览器及版本上执行10%至50%的用例。
当然还需要根据产品的情况不断的总结经验,在容易出现兼容性的模块做重点测试。