测试开发面试题

目录

测试部分

1.斐波那契数列算法题以及针对代码设计测试用例,需要考虑的点

2.设计贪吃蛇的数据结构,用什么办法模拟贪吃蛇吃食物时长度变长的情况,用什么方法模拟贪吃蛇上下移动

3.抓包的应用场景,抓包的目的,怎么抓包

4.如何测试天猫的极速退货退款

5.天猫的极速退货退款存在的风险:

6.存在的风险如何解决:

7.存在的风险在代码里面如何解决:

8.测试计划具体包括什么内容

9.测试用例包含的内容

10.黑盒测试用例设计方法

11.白盒测试方法

12.测试的流程

13.一个好的Bug报告要包含的内容

14.bug的生命周期,bug用什么管理

15.对应bug无法重现,怎么进行处理?

16.界面中的乱码可以是哪里导致的?

18.判断是前端还是后端bug

19.项目上线后发现bug,测试人员应该怎么办

20.如何保证质量

职业规划部分

1.你的职业发展规划和职业目标

2.对于一个新的工具你有什么看法

3.为什么考虑做软件测试

4.是否有考虑往开发方面测试?

计算机基础知识部分

1.TCP三次握手和四次挥手

2.IP协议的作用

数据结构与算法部分

1.设计一个三角形类,其中有一个方法,可以将建立的所有三角形对象按照面积大小输出

2.排序算法


 

测试部分
1.斐波那契数列算法题以及针对代码设计测试用例,需要考虑的点

(1)算法题 就是一个简单的动态规划的代码

(2)需要考虑的点:

        1.边界值  输入 0、1、2等测试边界情况

        2.正常情况:输入 5、7等正常值

        3.性能测试:测试一些较大的数据时的性能表现

        4.异常情况:输入小于0的整数,小数等非法情况

2.设计贪吃蛇的数据结构,用什么办法模拟贪吃蛇吃食物时长度变长的情况,用什么方法模拟贪吃蛇上下移动

设计贪吃蛇的数据结构,可以使用链表

        虚拟头结点:val 放贪吃蛇长度  next连接后续节点

        节点:val 放当前节点位置,next放后续节点

        食物:单个节点,只放置节点位置即可

原因:1.贪吃蛇移动的过程 就是加一个头结点,删一个尾节点的过程,链表比较合适

           2. 贪吃蛇吃食物的过程 将食物的位置作为头结点再连接后续节点

3.抓包的应用场景,抓包的目的,怎么抓包

(1)抓包的场景:

        1)测试执行后检查数据是否正确

        2)定位前端还是后端问题

        3)进行弱网测试

        4)安全测试 :数据是否加密,数据mock

(2)抓包的目的        

         使用抓包可以有效定位和解决以下问题

        1)找到请求的数据 ,检查传输是否有问题

        2)定位前后端问题

        3)模拟手机弱网测试

        4)模拟 加密和接口mock

(3)实际工作过程中,不同测试应用下有不同的抓包工具

        1)Web项目一般用浏览器自带的开发工具

        2)App项目可以用 fiddle charles wiresark whistle

       3)web 直接用f12 即可,app 进行代理连接,安装证书,选择同一网段下的网络

       4)微信小程序

       5) 由于微信7.0 禁止安卓手机抓包,需用iOS手机进行抓包或者微信降级

4.如何测试天猫的极速退货退款

  • 功能测试:验证用户提交退货申请、商家审核退货、系统自动退款等功能是否正常工作。
  • 性能测试:测试在高并发情况下,系统是否能够及时处理退货退款请求。
  • 安全测试:检查系统是否存在漏洞,确保用户的退款信息不会被泄露或篡改。
  • 兼容性测试:测试在不同浏览器、设备上进行退货退款操作的兼容性。
  • 异常场景测试:测试用户提交错误信息、网络异常等情况下系统的容错性
5.天猫的极速退货退款存在的风险
  • 虚假退货欺诈:用户提交虚假退货信息以获取不当利益。
  • 系统漏洞:系统存在漏洞可能导致数据泄露或退款错误。
  • 退款延迟:系统故障或处理瓶颈可能导致退款延迟,影响用户体验。
6.存在的风险如何解决
  • 身份验证:加强用户身份验证,减少虚假退货欺诈。
  • 安全加固:定期进行安全漏洞扫描和修复,确保系统安全。
  • 流程优化:优化退货退款流程,减少退款延迟,提高效率
