测试面试题
测试面试题
自我介绍
各位老师好,我叫XX,今年29岁。我于2017年7月进入测试行业,到目前已有5年多的测试经验,目前就职于XX公司负责xx运行指挥平台和xx智能云系统的测试工作。
这两个项目都是一个消息处理平台,主要负责接收各个系统的数据和为各个系统提供所需数据等。因此,在日常工作中主要负责报文解析入库、HTTP接口、前端页面的功能测试以及对应的自动化测试。
在功能测试中,我主要负责编写测试计划、测试用例,以及后期的测试执行和编写测试报告等工作。
在自动化测试中,我们所使用的的框架为RF,我主要负责编写测试代码、自动化测试用例。
目前,我比较擅长功能测试和接口自动化测试,对于其他方面的测试技能也正在学习中。
以上就是我目前的大概情况。谢谢
工作流程
1、产品人员根据客户需求编写需求文档
2、开发人员根据需求文档编写对应的详细设计文档:描述实现什么功能、功能实现逻辑等
3、进行需求文档、详细设计文档评审:讲解需求,解决疑问
4、评审通过后开发进行功能开发;测试人员编写测试计划(测试范围、测试方法、测试环境、测试工具、时间进度、风险预估等)、测试用例
5、用例评审:讲解用例设计思路、测试点
6、功能开发完成后,根据测试需求搭建测试环境并进行冒烟测试并跑一边以前功能的自动化用例(确保以前的功能是正确的)
7、冒烟测试通过后正式进入测试阶段(未通过时会将工单退给开发进行修改)
8、如果在正式测试阶段未发现缺陷,在测试完成后,编写相应的测试报告、发送邮件等
9、如果在正式测试阶段发现了缺陷,就提交缺陷,在测试完成后准备第二轮测试
10、最后编写该版本的自动化用例
如何设计接口测试用例
1、我们在进行接口测试时主要分类两个测试方向
⑴ 对于功能逻辑的测试: 这里主要是根据功能逻辑(业务场景)来确定测试点(确保请求参数是正确的)
①无返回数据时进行请求
②有返回数据时请求
③需要登录的接口未进行登录
⑵ 对于参数的测试: 这里主要是测试参数值在不同情况下的返回
①必填参数:必填参数为空
②可选参数:可选参数一般用于过滤数据,过滤作用是否正确
③参数类型(字符串、数字、布尔等)
④参数值(中文、英文、特殊字符)
⑤参数为空
⑹参数长度:边界值
2、其余的话还会有性能测试、安全测试等
⑴由于我们功能有对应的专项测试团队,因此对这部分测试接触的比较少
自动化实现流程
1、我们自动化测试主要分类两类:
⑴报文解析入库:XML报文和JSON报文
⑵HTTP接口
2、报文解析入库:
⑴构造测试数据:采用读取报文文件或者组装报文的方式
①读取报文:在用例层通过文件路径参数读取指定的文件内容
②组装报文:使用Python第三方库ElementTree
⑵插入报文:通过SQL将报文插入到原始报文表(服务定时读取表中的报文进行解析)
⑶使用SQL查询经服务解析入库数据
⑷对比数据:报文数据与查询数据进行对比
⑸断言对比结果是否一致
3、HTTP接口:
⑴接口自动化我们主要使用的是Python自带的requests库进行发送请求
⑵新增接口:通过SQL将新增到数据库中的数据查询出来与请求参数进行对比
⑶查询接口:通过SQL查询数据库中数据与请求返回数据进行对比
注:
1、自动化用例主要是为了在新版本中验证以前功能是否正确,因此每次新版本中我们都会跑一边自动化
2、在自动化测试中我觉得的难点主要有:
⑴业务上:首先对于有些业务逻辑上就会存在一些难点,比如有些接口会涉及到多张表的链表查询等
⑵数据的处理:比如在报文解析入库中,实际入库数据可能与报文内容不一致(经过查询转换、拼接),因此为了后续的数据对比,就必须按照一定的要求处理这些数据
如果项目在上线后才发现Bug怎么处理
1、首先我们会评估Bug的影响范围
⑴根据bug影响的用户数量、bug的严重程度等方面来分析
⑵比如否为核心业务、是否涉及到资金财产损失等比较敏感的功能
2、然后我们会根据bug的影响范围来分别处理
⑴影响范围比较小的bug:一般会通过修复bug的方式来解决
①了解bug出现的场景,业务操作,努力复现bug。等BUG解决后及时验证并自动化回归其他功能
⑵影响范围比较大的bug:延期或回滚
3、当线上问题解决后,我们还需要对问题进行复盘,避免同样的问题再次发生:
⑴分析bug的根本原因,考虑如何避免此类问题再次发生
如何测试一个功能
1、面试时,有些面试官就会问如何测试一个功能(如何设计测试用例)
2、当遇到这类问题时,一定要整理好自己的思路,明确测试流程
⑴第一步:要想好这个功能是怎样的一个操作逻辑(流程图)
⑵第二步:这个功能按照操作(逻辑)可以分为哪些小模块(小功能)
⑶第三步:根据第二步细分的小模块依次进行测试点分析
测试流程
1、首先我会查找相关的需求、设计等文档:理解功能实现逻辑、分析测试需求等,以做到心中有数
2、然后根据测试需求编写测试用例,执行测试
测试用例
1、测试用例的话,主要可分为功能性测试用例、非功能测测试用例
⑴ 功能性测试: 按照需求文档来检查各个功能点是否正确实现
①比如:对于输入框的测试、跳转按钮的测试等
②输入框的测试可以使用"等价划分法"和"边界值法"设计测试用例:字符长度、字符类型(中文、英文、特殊符号等)、为空
⑵ 非功能性测试:
①界面测试:以一个用户的身份进行测试整个界面的易用性、布局等是否合理
②性能测试:并发量、响应时间、CPU等
③安全测试:敏感信息是否加密、鉴权、SQL注入等
④兼容性测试:不同浏览器、不同操作系统
⑤网络测试:弱网、不同网络(4G、5G、WIFI)
如何保证产品的质量
1、我觉得最重要的是有一个完整且严格的开发流程:从需求到开发再到测试最后到上线,这些环节都是环环相扣的,任意一个环节的错误都有可能导致出现问题。比如:
2、需求阶段:
⑴首先要明确功能需求,尽量避免出现中途添加需求的情况
⑵需求文档尽量详细、全面。特别是不要出现"一句话需求"的情况
⑶认真做好需求评审,尽量所有涉及人员参加(这也是为什么测试需要尽早介入)
3、开发阶段:
⑴认真按照需求文档来设计、编写功能,有问题及时与需求人员确定,不能想当然的设计
4、测试阶段:
⑴首先测试人员应该严格按照测试流程执行:需求分析->编写测试计划->编写测试用例->冒烟测试等
⑵其次对于测试人员本身能力应该有一定要求,比如常见的问题分析能力、环境搭建、功能使用等
5、发布阶段
⑴这部分由于没有怎么涉及到,因此不是很了解。比如什么预投产呀、线上验证等
如何提交一个bug
1、主题:简单且准确的描述BUG的产生的操作和现象
2、重现步骤:简短、明了、有效的描述BUG复现步骤
3、实际结果
4、期待结果
5、严重性、优先级
6、影响版本
7、测试环境
8、重现率
测试职业规划
因为现在我已经有两年多的测试经验了嘛,因此对测试流程以及测试方法等方面是有个比较好的掌握了。后面的话,我个人的打算是学习工具的使用(postman、jmeter等),进一步提高自己的编程水平,以及其其他与测试相关领域的拓展
web测试和手机app测试的异同点
相同点
1、测试流程:每个公司项目的测试流程都是大同小异的(编写测试用例)
2、测试方法:功能、性能等这些测试方法差不多吧,只是可能具体的关注点和工具会有不同
3、都需要做非功能性测试:关注用户体验
不同点
1、相对于web测试外,app测试除了要考虑基本的功能、性能等,还需要考虑手机本身固有的属性特征等,如:
手机作为通讯工具,所以来电、去电、接受短信等都需要考虑(中断测试)
2、app需要安装卸载更新操作
直接安装最新版本
卸载旧版本,安装新版本
不卸载旧版本直接覆盖安装新版本
web项目为b/s架构,基于浏览器,而app是c/s架构的,必须要有客户端。
在更新方面:web只要更新了服务器,客户端就会同步更新;而app必须要更新客户端,保证客户端与服务器一致
4、性能方面
web可能只会关注响应时间,而APP还需要关注流量、耗电量、cpu、内存、FPS等
5、兼容性
web是基于浏览器的,所以更倾向于浏览器的兼容
手机APP更需要考虑兼容性:安卓版本、屏幕分辨率、尺寸(特别是安卓)
6、其余的还有些测试环境(弱网环境、4G、wifi)、测试工具
可以问面试官的问题
1、项目类型、周期
2、从事的工作内容
3、需要掌握的工具等
4、是否有相应的培训
可以问人事的问题
1、上下班时间
2、试用期时间
3、试用期转正的条件
4、工资什么时候发
5、转正的条件
6、试用期是否买社保