一些测开面试题及答案(个人梳理)

这篇具有很好参考价值的文章主要介绍了一些测开面试题及答案(个人梳理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

答案对错自辨,文明观看,有错给我说我改

1.白盒测试/黑盒测试

1.1白盒测试

  • 测试程序的内部的逻辑,结构的实现,是否实现了相应的功能。
  • 单元测试:Junit框架
  • 语句覆盖
  • 逻辑覆盖(判定覆盖,条件覆盖,判定组合,条件组合,判定和条件组合)
  • 路径覆盖
  • 循环覆盖

1.2黑盒测试

  • 不关心软件内部代码的逻辑,结构实现,只关心输入和输出
  • 等价类划分法,边界值分析法 ,因果图法,正交实验法,场景设计法,错误推测法

2.测试流程

  • 第一种答案:1、测试需求分析阶段;2、测试计划阶段;3、测试设计阶段;4、测试执行阶段;5、测试评估阶段。
  • 第二种答案::单元测试、集成测试、确认测试、系统测试、验收测试

3.bug流程

  • 1.测试人员发现bug

  • 2.描述bug
    测试版本
    测试环境(设备,系统)
    测试步骤
    测试数据
    预期结果
    实际结果
    附件(错误截图,错误日志)
    测试方案,

  • 3.开发人员确认是否是bug,是的话修改bug,并改bug状态为已经解决

  • 4.不是的话 ,退回给测试人员并描述退回原因,或为设计如此,或为外部原因,或者不能重现。

  • 5、 开发人员修改完成的bug,由测试人员进行验证,确认修改正确,关闭bug。

  • 6、 验证未通过的bug重新激活,开发人员继续修改,直至验证通过,关闭bug。

  • 7、 测试人员需要对开发人员退回的bug进行确认。

  • 8、 确认不是bug关闭。

  • 9、 如与开发人员意见不一致,认为是bug,需提交项目负责人仲裁。

  • 10、项目负责人确认是bug由开发人员修改,不是bug由测试人员关闭。

参考: bug流程处理

4.压力测试

一些测开面试题及答案(个人梳理)
一些测开面试题及答案(个人梳理)
一些测开面试题及答案(个人梳理)
源于:性能与压力测试

响应时间
tps(HTTP per second)
吞吐量
系统运行时占用的系统资源的情况

5.selenium原理

2.selenium原理(3个)
1.测试脚本:python,java编写脚本程序
2.浏览器驱动:不同的驱动对应不同的版本
3.浏览器:IE,Firefox,Chrome,Safari
参考自此处

6.选取元素方法

定位元素的方式
1.id
2.name
3.class-name
4.tag-name
5.link-text
6.partial link text
7.xpath
8.css selector

7. servlet生命周期

1、初始化阶段 , 调用init()方法; 2、响应客户请求阶段, 调用service()方法; 3、终止阶段, 调用destroy()方法。

8. Java线程池

(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
参考此处

9.状态码

1**:请求正在处理

2**:请求成功
200:请求正在处理
204:请求处理成功,但没有任何资源返回给客户端,常用于单向通信
206: 请求成功,响应报文中包含由 Content-Range 指定范围的实体内容

3**:重定向,需要附加操作已完成请求
301:永久重定向,表示请求的资源已经永久的搬到了其他位置
302:临时重定向,表示请求的资源临时搬到了其他位置
303表示请求资源存在另一个URI,应使用GET定向获取请求资源
303功能与302一样,区别只是303明确客户端应该使用GET访问
304:资源已找到,但不满足条件

4**:客户端错误
400:请求存在语法或者参数错误,服务器不理解
403:对请求资源的访问被禁止
404:服务器找不多请求的资源

5**:服务器错误
500:服务器执行请求的时候出错
503:服务器无法处理请求,服务器正在维护或者超负载运行。
源自: 面试问题:常见的http状态码

10.抽象类/接口

一、继承(抽象类/普通类)类与实现接口的区别
1、继承抽象类,必须重写抽象类中所有抽象方法。
2、继承普通类,可以重写也可以不重写父类的方法。
3、实现接口则必须实现接口中的所有方法。(接口中的方法均为抽象方法)。

二、抽象类、接口的区别
1、类要被子类继承,接口要被子类实现。
2、接口里不能定义普通变量,而抽象类中可以,接口只能定义公共的静态常量。
3、抽象类里可以没有抽象方法,可以有普通方法,就算全是普通方法也没关系。
4、普通类和抽象类(它的实例化方式并不是通过普通的new方式来创建对象,而是通过父类的应用来指向子类的实例间接地实现父类的实例化,因为子类在实例化之前,一定会先实例化它的父类。)可以实例化,接口不可以实例化。
原文链接: 原文链接

11.sql查询id重复的人

select * from [表A] where id in (select id from [表A] group by id having count(id) >1 )

12.单例模式

13.1定义

  • 是一种设计模式,在代码中有些对象应该只有一个实例,就称为“单例”
  • eg:数据库的DataSource应该就是一个单例
  • 有些负责加载数据到内存的类也应该是单例
  • 强制性某个类只有一个实例

13.2实现

  • 主要依托于static关键字,静态成员

13.2.1饿汉模式

/**
 * User:yang
 */
public class ThreadDemo16 {
    //饿汉模式
    //实例创建出现在类加载阶段
    static class Singleton {
        //希望是单例类,只有一个实例

        //县创建一个成员,保存唯一的实例
        private static Singleton instanse = new Singleton();

        //在提供方法获取实例
        public static Singleton getInstance() {
            return instanse;
        }

        //把构造方法私有,防止其他代码创建实例
        private Singleton() {
        }
    }

    public static void main(String[] args) {
//如何获取这个实力
        Singleton singleton=Singleton.getInstance();
    }
}

13.2.2懒汉模式

/**
 * User:yang
 */
public class ThreadDemo17 {
    //懒汉模式
    //创建实例是在第一次使用getinstance的时候,比饿汉模式迟
    static class Singleton {
        private static Singleton instance = null;

        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }

        private Singleton() {
        }
    }

    public static void main(String[] args) {
        Singleton singleton=Singleton.getInstance();
    }
}

13.3如何保证懒汉模式线程安全

  • 加锁
  • 以效率为代价保证安全
/**
 * User:yang
 */
public class ThreadDemo18 {
    //线程安全版本懒汉模式
    //创建实例是在第一次使用getinstance的时候,比饿汉模式迟
    static class Singleton {
        private static Singleton instance = null;

         public static Singleton getInstance() {
          synchronized (Singleton.class){
              if (instance == null) {
                  instance = new Singleton();
              }
          }
            return instance;
        }

        private Singleton() {
        }
    }

    public static void main(String[] args) {
        Singleton singleton=Singleton.getInstance();
    }
}

  • 优化,当已经创建实例后,不进入加锁,并且volatile防止寄存器优化
    一些测开面试题及答案(个人梳理)
/**
 * User:yang
 */
public class ThreadDemo18 {
    //线程安全版本懒汉模式
    //创建实例是在第一次使用getinstance的时候,比饿汉模式迟
    static class Singleton {
        private static Singleton instance = null;

        public static Singleton getInstance() {

            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }

        private Singleton() {
        }
    }

    public static void main(String[] args) {
        Singleton singleton = Singleton.getInstance();
    }
}

14.你了解的测试

软件测试就是验证软件是否满足客户的需求

15.求学生总数

select count(studentid) from t_student;

16Linux,常用指令

看这个:linux

17.hashmap的结构

HashMap
hashmap是非线程安全的,多线程下可以用concurrentHashmap或者Collections.synchronized()来代替。

首先两种数据结构

数组:存储区间连续,占用内存严重,寻址容易,插入删除困难;
链表:存储区间离散,占用内存比较宽松,寻址困难,插入删除容易;

HashTable
hashtable的数据结构和hashmap几乎相同

hashtable和hashmap的主要区别是

1.hashtable线程安全,内部的相关读写操作添加了锁

hashmap非线程安全。

2.hashtable不允许key为空值,当key为空时,会抛出空指针

hashmap允许一个为空的key,放在index为0的位置

3.迭代器不一样。

fail-fast迭代器:如果有其它线程对集合进行的添加/删除元素,将会立刻抛出ConcurrentModificationException.

HashMap的迭代器(Iterator)是fail-fast迭代器,Hashtable的迭代器(enumerator)不是fail-fast的。

4.hashtable初始容量11,扩容因子0.75

HashSet
作为Set集合的一种,首先是无序的,不可重复的;

允许存放null值;

底层封装HashMap;

实现是不同步的,线程不安全;

hashset底层封装了hashmap,将值c存放在hashmap的key中,hashset的add方法底层调用了hashmap的put,而判断key是否相同,是通过hashcode和equals方法,所以如果hashset中想要存放object并且不重复的话,需要重写hashcode和equals方法。

原文链接:HashMap和HashTable和HashSet的理解

18.treemap的key值是否可以为空

put(key,value): 注意key不能为空,但是value可以为空
key如果为空,会抛出空指针异常

19. 怎么启动一个线程

线程.start

20. 实现多线程有哪几种方式,继承Thread类和实现runnable接口有什么区别

21.创建线程的方法

  • 1.继承自Thread,重写run方法,
/**
 * User:yang
 */

class MyThread extends Thread{
    @Override
    public void run() {
        //线程要执行的代码
        while (true){
            System.out.println("这是新线程");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


public class Test {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("hello world");
        MyThread myThread=new MyThread();
        myThread.start();
        while(true){
            System.out.println("这是主线程");

            Thread.sleep(1000);

        }
    }
}

  • 2.实现runnable接口,把runnable接口的实例赋值给Thread
import java.util.TreeMap;

/**
 * User:yang
 */
class MyTask implements Runnable{
    @Override
    public void run() {
        while (true){
            System.out.println("hello");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class ThreadDemo2 {
    public static void main(String[] args) {
        Runnable myTask=new MyTask();
        Thread t=new Thread(myTask);
        t.start();
    }
}

  • 3.匿名内部类(thread)
Thread t2=new Thread(){
            @Override
            public void run() {
                long b=0;
                for (long i = 0; i <count ; i++) {
                    b++;
                }
            }
        };
  • 4.匿名内部类(runnable)
    public static void main(String[] args) {
        Thread t=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello");
            }
        });
        t.start();
    }
  • 5.使用lambda表达式创建线程
   public static void main(String[] args) {
        Thread t=new Thread(()->{
            System.out.println("hello");
        });
        t.start();
    }

22.自己测试怎么考虑设计测试用例

23.对测开的理解

参考这个测试开发

24.知道哪些测试工具

Selenium(自动化测试),禅道(管理),loadrunner(性能),fidder(抓包), postman(接口测试)

25.postman怎么用的,用过哪些功能

26.对自动化测试的了解

27什么样的情况适合做web自动化测试,什么时候不适合

​ 功能成熟(产品稳定,功能稳定)

​ 周期长

​ 可测性强(人工干预的多不多)
参考自动化测试

28需求临上线发现个bug,开发说不要紧,怎么办

让开发人员发邮件,说明情况,邮件抄送开发领导,测试领导,产品经理
等待领导层处理
因为对于你和开发你们并不能非常绝对的判断bug严不严重,所以一定要和领导去沟通。

29. 怎么生成测试报告

30HTML报告

  • 总结分析测试用例执行的过程那些成功,那些事败,并分析失败原因,记录结果。
import HTMLTestRunner
import os
import sys
import time
import unittest


def createsuite():
    discovers = unittest.defaultTestLoader.discover("../src0811", pattern="testbaidu*.py", top_level_dir=None)
    print(discovers)
    return discovers


if __name__ == "__main__":
    # 1,创建一个文件夹
    # 当前的路径
    curpath = sys.path[0]
    # sys.path 是一个路径集合数组
    print(sys.path)
    print(sys.path[0])
    # 当前路径下resultreport文件夹不存在的时候,就创建一个
    if not os.path.exists(curpath + '/resultreport'):
        os.makedirs(curpath + '/resultreport')

    # 2,解决重复命名的问题
    now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))
    print(time.time())
    print(time.localtime(time.time()))
    # 文件名是路径加上文件的名称
    # 准备HTML报告输出的文件
    filename = curpath + '/resultreport/' + now + 'resultreport.html'
    # 打开 HTML 文件, wb 以写的方式
    with open(filename, 'wb') as fp:
        # 括号里的参数是 HTML 报告里面的参数
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告",
                                               description=u"用例执行情况", verbosity=2)
        suite = createsuite()
        runner.run(suite)

