去面试测试开发工程师要做哪些准备?大厂真实面试题汇总

news2024/10/7 10:16:31

目录

1.黑盒测试和白盒测试的区别特点和方法。

2.单元测试、集成测试、系统测试、验收测试、回归测试

3.集成测试和系统测试的区别和应用场景

 4.α测试、β测试,以及它们的区别

5.给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例

6.请你对吃鸡游戏进行压力测试

7.app性能测试的指标

8.请你说说web测试和app测试的不同点 

此外APP还有一些专项测试:如网络、适配性。        


1.黑盒测试和白盒测试的区别特点和方法。

白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。

白盒测试技术一般可被分为静态分析和动态分析两类技术。

静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。

动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。

白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。

白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。

黑盒测试又叫功能测试,这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。

在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。

黑盒测试方法:

等价类划分法

边界值法

因果图

随机数法

错误推断法

              

 

2.单元测试、集成测试、系统测试、验收测试、回归测试

单元测试:

单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。

集成测试:

集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。

集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。

集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别

回归测试:

回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软 验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。

3.集成测试和系统测试的区别和应用场景

区别:

1、计划和用例编制的先后顺序:从V模型来讲,在需求阶段就要制定系统测试计划和用例,HLD的时候做集成测试计划和用例,有些公司的具体实践不一样,但是顺序肯定是先做系统测试计划用例,再做集成。

2、用例的粒度:系统测试用例相对很接近用户接受测试用例,集成测试用例比系统测试用例更详细,而且对于接口部分要重点写,毕竟要集成各个模块或者子系统。

3、执行测试的顺序:先执行集成测试,待集成测试出的问题修复之后,再做系统测试

应用场景:

集成测试:完成单元测试后,各模块联调测试;集中在各模块的接口是否一致、各模块间的数据流和控制流是否按照设计实现其功能、以及结果的正确性验证等等;可以是整个产品的集成测试,也可以是大模块的集成测试;集成测试主要是针对程序内部结构进行测试,特别是对程序之间的接口进行测试。集成测试对测试人员的编写脚本能力要求比较高。测试方法一般选用黑盒测试和白盒测试相结合。

系统测试:针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交个用户的功能)测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。系统测试测试软件《需求规格说明书》中提到的功能是否有遗漏,是否正确的实现。做系统测试要严格按照《需求规格说明书》,以它为标准。测试方法一般都使用黑盒测试法。

 4.α测试、β测试,以及它们的区别

1. α测试

就是把用户请到公司内部进行测试使用。
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试;
目的:是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。
注意!α测试不能由程序员或测试员完成。

2. β测试

用户在不同场所进行测试。
β测试是一种验收测试。β测试由软件的终用户们在一个或多个场所进行。

3.区别

它们都是验收测试!

α测试是指把用户请到开发方的场所来测试
β测试是指在一个或多个用户的场所进行的测试。

α测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。
β测试的环境是不受开发方控制的, 用户数量相对比较多,时间不集中。

α测试先于β测试执行。通用的软件产品需要较大规模的β测试,测试周期比较长


验收测试包括三类:

  1. 正式验收测试
  2. 非正式验收测试 - α测试(内测) -β测试(公测)

                 

 

5.给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例

6.请你对吃鸡游戏进行压力测试

一.首先明确需要测试压力的内容:

1.游戏服务器硬件

  • a.硬盘I/o b.内存 c.CPU               

2.网络压力

  • a.长连接
  • a1.最大连接数
  • a2.流量(内网、外网、进、出)
  • b.长连接短周期(类似Http的TCP应用,这个比较特殊的一个需求,专门针对LoginAgent)
  • b1.每秒建立的连接数
  • b2.实际处理能力

3.数据库

  • a.每秒事务数 b.每秒锁等待数 c.平均延时(ms) d.CPU暂用

4.多线程的最优线程数

  • a.数据库执行的多线程 b.多连接处理                                                                                 

7.app性能测试的指标

**内存**:

内存消耗测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性。

