自我介绍

面试官您好,我叫张婷婷,来自宁夏,目前从事测试工作的话有3年经验,任职过2家公司 ,在上家公司主要负责功能以及接口测试,自己也掌握一些测试工具比如说postman、jmeter,在负责的项目期间有严格把关,督促开发快速解决问题 保证项目可以按时交付。 以上是我的个人介绍 请问下面试官有什么想要了解的吗。

测试体系(测试流程)

首先会召开需求评审会议,参加人员有产品(或者叫业务经理)、开发和测试,主要是探讨需求中主要的一些功能点,对于无法实现的功能和有业务逻辑问题的做修改,对于说明不完整或不清晰的做补充说明,最终由业务人员整理上传到测试管理工具禅道或QC,随后开发就排期进行开发,我们就根据主管写出来的计划、分配到功能模块进行编写测试用例,写完之后会进行用例评审,对于错误的进行修改,冗余的进行删除,不足的进行补充,并整理形成最终的测试用例,之后开发人员将软件开发完成并部署到SIT测试环境后,我们会依据测试用例来执行测试,测试过程中做好截图记录工作,对于发现的BUG提交到缺陷管理工具禅道,并跟踪bug状态直至验证后关闭,当所有案例执行完成,缺陷全部修复,首轮测试宣布完成,之后还需要第二轮回归测试,回归测试执行案例的时候需要重点注意首轮发现过重大问题的案例,二轮回归测试完成后编写测试报告,测试报告主要是体现我们测试过程及结果,比如执行了多少案例,通过多少,发现多少BUG,多少严重的,多少一般的,多少优化类的,多少已经关闭,还遗留了多少BUG没有修复,以及最终确认此次测试是否通过,相关的文档存放位置等.

接口测试怎么做的


我们做的接口还是挺多的,一般我们都是用jmeter做的。那我们拿到接口文档以后,会根据这个接口文档整理测试点,然后编写测试用例,主要涵盖的有正常场景和异常场景,测试用例编写好以后,做个评审,没问题了,我们就按照测试用例来设置线程组,然后在设定请求默认值,包括请求协议,请求头,然后在根据每一个接口新建一个http请求,把参数设置好,设置好以后,我们会先跑一下单接口的正确响应有没有问题,如果有问题,我们会打给开发进行修复,没有问题的话,我们会把整理好的场景,编写一个csv文档,在请求当中配置一个csv配置文件,然后设定变量名称和csv文件保持一致,最后在接口请求中,通过${变量名}的方式去引用这个变量,最后设置下循环次数,循环次数要跟csv文件中的场景数保持一致,最后在添加断言,一般我们用响应文本断言,状态码断言和json断言比较多,添加好以后,在添加一个查看结果树,去观察返回的结果是否跟预期一致,如果跟预期一致就说明这个接口没有问题。这是大概的一个接口的流程。谢谢

结合项目说一下你是怎么做接口的

拿到开发提供的接口文档之后,我会首先仔细看一下里面的接口说明,去看一共有多少接口,接口之间的上下游关系,接口的请求方法,请求参数说明,URL,入参出参,理清楚后开始编写接口测试用例,比如说我在做预约挂号模块的时候就有用到接口测试,我是先在后端管理添加了科室和医生再返回到前端用户进行预约挂号,看能不能挂到新增医生的号,一般入参有医生的id和所属科室的id,出参要检查一下状态码,404客户端错误,500服务器错误,还有msg说明信息,比如医生不存在、科室不存在,账号与姓名不一致等,我是会根据这些去设计和编写接口测试用例,执行的时候,用jmeter工具,具体操作步骤是:打开jmeter,添加线程组,添加http请求,填写接口的URL、入参等,如果涉及到多接口,那就使用正则表达式提取器来处理上下游的业务关系,如果有些参数经常被用到,会添加一个用户定义的变量。再添加断言,该关联的关联,该参数化的参数化,运行脚本。然后查看响应结果的话,就添加察看结果树,在body那里看,大概就这个样子。


多接口怎么测