31输入url到显示页面的过程

参考:从输入URL到浏览器显示页面发生了什么

32.postman接口测试,调用接口权限之前如何进行身份认证

什么是token
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。 ‘
’参考token

33. 测试工程师具备哪些能力

  • 思维灵敏,细心,耐心,好奇心,不浮躁,善于怀疑
    批判性思维:清楚–准确、切题–深刻,有意义,有逻辑性–公正、全面
    ,快速学习能力,沟通能力,文字表达能力,开发能力,责任感和压力

34.1个客户端500个用户,500个客户端500个用户,客户端同时对服务器施压,有什么区别?

35.场景题:携程10月1日9:30上线一个跟团游秒杀活动,10点活动截至,测试重点是什么(性能测试,服务器能否承载预估的人流量)

36手撕:输出字典

37.手撕:冒泡或快排

交换排序(冒泡排序,快速排序)

38.JAVA三大特性

39序 选择排序

40.强引用弱引用

一些测开面试题及答案(个人梳理)

40.软件质量怎么把关

1、在软件开发中,可以采用以下措施保证软件的质量;

2、审查。在生命周期每个阶段结束之前,都要使用标准对该阶段生产的软件配置进行严格的技术审查;

3、复查和管理复审。复查是检查已有的材料,以断定某阶段的工作是否能够开始或继续;管理复审是向开发组织或使用部门的管理人员,提供有关项目的总体状况、成本和进度等方面的情况,以便他们从管理角度对开发工作进行审查。