当然关于内存测试,在这里我们需要引入几个概念:**空闲状态、中等规格、满规格。**

  • 空闲状态:打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲
  • 中等规格:对应用的操作时间的间隔较长
  • 满规格:对应用的操作时间的间隔较短

内存测试中存在很多测试子项,清单如下:

●空闲状态下的应用内存消耗;

●中等规格状态下的应用内存消耗;

●满规格状态下的应用内存消耗;

●应用内存峰值;

●应用内存泄露;

●应用是否常驻内存;

●压力测试后的内存使用。

CPU:

使用Android提供的view plaincopy在CODE上查看代码片派生到我的代码片

adbshell dumpsys CPUinfo |grep packagename >/address/CPU.txt来获取;

使用top命令view plaincopy在CODE上查看代码片派生到我的代码片

adbshell top |grep packagename>/address/CPU.txt来获取。

流量:

网络流量测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。

流量测试包括以下测试项:

应用首次启动流量提示;

应用后台连续运行2小时的流量值;

应用高负荷运行的流量峰值。

电量:

第一类:首次启动--应用首次启动所花费的时间;

第二类:非首次启动--应用非首次启动所花费的时间;

第三类:应用界面切换--应用界面内切换所花费的时间。

与服务器交互的网络速度                                                                                                                               

8.请你说说web测试和app测试的不同点 

系统架构方面:

web项目,一般都是b/s架构,基于浏览器的

app项目,则是c/s的,必须要有客户端,用户需要安装客户端。

web测试只要更新了服务器端,客户端就会同步会更新。app项目则需要客户端和服务器都更新。

性能方面:

web页面主要会关注响应时间

而app则还需要关心流量、电量、CPU、GPU、Memory这些。

它们服务端的性能没区别,都是一台服务器。

兼容方面:

web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容

app测试则要看分辨率,屏幕尺寸,还要看设备系统。

web测试是基于浏览器的所以不必考虑安装卸载。

而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。

此外APP还有一些专项测试:如网络、适配性。        

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/552173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据之RDD的算子分类

文章目录 前言一、RDD的算子分类二、Transformation转换算子三、Action动作算子总结 前言 #博学谷IT学习技术支持# 上一篇文章主要讲述了两种RDD的创建方式,本篇文章接着讲RDD的算子及其分类。 一、RDD的算子分类 RDD的算子主要有两种类型,一种是Tran…

docker面试题:docker容器虚拟化与传统虚拟机比较

容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件在任何环境中都能够始终如一地运行。容器赋予了软件独…

什么是强化学习?强化学习有哪些框架、算法、应用?

什么是强化学习? 强化学习是人工智能领域中的一种学习方式,其核心思想是通过一系列的试错过程,让智能体逐步学习如何在一个复杂的环境中进行最优的决策。这种学习方式的特点在于,智能体需要通过与环境的交互来获取奖励信号&#…

JAVA常用API - 正则表达式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一,正则表达式是什么? 二,正则表达式符号 三,常用正则表达式组合 四,正则表达…

利用MySQL的binlog恢复误删的数据库

1 查看当前数据库内容并备份数据库 查看数据库信息: 备份数据库: [rootlocalhost ~]# mysqldump -u root -p t > /mnt/t.sql Enter password: [rootlocalhost ~]# ll /mnt/t.sql -rw-r--r-- 1 root root 1771 Aug 25 11:56 /mnt/t.sql2 开启bin…

java-----web项目部署到新服务器以及服务器的部署