先在jmeter中添加线程组,然后添加http请求,根绝接口文档配置登录接口,然后根据登录接口返回的cookie,提取出来放在信息头管理器。
然后在配置工作台接口,查看名单信息,这个时候会返回到名单id。我们会用json提取器,来提取这个id,用下标来选择哪一条名单,[0]代表第一个,[1]代表第二个。然后在设置一个变量名。
然后在新建一个任务详情接口,那我们会引用上个接口返回的名单id,通过${名单id}来引用这个变量。然后在这个接口会返回一个客户id,还是一样,我们通过json提取器来提取客户id。
然后在新建一个创建方案书接口,也是通过${客户id}来引用接口,用json格式来上传参数。然后会返回一个订单id。然后我们也可以通过这个订单id去查询订单状态。比方说0代表待支付,1代表支付成功,等一些情况。
然后创建方案书完成以后,我们在新建一个打开确认书的接口,这里需要用到用户的手机号和验证码这样的参数,然后会返回一个登录的token,同样使用json提取器提取;
然后在新建一个查看确认书的接口,引用上游返回的token。这个接口会返回一个确认书的id。
然后在新建一个支付接口,引用上游的一个确认书的id。最后返回支付接口。支付的话我们在测试环境是使用mock挡板模拟支付情况。
这个流程我们主要就是使用上下游传参进行串联的,每次生成数据,也都会去数据库检验一下是否落库和数据状态。

接口数据是怎么造的


1首先新建一个线程组;
2我们可以使用JDBC连接数据库,比方说提取一个客户信息表,那么可以查询到一个客户id,并且设置成一个变量,比方说num;
3然后添加一个beanshell后置处理器,读取这个num,然后转换成整数+1,赋值变量给count;
4然后再新建一个http请求,输入url地址和请求参数,输入需要改动的参数值;
5可以使用函数助手,添加随机函数,来模拟变化的参数;
6然后再设定循环次数,比方说要造100个,那就循环次数改为100;
7然后添加查看结果数,运行,导出数据,差不多就这样的流程。

你是怎么做接口测试用例的设计

1.从业务方面来设计测试用例,首先分析接口有几个参数,每个参数的作用是什么,这个接口实现了什么功能。
2.从参数的数据类型来设计测试用例。比如参数是必填,参数错误,参数为空,参数不符合业务规则。
3.接口的安全性测试方面,sql 注入,权限控制等。
4.接口的性能测试,标准响应时间是 0.2 秒。
开发人员提供给我们接口文档,我们会依据接口文档来提取测试点,一般会从功能,业务逻辑,异常和安全方面去考虑,功能的主要是验证接口功能的正确性,业务逻辑主要是看接口之间的 业务依赖关系,异常主要是从请求参数异常以及参数值的异常来考虑,必填参数不传,参数 值为空,超过规定长度,不符合类型规范等,安全方面主要从对接口加密参数的解析方面考虑,编写接口测试用例。


环境怎么搭建的


我们搭建环境,一般开发会给到我们安装手册,我们具体会根据手册进行部署,比如我们会先将开发打好的包拿到我们的测试环境的服务器上(rz),进行解压(tar -zxvf)操作,将解压后的文件放到手册指定的目录下(mv或者cp),再看手册上是否需要修改哪些配置文件(vi),需要的话我们就去修改对应的配置文件,然后去对应的目录下执行启动服务的脚本(sh start.sh),然后观察启动日志无报错,可以使用ps -ef查看进程是否起来了,查看平台能正常登录,做个简单的冒烟,就可以确认服务搭建成功了。

写接口用例要注意什么

接口说明
请求方式
请求URL
请求参数
返回数据
返回实例


性能测试怎么做的


1找产品获取压测场景及性能测试要求指标,做测试准备,需要明确测试范围,公司需要压测哪些场景,还要就是找产品确定性能指标,响应时间,系统要求支持的并发量,
2然后搭建测试环境,准备环境,制定测式计划,确认时间周期,执行第一轮压测,第二轮压测,第三轮验收,计划里面还要包含工作安排,参与人员,主要负责,协调人员,配合人员,开发,测试,运维,产品,架构,
3然后编写脚本,调试接囗脚本,优化接口脚,准备接口串联,多用户鉴权提取准备多用户的csv文件,
4然后执行测试进行分析,执行脚本需要监控(我会使用htop命令或top监控服务区运行状态,主要就是查看CPU 、MEM内存、磁盘IO使用情况进行监控。),压测过程中记录测试数据,监控数据,主要关注吞吐量,响应时间,异常率,服务器重点关注cpu 内存,磁盘,带宽使用指标情况,协助开发执行压测,进行调优,最后编写测试报告。

