中高级软件测试工程师面试总结(一)

前几天面试了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+5a-5,即得到日志文件指定文字所在区域的前后五行。

 

3、你们测试的流程是什么样的?

(1)首先由SE规划处版本的需求,输出需求描述文档;

(2)SE对需求进行讲解,与会人员包括测试、开发、产品;

(3)开发人员对各自的需求进行详细设计;

(4)开发人员对详细设计进行讲解,包括SE、开发、测试;

(5)开发人员开始写代码,测试人员设计思维导图和测试用例;

(6)测试人员对用例进行讲解,与会人员包括测试、开发、SE,讲解过程也相当于评审;

(7)测试人员对评审后的用例进行修改、补充等,之后导入用例库;

(8)冒烟测试;

(9)单元测试,回归测试

(10)集成测试、回归测试

(11)系统测试、回归测试

(12)发布产品

(13)测试总结

 

三、随手科技

1、对登录功能做用例设计,界面上有用户名输入框、密码输入框和登录按钮。

  用户注册的时候,一般都会有字符类型及长度的限制。假如要求的是,只能是字母、数字和下划线。长度都是510位。

正常场景:

(1)用户名和密码全是5位数字

(2)用户名和面全是10位数字

(3)用户名和密码全是5位下划线

(4)用户名和密码全是10位下划线

(5)用户名和密码全是5位字母

(6)用户名和密码全是10位字母

(7)用户名和密码是字母、数字、下划线的组合5

(8)用户名和密码是字母、数字、下划线的组合10

(9)用户为普通用户

(10)用户为管理员账户

(11)用户为其他角色用户

(12)用户为自定义角色的用户

(13)用户被锁定又解锁后,能正常登录

(14)选择账号中的历史记录,输入密码能登录成功

(15)网络异常时登录未成功,网络恢复后再次登录

异常场景:

14位数字

211位数字

34位字母

411位字母

54位下划线

611位下划线

(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%的用例。

当然还需要根据产品的情况不断的总结经验,在容易出现兼容性的模块做重点测试。

转载于:https://www.cnblogs.com/yahutiaotiao/p/8331457.html

你可能感兴趣的:(中高级软件测试工程师面试总结(一))