4、测试。通过测试计划、测试过程与测试结果对软件质量进行保证;

5、软件质量保证活动。以上各项活动内容都须写入质量保证计划,并由质量保证小组监督实施。由此可见,质量保证既是技术活动,也是管理活动;

6、软件评审。评审是以提高软件质量为目的的技术活动。要通过对软件的规格说明、可靠性、性能实现、可修改性、可扩充性、可移植性、可测试性、可复用性以及评审的实施等方面对软件项目做好严格的评审,以确保软件质量;

7、采用质量保证标准。质量标准用于实现质量管理的组织结构、责任、规程、过程和资源。采用ISO质量保证模型。可以用于质量计划、质量控制、质量保证和质量改经所需的组织结构、规程、过程和资源;

8、结构化的软件测试。经过严格的软件测试,尽可能找出软件计划、总体设计、详细设计、软件编码的错误,并加以纠正,才能提高软件的质量。测试要覆盖整个软件的生存周期,而不限于程序的编码阶段。

9、软件维护。采用结构化维护,完整的软件配置为基础,通过完善性维护、纠错性维护、适应性维护及预防性维护提高软件质量。

来源:软件质量

41自动化测试框架

https://blog.csdn.net/weixin_45417628/article/details/119960058

42、计算机网络里有哪些协议

一些测开面试题及答案(个人梳理)

43.让你测一款浏览器,一周内完成任务,你如何规划测试流程

44.给你50个测试用例,时间很紧,你怎么选择浏览器版本并如何规划测试任务完成最终交付(这个问题一直在挖,疯狂的试探,整个流程一直在针对这个问题问我如何进行)

45场景题:测试微信转发消息功能

测试人员常用的测试用例——QQ、微信发消息功能通用哦!一起来展现你的智慧吧

46.题:10000以内能被自身每一位数字整除的数字

47.质数

/**
     * 判断一个数是不是质数 
     */
    public static boolean isPrime(int number){
        if(number<2){//若此数小于2,则不是质数
            return false;
        }
        //从1-number本身循环取余计算
        for(int i=1;i<number;i++){
            if(number % i == 0){//余数为0,能整除
                if(number == i){//是否是本身
                    return true;
                }else if(i!=1){//是否是1
                    return false;
                }
            }
        }
        return true;
    }

50.测试用例去冗余

51http协议有哪些方法以及作用

参考:HTTP权威指南 – HTTP协议有哪些请求方法(Method)?

52get和post的区别是什么

get,post区别
get===>url,请求长度:1024kb,可以被缓存/收藏/保留浏览记录,常用于请求查询数据,

post===>body,post不限,不可以缓存/收藏body/保留浏览记录,常用于提交数据,

相对而言,post更安全,不会在url被劫持,

querystring 是url的一部分

get、post都可以带上。

get的querystring(仅支持urlencode编码)

post的参数是放在body(支持多种编码)

53.浏览器里cookie、session和token的区别

cookie、session和token

54.mysql里有哪些锁

MySQL】MySQL有几种锁

55错误推测法如何理解

错误推测法文章来源地址https://www.toymoban.com/news/detail-448765.html

56 设计测试用例:页面上有一个搜索框和搜索按钮,下方是搜索结果列表展示的各个产品信息(包括预定按钮、价格、产品名称、标签等)、底部的翻页按钮(上一页、下一页、第一页、第二页…、最11后一页)

到了这里,关于一些测开面试题及答案(个人梳理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面试题:ES的面试题及答案

    什么是ES? 答:ES是Elasticsearch的缩写,是一款开源的分布式搜索引擎。它可以快速地存储、搜索和分析大量的数据,支持全文检索、结构化查询等多种查询方式。ES的主要特点是速度快、可扩展、高可用和易于使用。 ES的主要用途是什么? 答:ES主要用于建立搜索引擎、日志

    2024年02月16日
    浏览(33)
  • 【面试题】2023前端vue面试题及答案

    前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库  web前端面试题库 VS java后端面试题库大全   Vue3.0 为什么要用 proxy? 在 Vue2 中, 0bject.defineProperty 会改变原始数据,而 Proxy 是创建对象的虚拟表示,并提供 set 、get 和 deleteProperty 等处理器,这些处理器可

    2024年02月06日
    浏览(37)
  • php算法面试题及答案

    1. PHP的基础知识点 PHP中类的继承属于单继承,一个子类只能继承一个父类。可见性为public protected的属性和方法可以被继承。 继承的方法或属性可以被重写,可见性越来越大。 PHP中的变量名区分大小写,但类名、函数名不区分大小写。 2. error_reporting()函数的作用 error_reporti

    2024年02月09日
    浏览(39)
  • 运维常用面试题及答案

    介绍一下你的运维经验和技能。 答案:在回答这个问题时,可以简要概述你的运维经验和技能,包括你的工作经历、参与的项目、使用的工具和技术等。重点突出你在系统监控、故障排除、自动化部署、容量规划和安全性等方面的经验和技能。 你在日常工作中使用过哪些自

    2024年02月15日
    浏览(34)
  • Qt经典面试题及答案

    面试题: 请解释什么是Qt框架,以及它在软件开发中的作用和优势。 请谈谈你在使用Qt进行GUI开发方面的经验和技能。 请描述Qt的信号和槽机制,并解释其在软件开发中的作用。 请介绍Qt中的模型/视图架构,并说明如何使用Qt模型/视图框架来实现数据的展示和交互。 在Qt中,

    2024年02月03日
    浏览(33)
  • java面试题及答案(基础篇)

    如今IT仍是热门行业,面试程序员的人也非常多,那么,怎样才能顺利通过面试呢?2021最新java面试题及答案(基础篇),为你的面试助攻! 1、Java中的内存溢出是如何造成的? OutOfMemoryError: (1)PerGern Space 程序中使用了大量jar或class,使Java虚拟机装载类空间不够。 解决方

    2024年02月12日
    浏览(36)
  • 常见的Webpack面试题及答案

    Webpack是目前比较物流的前端构建工具,它基于入口,用不同的Loader来处理不同的文件。我们来看一下常见的Webpack面试题及答案吧,希望对你有帮助。 Webpack的核心概念 Entry :入口,Webpack执行构建的第一步将从Entry开始,可抽象成输入。告诉Webpack要使用哪个模块作为构建项目

    2024年01月16日
    浏览(52)
  • 前端开发面试题及答案整理(合集)

      前端开发面试题及答案 1、对Web标准以及W3C的理解与认识? 答:标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链CSS和JS脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组

    2024年02月17日
    浏览(37)
  • 28道Zookeeper面试题及答案

    JAVA面试宝典,搞定JAVA面试,不再是难题,系列文章传送地址,请点击本链接。 目录 1、说说 Zookeeper 是什么? 2、ZooKeeper 有哪些应用场景? 3、说说Zookeeper的工作原理? 4、请描述一下 Zookeeper 的通知机制是什么? 5、Zookeeper 对节点的 watch 监听通知是永久的吗? 6、 Zookeeper 集

    2024年01月21日
    浏览(47)
  • 10年测开经验面试35K公司后,吐血整理出高频面试题和答案!

    在当今竞争激烈的职场环境中,拥有丰富的测试开发经验已成为众多企业青睐的重要条件之一。而在面试过程中,高频面试题更是能够考察应聘者的实际能力和知识水平。本文作者具备10年的测试开发经验,并通过面试获得了35K公司的职位,特意整理出了高频面试题及其答案

    2024年02月21日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包