7.存在的风险在代码里面如何解决
  • 输入验证:在前端和后端对用户输入进行验证,防止恶意输入。
  • 安全编码:避免使用不安全的代码,如拼接SQL语句、未经过滤的用户输入等,以防止SQL注入等攻击。
  • 日志记录:记录用户操作日志,便于追踪退款操作,排查问题。
  • 权限控制:限制用户权限,确保只有授权用户能够进行退货退款操作.
8.测试计划具体包括什么内容

 (1)目的与范围  (2)规程   (3)测试方案与方法  (4)测试的准入准出

(5)测试的计划(流程、时间安排、对应人员) (6)测试的环境配置与人员安排

(7)交付件

9.测试用例包含的内容

(1)测试项目(2)编号  (3)测试标题  (4)优先级 (5)预置条件  (6)操作步骤

(7)测试数据 (8)预期结果

10.黑盒测试用例设计方法

(1)等价类划分法 (2)边界值分析法 (3)错误推测法 (4)判定表

11.白盒测试方法

(1)循环覆盖 (2)逻辑覆盖  (3)基本路径覆盖

12.测试的流程

(1)需求分析与需求评审 (2)编写测试计划    (3)编写测试用例、用例评审  

(4)执行测试计划   (5)测试评估 (出测试报告)  

13.一个好的Bug报告要包含的内容

(1)编号   (2)严重程度与优先级  (3)简要描述  (4)出现的模块  (5)出bug的版本

(6)bug的详细现象描述,截图,录像等等  (7)bug出现的测试环境,产生的条件

14.bug的生命周期,bug用什么管理

bug使用禅道来管理

(1)测试人员发现bug,提交bug给对应的开发人员

(2)对应开发人员修复完成,交给测试人员复测

(3)测试人员复测通过,关闭bug

(4)不通过打回给对应开发

15.对应bug无法重现,怎么进行处理?

        首先,我会多测几次,测了好多次都无法重现我就会先把bug挂起,并且留意一下,看看往后的测试中,如果在后续的测试中重现bug就激活,如果经过几个版本都没发现的话就关闭bug

16.界面中的乱码可以是哪里导致的?

(1)数据库编码    (2)前端编码    (3)后端编码

17.bug的级别有哪些?

(1)致命:业务系统完全丧失业务功能,无法继续运行 或者 业务系统丢失了业务数据,影响公司运营的重要业务数据出错

(2)严重:业务系统丧失部分重要的业务功能,或者丧失了业务数据可恢复,一般业务数据出错

(3)一般:对业务影响较小,丧失了较少的业务功能

(4)提示:对业务没有影响,不影响业务系统正常运行

18.判断是前端还是后端bug

通常使用抓包工具进行分析。从三个方面进行分析:请求接口、传参、响应

1)判断请求接口url是否正确,错误则前端错误

2)传参是否正确,不正确则为前端问题      

3)url和参数都正确。结果不正确,则为后端问题

4)也可以在浏览器控制台调试js

19.项目上线后发现bug,测试人员应该怎么办

 (1)看严重级别:严重还是不严重

(2)严重的:紧急变更上线

(3)不严重:修复好后跟随下个版本一起上线

20.如何保证质量

(1)需求要吃透,多问,多了解

(2)严格按照  测试流程 执行 多考虑用户测试场景,使用测试用例设计方法,多评审

