当前位置: 首页 > 工具软件 > ONES > 使用案例 >

ones/测试工程师面试

谢旭
2023-12-01

首先是笔试部分:

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)

 

 

 类似资料: