zoukankan      html  css  js  c++  java
  • 中高级软件测试工程师面试总结(一)

    前几天面试了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%的用例。

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

  • 相关阅读:
    mysql存储过程(查询数据库内表 游标循环 if判断 插入别的表内)
    Java中调用文件中所有bat脚本
    读取pdf内容分页和全部
    前向传播
    Broadcasting 维度扩张的手段
    维度变换
    Selective Indexing
    tensorflow索引和切片
    创建tensor
    c++线程中使用detach()导致的内存非法引用问题
  • 原文地址:https://www.cnblogs.com/yahutiaotiao/p/8331457.html
Copyright © 2011-2022 走看看