0


2022最新软件测试面试题常问的30道【持续更新~】

软件基础 1.测试人员在测试中的任务是什么?

1.尽可能早的找出系统中的bug;

2.避免软件开发过程中缺陷的出现;

3.衡量软件的品质,保证系统的质量;

4.关注用户的需求,并保证系统符合用户需求。

总的目标是:确保软件的质量

2.测试用例评审的流程是什么

1.测试用例是否按照公司定义的模板进行编写的; 2.测试用例的本身的描述是否清晰,是否存在二义性; 3.测试用例内容是否正确,是否与需求目标相一致; 4.测试用例的期望结果是否确定、唯一的; 5.操作步骤应与描述是否相一致; 6.测试用例是否覆盖了所有的需求; 7.测试设计是否存在冗余性; 8.测试用例是否具有可执行性; 9.是否从用户层面来设计用户使用场景和业务流程的测试用例; 10.场景测试用例是否覆盖最负载的业务流程; 11.用例设计是否包含了正面、反面的用例; 12.对于由系统自动生成的输出项是否注明了生成规则; 13.用例应包含对中间和后台数据的检查; 14.测试用例应有正确的名称和编号; 15.测试用例应标注有执行的优先级; 16.测试用例包含相关的配置信息:测试环境、数据、前置测试用例、用户授权等; 17.每个测试用例步骤应<=15 step; 18.自动化测试脚本必须带有注释(注释应包括:目的、输入、期望结果等);

3.bug不能复现怎么办

A.首先考虑环境问题,看是否能够还原原来的环境 B.尽量回想发生问题时的复现步骤,不要漏掉任何一个细节,按照步骤的组合尝试复现 C.与开发人员配合,让开发人员对相应的代码检查,看是否通过代码层面检查出问题 D.保留发生bug时的log,附加到提交的Bug中,希望可以通过log中找到一些蛛丝马迹。 E.进行多次测试 更换设备进行测试

4.什么是Http协议,请求方法是什么?,以及Http协议与Https协议的区别?

Http协议又叫超文本传输协议,是定义了一个客户端到服务器请求与应答的标准,分别为请求头与响应头。 请求方法是:get请求与post请求。 HTTPS协议是以安全为目标的HTTP通道,简称Http的安全版。

  • get请求常用在获取数据 post常用在发送数据
  • get安全性没有post安全性高,因为参数直接暴露在url上
  • get请求会被浏览器主动缓存,post不会除非手动设置
  • get请求参数受长度限制,post没有限制

200:请求发送成功。 302:代表重定向。 400:客户端发送的请求语法错误。 401:请问的页面没有授权。 403:没有权限访问这个页面。 404:没有这个页面。 500:服务器内部异常。 501:当前不能处理客户端的请求。 504:服务器端超时,没返回结果。

5.web测试和App测试的区别

系统架构方面: 1.web项目,一般都是b/s架构,基于浏览器的 app项目,则是c/s的,必须要有客户端,用户需要安装客户端。 2.web测试只要更新了服务器端,客户端就会同步会更新。 App项目则需要客户端和服务器都更新。 性能方面: 3.web页面主要会关注响应时间 而app则还需要关心流量、电量、CPU、GPU、Memory这些。 它们服务端的性能没区别,都是一台服务器。 兼容方面: 4.web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容 app测试则要看分辨率,屏幕尺寸,还要看设备系统。

web测试是基于浏览器的所以不必考虑安装卸载。 app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件此外APP还有一些专项测试:如网络、适配性。。。 自动化测试 5.Web大多用的selenium webdriver app是appium

6.当你参加评审时,你的评审原则是什么

首先要从正确性,一致性,可行性,必要性,可跟踪性,分配优先级,可测性,可修改性考虑: 正确性:每一条需求都必须准确的陈述其要开发的功能。 一致性:必须与其他软件需求或高层需求不相矛盾。 可行性:其每一项需求都必须是已系统和环境的权能和限制范围可以来实施的。 必要性:每项需求都是用来授权你编写文档的“根源”,要使每项需求都能回潮至某项客户的输入。 可测性:每项需求都能通过设计测试用例或其他的验证方法来进行测试。 可修改性:每项需求只应在SRS中出现一次,这样更改会容易保持一致性。 可跟踪性:在每项软件需求与它的根源与设计元素,源代码,测试用例之间建立起链接,而这种可跟踪性要求每项需求都必须以一种结构化的,粒度好(fine-grained)的方式编写并单独标明,而不是大段大段的陈述。 分配优先级:应当对所有的需求分配优先级,如把所有需求都看作同样重要,那么项目管理者在开发或节省预算或调度中丧失控制自由度、

7.Android手机和IOS手机,系统有什么区别

