首先是笔试部分:
1.编写测试用例的方法
2.bug的元素(越多越好)
3.动态测试与静态测试是什么?
4.如何去测试一个登录接口?
5.写出linux查看80端口占用
6.写出linux查看后台的java程序
7.查询一个学生表里面所有成绩高于80分的
8.list删除重复元素
9.快速排序
技术面:
1.自我介绍
这个不用多说了吧
2.自动化的技术栈
简单说了之前做过的接口自动化和UI自动化的技术方案,app的没讲
3.刚刚你提到了插件,能说下名字吗?选用它的理由是什么?
我说的是pytest-rerunfailures,简单说了下生态背景,因为更符合需求,列了另外一个插件做了下比较,然后作者维护得也更频繁,描述了下它使用前景更好。
4.业余有学习新技术吗?通过什么方式学习的?
按自己的讲就好了
5.讲讲在性能测试中遇到的问题
我讲的是一个由于第三服务导致的性能上不去的问题
6.性能测试的要关注哪些指标
我问了是指资源性能指标还是系统性能指标?面试官愣了两秒,说就接口测试那个。我大概讲了并发数、tps、qps、吞吐量、吞吐率、最大响应时间、90%响应时间,然后挑了两个详细讲了下。
7.测试怎么保证产品的质量
这个就很广了,各凭高见了。我大概从流程、标准、测试左移、测试右移的讲了下,个人觉得讲的一般吧
8.讲讲jenkins做了什么?jenkins能做什么。。。
比如敏捷开发,版本迭代自动部署,无人值守性能测试,自动化,挑了自动部署的讲
9.一个登录接口,增加多一个防暴力破解的迭代
参考回答:增加一个防暴力破解的迭代,设计测试用例(登录模块)
10.为什么做测试?
11.离职的原因
12.期望薪资
13.还有什么要问的
感受的话:工作内容比例的话,大概80-90%功能测试吧(我猜的),我问了面试官,说了会有一点UI自动化方面的。然后业务能力应该挺强的,技术的话也许是我没机会见识到吧。(观点无绝对)想提高业务能力的可以去,技术的话不建议吧。去面试时建议别去那上厕所,愉快的心情还是很重要的。
以下回答供参考:
1.编写测试用例的方法
- 等价类划分法
- 边界值法
- 因果图法
- 判定表法
- 场景法
- 状态迁移法
- 正交实验法
2.bug的元素(越多越好)
bugID、项目、问题类型、主题(BUG名称)、优先级、严重程度、模块、经办人、报告人、内部版本号、发现版本、解决版本、缺陷类型、复现概率、出现频率、问题来源、(手机机型、手机系统版本)、bug状态、bug描述、备注
3.动态测试与静态测试是什么?
静态测试:一种不执行程序而进行程序测试的技术
检查软件中的描述与表示是否一只,没有冲突或歧义,它描述的是纠正软件中的表示、描述与规格上的错误,因此是任何进一步测试的前提
动态测试:按照预期设计的数据和步骤运行被测程序,从而对被测程序进行测试的一种技术
通过分析软件的运行行为:包含软件运行在受控的环境进行特定的输入进入正式运行,与期望结构进行比较二判断程序是否正确
4.如何去测试一个登录接口?
- 必填参数验证(账号、密码等、以接口文档为主)
- 选填参数验证(是否记住密码)
- 请求输入输出合法性校验(请求数据与返回数据是否都加密传输,状态码,数据格式是否符合接口文档标准)
- 请求响应校验(状态码,返回数据,页面等是否符合接口文档预期)
- 响应数据校验(后台登录数据、用户数据)
- 边界值参数验证(账号密码等)
- 异常、空值数据校验(必填选填数据进行异常值,格式异常、空值等)
- 容错能力验证(对接口频繁请求,错误请求及重复登录请求的处理及某些大容量数据)
- 错误处理机制(对不合法请求,坏请求的处理时,响应的友好性,可读性)
- 接口间逻辑验证,特别是涉及第三方授权登陆了服务,验证机制,防暴力机制时
- 压力测试:通过并发用户对接口施加压力,逐点施压,分析性能瓶颈
- 安全测试:请求篡改,SQL注入、抓包重放、敏感信息、权限验证、跳过某些验证机制等
5.写出linux查看80端口占用的进程
netstat -anp | grep 80
ps -aux | grep 80
lsof -i:80
6.写出linux查看后台的java程序
ps -A | grep java
ps -ef | grep java
7.查询一个学生表里面所有成绩高于80分的
#如果chengji(成绩字段)数据类型为int等数字类型,可直接group by XX having XXX select name from score group by name having chengji>=80;
#如果成绩为字符型varchar,上面的方法会出现错误,反向思维通过not in来找出符合标准的结果 select distinct(s1.name) from score s1 where s1.name not in ( select distinct(s2.name) from score s2 where s2.chengji<80 );
# 优化下 select name from score group by name having name not in ( select name from score where chengji<80 );
8.删除列表内的重复元素
def deleteSameEle(arr): if type(arr).__name__ != 'list': print('传入参数不为list') return wrapper(arr) def wrapper(arr): newArr = set(arr) return list(newArr) if __name__ == '__main__': l = [5,4,7,4,3,4,85,11,2,45] print(deleteSame(l))
9.快速排序
def quickSort(arr): if type(arr).__name__ != 'list': print('传入参数不对') l, r = 0, len(arr)-1 wrapper(arr, l, r) def wrapper(arr, l, r): if l < r: i, j = l, r temp = arr[i] while i < j: while i < j and arr[j] >= temp: j = j - 1 if i < j: arr[i] = arr[j] i = i + 1 while i < j and arr[i] <= temp: i = i + 1 if i < j: arr[j] = arr[i] j = j - 1 arr[i] = temp wrapper(arr, l, i - 1) wrapper(arr, i + 1, r) if __name__ == '__main__': l = [5,4 ,7,41,77,43,9,8,2,81] quickSort(l) print(l)