(3)要有良好的测试执行,要求用例执行率达到100%,多轮测试,进行探索性测试 ,需要测试之间交叉测试 ,用工具管理我们的测试工作(禅道, testlink, excel,tapd

(4)不断反思与提升

职业规划部分
1.你的职业发展规划和职业目标

功能测试:

        (1)接下来的一年,更加完善自己的功能测试

        (2)2-3年内熟练自动化和性能

        (3)3-5年内系统自动化\性能,成为资深技术人员

自动化测试:

        (1)1-2 年内熟恐自动化或者性能

        (2)3-5 系统成为自动化或者性能,成为资深技术人员性能与自动测试

        (3) 找一个比较稳定平台,跟公司长期发展,后期走管理或者产品路线
2.对于一个新的工具你有什么看法
        1.自己先去研究 2.找会的去请教 3.百度去找资料 4.工具原始文档
3.为什么考虑做软件测试

1.性格合适   2.前景还可以    3.个人技能也匹配

4.是否有考虑往开发方面测试?
        我觉得,IT 行业,没有具体的界限,后期,开发也要懂测试,测试也要懂开发,
如果公司有机会,愿意去尝试
12.
计算机基础知识部分
1.TCP三次握手和四次挥手

(1)TCP三次握手过程:

        第一次握手:客户端向服务器发送一个SYN(同步)标志的数据包,请求建立连接。

        第二次握手:服务器接收到客户端的SYN包后,会发送一个带有SYN/ACK标志的数据包作为应答,表示确认客户端的请求。

        第三次握手:客户端收到服务器的SYN/ACK包后,再向服务器发送一个带有ACK标志的数据包,表示连接建立成功。

 (2)TCP四次挥手过程

        第一次挥手:当客户端想要关闭连接时,发送一个带有FIN(结束)标志的数据包给服务器,表示数据发送完成。

        第二次挥手:服务器接收到客户端的FIN包后,会发送一个带有ACK标志的数据包作为应答,确认收到了客户端的关闭请求。

        第三次挥手:服务器在数据发送完成后也会发送一个带有FIN标志的数据包给客户端,表示服务器也准备关闭连接。

        第四次挥手:客户端接收到服务器的FIN包后,发送一个带有ACK标志的数据包给服务器,表示确认收到了服务器的关闭请求,双方连接关闭。

(3)三次握手与四次握手的作用   

        三次握手确保双方都愿意建立连接,并同步初始序列号,以便后续的数据传输能够正确顺序地进行。

        四次挥手允许双方在终止连接时进行适当的关闭和资源释放,确保数据的完整性和可靠性。

2.IP协议的作用

(1)IP协议的特点:无连接,不可靠,无状态

        1.无连接是指:IP通信的双方都不长久地维持对方的任何信息。这样的话,上层协议每次发送数据的时候,都必须明确地指定对方的IP地址。
        2.不可靠是指:IP协议不保证数据报能够准确无误的到达接收端,它只能尽最大努力去传送。
        3.无状态是指:通信双方不同步传输数据的状态信息,也就是IP数据报的发送传输,接收都是相互独立的,没有上下文关系。那么接收端就可能收到重复的,乱序的报文段。这就是所谓的无状态。

(2)总结

        1.IP协议是一种无连接,不可靠的分组传送服务的协议。
        2.IP协议是点-点线路的网络层通信协议。IP协议是针对源主机-路由器,路由器-路由器,路由器-目的主机之间的数据传输的点对点线路的网络层通信协议。
        3.IP协议屏蔽了网络在数据链路层,物理层协议与实现技术上的差异。通过IP协议,网络层向传输层提供的是统一的IP分组,传输层不需要考虑互联网在数据链路层,物理层协议与实现技术上的差异,IP协议使得异构网络的互联变得容易。

数据结构与算法部分
1.设计一个三角形类,其中有一个方法,可以将建立的所有三角形对象按照面积大小输出

实现Comparable接口,实现compareTo方法

import java.util.ArrayList;

public class Trigger implements Comparable{

    double a;
    double b;
    double c;

    double area; // 面积

    public Trigger(){}
    public Trigger(double a, double b, double c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public void setArea() {
        double p =(a + b + c) / 2;
        System.out.println("p:" + p);
        this.area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }

    @Override
    public int compareTo(Object o) {
        Trigger trigger = (Trigger) o;
        trigger.setArea();
        this.setArea();

        return (int) (this.area - trigger.area);
    }

    public static void main(String[] args) {
        Trigger t1 = new Trigger(3,4,5);
        Trigger t2 = new Trigger(4,6,9);
        ArrayList<Trigger> list = new ArrayList<>();
        list.add(t2);
        list.add(t1);
        list.sort(Trigger::compareTo);
        for (Trigger trigger : list) {
            System.out.println(trigger.area);
        }
    }
}
2.排序算法

冒泡排序

  • 比较相邻的元素。如果第一个比第二个大,就交换它们两个。
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

选择排序

  • 找到数组中最小的元素,将它和数组的第一个元素交换位置。
  • 在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置。
  • 重复上述步骤,直到整个数组排序完成。

插入排序

  • 从第一个元素开始,该元素可以认为已经被排序。
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置。
  • 重复步骤3,直到找到已排序的元素小于或等于新元素的位置。
  • 将新元素插入到该位置后。

快速排序

  • 选择一个基准元素(通常是数组的第一个元素)。
  • 将小于基准的元素放在左边,大于基准的元素放在右边。
  • 对左右两个子序列递归地进行快速排序。
  • 合并左子序列、基准元素、右子序列

归并排序

  • 将数组分成两个子数组,分别对这两个子数组进行排序。
  • 将排好序的子数组合并成一个大的有序数组
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值