A.运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制 B.两者后台制度不同:IOS中任何第三方程序都不能在后台运行,安卓中任何程序都能在后台运行,直到没有内存才会关闭 C.IOS中用于UI指令权限最高,安卓中数据处理指令权限最高 8.软件质量的特性是什么 A.功能性:软件需求要满足用户显示或者稳式的功能。 B.易用性:软件易于学习和上手使用 C.可靠性:软件必须实现需求当中指明的具体功能。 D.效率性:类似于软件的功能。 E.可维护性:需求软件具有将某个功能修复之后继续使用的功能。

9.开发环境和测试环境的区别

开发环境:是在编码阶段,一般我们的代码基本上都是在开发环境中,不会再生产与测试环境,如操作系统,web服务器,语言环境,php,数据库等等。 测试环境:项目完成后,找Bug,以及修改Bug。 生产环境: 项目数据前后端已经疏通,部署到阿里云上有客户去使用以及访问,网络正常运行就好了。

10.写好测试用例的关键/写好用例要关注的维度

1.覆盖用户的需求 2.从用户使用场景出发,考虑用户的各种正常和异常的使用场景; 3.用例的颗粒大小要均匀。通常,一个测试用例对应一个场景; 4.用例各个要素要齐全,步骤应该足够详细,容易被其它测试工程师读懂,并能顺利执行 5.做好用例评审,及时更新测试用例。

11.缺陷报告内容包括什么?

1)、缺陷编号:每个缺陷有一个唯一的编号。 2)、测试用例编号:你使用的那一条测试用例进行的测试。 3)、缺陷描述:哪里出现问题。 4)、复现缺陷步骤:你怎样点击照成的缺陷,步骤一定要详细。 5)、缺陷的严重程度:致命缺陷(软件崩溃),严重缺陷(功能实现不完整,影响用户使用),一般缺陷(某一功能点实现不够完美),较小缺陷(建议 提示用户) 6)、缺陷修复优先级:高优先级(立刻进行修改 1-2天之内)中优先级(属于严重缺陷 3-4天之内)低优先级(有时间就修改) 7)、测试人:测试组内谁测出的bug就提交谁的名字。 8)、指派人:指派给谁(android,web等) 9)、缺陷状态:缺陷的生命周期(新建,确认,解决,重新验证,关闭,重新打开) 10)、版本号:在哪个版本发现的问题

12.请描述一下v模型

添加图片注释,不超过 140 字(可选)

13.请描述一下测试类型

14.请描述一下W模型图

添加图片注释,不超过 140 字(可选)

15.web测试的方法有哪些

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

16.App测试的方法有哪些

添加图片注释,不超过 140 字(可选)

17.你在项目中最经典的bug是什么 1.兼容性问题,在IE浏览器提交按钮可以点击,到了谷歌,火狐就不能了 2.字段的值显示不是想要的结果,或没有显示。(开发从库表取值有误) 3.提交数据之后,状态没有转变为已提交。(代码没有正确获取库表中记录状态改变的状态码) 4.修改密码,新密码与旧密码一致也能成功,没有做新旧密码的校验。

18.为什么要进行抓包

A.有些时候公司没有标准的接口文档,测试人员只能抓包来获取接口测试。 B.抓包可以迅速找到请求,通过抓包可以查看整个请求的过程,以及响应时间,还可以分辨前台与后台Bug. C.通过抓包,可以查看是否有敏感信息,如(用户密码,个人账户信息等数据) D.可以通过抓包进行测试,拦截请求,修改请求数据,查看对应的响应结果,抓包本身就是接口的一部分。 19.测试用例的方法有哪些 等价类划分法,边界值,场景法,因果图,正交表。

20.代码的版本管理用什么工具 上传和合并代码 SVN Git介绍

git远程分支

  1. 还原plateform文件夹

git clone 克隆地址 cd 进入文件夹 git branch test 创建分支 git branch -v 查看 git checkout -b test分支名 切换 git add . 提交 git commit -m "add 提交" git push 将本地修改的推送到远程服务器中 拉取最新代码 git pull origin develop git push origin develop git 提交失败 就这样 git fetch origin dev //获取远程dev分支的修改 git merge origin dev // 合并远程dev分支 git pull origin dev // 更新本地的代码 //退出 esc :q 查看修改的文件 查看不同地方 git diff

21.项目上线的标准是什么

(1)紧急、严重级别错误修复率应达到100% (2)普通级别错误修复率应达到95%以上 (3)优化级别错误修复率应达到60%以上 (4)Abcd级别的bug,ad不能有,c完成30%,d类达到100% (5)用例覆盖率、执行率100%

22.出现空白页面,你认为是前端的问题还是后端的问题

抓包验证返回数据 验证接口返回数据是不是和需求对应。 对应的上就前端问题,对应不上是后端问题 22.三次握手的过程 1.第一次,客户端发送请求到服务器,服务器知道客户端发送,自己接收 正常 2.第二次,服务器发给客户端,客户端知道自己发送,接收正常,服务器接收正常、发送正常 3.第三次,客户端发送给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常