你在公司怎么做性能测试的?

是这样的,一般我在做性能测试之前, 我们老大会给我一个性能测试指标,然后给我指派一个任务, 然后指标内容包括:具体要压测业务(比如用户经常使用的业务,或者使用频率很高的业务)、压测时间(一般要压测1-2个小时左右),接口的响应时间(这个我们要求不超过2s), 服务器的cpu和内存使用率不能超过70%, 整体压测的错误率不超过1%(这个错误里面包含了接口超时)
知道这些大概的指标后, 我就使用Jmeter工具,根据业务,创建对应以及配置对应的接口请求,处理接口的上下游关联,添加csv参数化, 配置好以后,就会执行测试,执行的时候会监控服务器的运行状态,主要运用top命令以及htop命令,主要就是看服务器的CPU 内存的使用率,还会在jmeter中添加聚合报告,主要看它的吞吐量,以及响应时间还有错误率
最后压测脚本执行后,如果达标的话,就会出一份性能测试报告, 这个报告主要就是聚合报告的截图以及后台服务器状态截图发给我们老大或产品, 如果不达标,就会通知我老大, 让我老大去告诉开发或运维去优化代码

json数据是什么,你平时如何解析json数据的

一种开发常用的数据报文格式,由键值对和数组两种格式构成,可以通过工具bejson网站等

压力测试是怎么测试的

我们公司是使用jmeter做的压力测试,当时我们弄懂接口测试文档,分清post和get请求,分清哪些必填选项选填项之后,做好接口之间的上下游关系,添加合适的断言等准备工作,就修改了线程组的线程数,然后再添加一个聚合报告就可以执行了


映像比较深的bug


我记得有这样一个 bug 印象比较深刻,就是做数据导出到excel的时候,其中的身份证号显示为科学记数法了,4.30E+19,后来发现主要原因是开发在导出到excel时没有对这个字段进行处理,excex中如果超过11位数字就会默认以科学记数法显示,如果显示正确,应该以文本的格式保存。


定位前后端bug

方法一:如果请求数据有错误,就是前端问题,如果响应数据有问题,就是服务器有问题(代码逻辑问题,,执行sql 问题 看日志)
方法二:第一种是抓包,web端我们用F12,小程序一般用Charles,或者fiddler。抓包之后去分析请求接口、传参和响应。
a先判断请求接口url是否正确,如果请求接口url错误,这就是很明显的前端bug;
b第二判断传参是否正确,如果传参不正确,也是前端bug;
c如果接口url和传参都正确,查看响应码是否正确,如果影响吗不正确,就是后端bug。
方法三:方法是查看后端服务器日志,复现bug时,查看日志中,如果日志没有输出,很可能这个功能没有与后端交互,也就不存在后端的问题。反之,如果日志输出,可以进一步查看有没有错误的日志,进一步分析。
方法四:就是观察数据库,主要就是去数据库看下数据有没有落库。

你们生产环境的服务器有多少台?

两台以上 具体可能得客户用户量上来后自己给服务器增加规格


工作安排


先看看邮件有没有新的安排(会议、新模块提测,紧急的需求,看下自动化项目有没有
报错,因为开发都加班的),看下昨天提交的bug有没有修复,然后根据之前的工作安
排接着进行测试(有新需求就写写用例,准备下测试数据等),晚上下班前提一下日报


测试团队的定位


软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求。软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。


离职原因


上家公司因为疫情,我们组有几个人都离职了,然后这个项目又比较急,就我一个测试,天天加班到晚上十点左右,后面实在有点扛不住了,加上我自己的一些原因,就提了离职。


职业规划


我近期主要规划是尽快的熟悉新公司的一个项目流程,对于项目需求和目前所处的阶段有一个明确的认知,就是希望更快的适应新的项目,更早的开展自己的测试工作,长期计划的话希望自己在技术上能有一个新的台阶,最近也在自学python,希望能尽快的掌握自动化知识,能尽快运用到工作中。