目录 一、服务器安装jdk1.8 二、安装mysql5.7 2.1下载mysql 2.2修改root账号密码 2.3设置远程登录 三、项目的部署 3.1导入数据库 3.2将项目打成jar包 3.3项目上传 服务器部署项目的方式,本次以打成jar包的形式讲解(以springboot项目为例&#xf…

2023年贵工程团体程序设计赛--部分题解

作者:杨书瑶 单位:贵州工程应用技术学院 本次比赛由大学生程序设计协会(cpa)举办,共计17道题,295分。其中5分题三道,10分题三道,15分题两道,20分题三道,25分题两道,30分题两道…

chatgpt赋能Python-pythonbus

PythonBus: 为Python 开发者量身打造的社区 对于所有Python 开发者而言,PythonBus 是一个非常值得加入的社区平台。该平台汇聚了全球最顶尖的Python 开发者,同时也是一站式排除各种问题并交流经验的平台。在PythonBus,无论你是初学者还是专家…

【模电实验】基本放大电路的研究实验

实验四 基本放大电路的研究实验(2小时) —、实验目的 (1)充分认识分压式偏置放大电路的电压放大作用,了解其静态工作点的调节、测量,认识截止失真和饱和失真现象,了解消除截止失真和饱和失真…

华为OD机试真题 Java 实现【计算网络信号】【2023Q2 200分】

一、题目描述 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意: 网络信号可以绕过阻隔物array[m][n]的二维数组代表网格地图,array[i][j]0代表i行j列是空旷位置&#xff…

DAY 64 mysql主从复制与读写分离

概念 什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、改、删操作( INSERT、UPDATE、DELETE) ,而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 为什么要读写分离呢? 因为数据库的…

【Linux系列P2】Linux基本指令知识(带图演示,精炼)

前言 大家好,这里是YY的Linux系列part2;本章主要内容面向能使用Linux的老铁,主要内容含【设置普通用户】【Linux基本知识】【基本指令大全】 在下一章节【Linux系列part3】中,YY将手把手讲述Linux的权限知识,欢迎订阅YY的Linux专栏…

MyBatis 是什么?与 Hibernate 的区别是什么?

MyBatis 是一种基于 Java 的持久化框架,它可以将 SQL 语句和 Java 代码进行映射,使得开发人员可以使用面向对象的方式来操作数据库。MyBatis 通过提供 XML 配置文件或注解方式来配置映射关系,使得数据库操作变得更加简单和灵活。 与 Hiberna…

VS Code 配置 C/C++ 开发环境

一、软件下载 需要下载的软件如下: VS Code编译工具:MinGW 或 MSYS2 或 VS2022 VS Code 下载地址:链接 MinGW 下载地址:链接 或者 链接 MSYS2 下载地址:链接 VS2022 下载地址:链接 上述软件下载完成以后…

入门JavaScript编程:上手实践四个常见操作和一个轮播图案例

部分数据来源:ChatGPT 简介 JavaScript是一门广泛应用于Web开发的脚本语言,它主要用于实现动态效果和客户端交互。下面我们将介绍几个例子,涵盖了JavaScript中一些常见的操作,包括:字符串、数组、对象、事件等。 例子…

Java【TCP 协议2】好多人都错了! 保证可靠传输的不是三次握手和四次挥手! 而是...

文章目录 前言一、确认应答1, 什么是确认应答2, 序列号和确认应答号 二、超时重传1, 什么是超时重传 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系…

蓝牙RFCOMM 协议

蓝牙RFCOMM 1.RFCOMM1.1 服务定义模型1.2 字节排序 2 RFCOMM数据帧2.1 选项和模式2.2 帧类型2.3 帧格式2.3.1 Address2.3.2 Control(帧类型)2.3.3 Length2.3.4 InfoData2.3.5 FCS 2.4 多路复用控制命令(DLCI 0)2.4.1 DLC paramete…

OpenCV基础操作(4)颜色空间转换、几何变换、图像二值化操作

OpenCV基础操作(4)颜色空间转换、几何变换、图像二值化操作 import cv2 as cv import numpy as np一、颜色空间转换 1、转换颜色空间 在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。 我们…

《面试1v1》volatile

基本功 我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官: 你能解释一下 volatile 关键字的作用吗? 候选人: 当我们在编写多线程程序时,经常会遇到线程安全的问…

iptables防火墙(一)

iptables防火墙 一、iptables概述1、netfilter 与 iptables 的关系1.netfilter2.iptables 2、四表五链1.四表2.五链3.表的匹配优先级4.规则链之间的匹配顺序5.规则链内的匹配顺序 二、iptables防火墙的安装及配置方法1、iptables防火墙安装2、iptables防火墙的配置方法1.iptabl…