23.四次挥手的过程

第一次:客户端请求断开 第二次:服务器确认客户端的断开请求 第三次:服务器请求断开 第四次:客户端确认服务器的断开

24.上线之后出现bug怎么解决

评估bug的影响范围,检查bug是否业务核心环节的功能问题,检查bug是否涉及到个人信息 紫金财产等 影响小的bug,出现的场景呜呜操作结合日志 让开发人员修复bug 保证bug解决 影响大的bug,无法确定可以通过回滚版本的方式,或者将功能降级或关闭 25.经常复现的bug怎么解决 评估bug的重要性以及对项目的影响 ,如果影响小,就记录下来继续追踪 影响大的话 尽量复现当时bug出现的场景、环境、数据,或者让开发代码走查 或者就是反馈给醒目经理 总结经验,分析问题发生的原因,避免下次出现同样的问题

26.测试总结

测试报告 测试背景说明 范围说明 环境说明 方法说明 结果与缺陷分析 测试结论和建议 质量和风险评估 后期优化问题 测试用例模板 用例编号 所属模块 用例标题 优先级 前提条件 操作步骤 测试数据 预期结果 预期结果 接口测试用例模板 用例标识 标题 模块 优先级 描述 前置条件 请求类型 请求参数 类型 操作步骤 预期结果 缺陷报告模板 缺陷编号 用例编号 缺陷类型 严重级别 优先级 缺陷状态 测试阶段 可重现性 bug原因 缺陷描述 预期结果 实际结果 重现步骤 测试环境 27.网络的七层模型 *应用层 *-> *表示层 *-> *会话层 *(统称应用层)、 *传输层 *(提供端对端的接口)、 *网络 **层 *(为数据包选择路由)、 *链路层 *(单一链路通信的方法,由底层网络定义 的协议)、 *物理层 *(看得到,摸得到的,介质) 应用层协议:http、SMTP、DNP,FTP协议 传输层协议:TCP、UDP 网络层:IP 网络层-传输层:TCP IP

28.Charles抓包原理

1.客户端向服务器发起HTTPS请求 2.Charles拦截客户端的请求,伪装成客户端向服务器进行请求 3.服务器向“客户端”(实际上是Charles)返回服务器的CA证书 4.Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。 5.客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称,用Charles的公钥加密,发送给“服务器”(Charles) 6.Charles拦截客户端的响应,用自己的私钥解密对称(Charles拿到了对称),然后用服务器证书公钥加密,发送给服务器。 7.服务器用自己的私钥解密对称,向“客户端”(Charles)发送响应 8.Charles拦截服务器的响应,替换成自己的证书后发送给客户端 9.至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称**,之后就可以解密或者修改加密的报文了

29.如果一个问题认为是bug 但开发说不是 你怎么处理

1.bug重现 在开发的前面重新操作一遍给他看 确定大家看到的都是同一个现象 2.校队需求 看是否是同一版本的需求 如果不是同个版本 那就确定哪一方需求是最新的 3.如果需求一致 双方意见还达不到一致 那就找产品经理确认 4.开会讨论决定 找相关人员决定最终的决定 30.搭建过什么环境 搭建工作环境是如何搭建的 测试环境操作系统用Linux,通常测试环境包括JDK环境,Tomcat环境和MySQL环境 JDK安装: 1.安装jdk如果有自带,先卸载再装, 2.把包复制/usr/local 3.解压, 4.配置环境变量 5.检查java是否安装成功java -version Tomcat安装: 1.安装tomcat, 2.把下载的tomcat包复制/usr/local, 3.解压, 4.在tomcat/bin目录执行startup.sh文件 5.启动服务 6.在浏览器中连接:IP:8080, 7.如果连接不上,但tomcat又是显示启动OK,检查firewall,路径为 /etc/sysconfig/iptables,将8080端口开启, 8.重启服务 Mysql数据库: mysql安装比较简单,可以使用源码安装,也可以使用yum在线安装,在这里简单地介绍一下yum在线安装 用yum在线安装 1.rpm -qa|grep mysql --检查linux是否有存在的mysql 2.如果有mysql,卸载 rpm -e --nodeps mysql 3.安装 yum install mysql-server mysql mysql-dev -y 4.安装成功后,启动服务 service mysqld start service 服务名 restart/start 5.直接输入mysql 进入到数据库。 随着docker的发展 变成了docker+Jenkins进行的一个持续集成的部署 测试环境一般都是由运维去搭建 。


本文转载自: https://blog.csdn.net/qq_60168783/article/details/125210807
版权归原作者 可可爱爱的程序员 所有, 如有侵权,请联系我们删除。

“2022最新软件测试面试题常问的30道【持续更新~】”的评论:

还没有评论