软件测试面试题

当一个接口请求不通过或者页面无法访问该如何排查呢

请求不通,可能的原因是:
1、ip或者端口号或者url写错了
2、客户端和服务端网络不通
3、服务端项目根本没有部署起来
4、服务器的防火墙拦截了
5、服务端程序内部发生了错误
6、没有访问权限(比如缺乏token、cookie之类)
7、客户端设置了网络代理
8、如果是浏览器访问,是不是绑定了错误的hosts

怎么开展接口测试
  1. 先了解接口的业务功能、入参出参以及接口对应的数据库存储
  2. 再依据接口测试用例设计方法完成接口测试用例的设计
  3. 最后依据测试用例使用接口测试工具完成接口测试,并在测试过程中通过查看响应数据确保接口测试
    结果的正确性
给你一个网站如何测试,怎样开展工作

1.查找需求说明、网站设计等相关文档,分析测试需求。
2.制定测试计划,确定测试范围和测试策略。
3.设计测试用例,包括功能、兼容、性能、安全等方面
4.开展测试执行
5.回归测试及测试总结

浏览器输入一个url地址的请求流程是怎样的

1、DNS 域名解析
2、与服务器建立 TCP 连接
3、发起 HTTP 请求,发送数据
4、服务器响应 HTTP 请求,返回数据
5、浏览器解析数据、渲染
6、关闭连接

Session和Cookie 区别

会话(Session)跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话
Cookie 通过在客户端记录信息确定用户身份,Session 通过在服务器端记录信息确定用
户身份
区别:
1、数据存放位置不同:
cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
2、安全程度不同:
cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗,考虑到安全应当使用 session。
3、性能使用程度不同:
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用 cookie。
4、数据存储大小不同:
单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie,而 session 则存储与服务端,浏览器对其没有限制。

http和htpps的区别

HTTP:超文本传输协议,是一个客户端和服务器端的请求和应答的标准。
HTTPS:是以安全为目标的 HTTP 通道,HTTP 的安全版本,HTTP 下加入 SSL 层,HTTPS的安全基础是 SSL,因此加密的详细内容就需要 SSL.
它们的区别如下:

  1. HTTP 信息是明文传输的,而 HTTPS 是安全的 具有安全性的 ssl 加密传输
  2. HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  3. HTTP 无需证书,而 HTTPS 需要认证证书.需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
get和post区别

最常见的 http/https 协议的请求方式是 GET 和 POST,它们之间的区别如下:
1.请求参数的位置
get 在 url 里面传输,post 在请求体里传输
2.安全性
正因为传输参数位置的区别,所以 get 的安全性不如 post
3.传输数据的大小
正因为传输参数位置的区别,get 的参数长度受限于浏览器,post 的长度不受限制
4.表现形式
请求行的表现形式不一样,因为请求行里面包括请求方法

开发人员说不是 bug

开发人员说不是 bug,有 2 种情况:
一是需求没有确定,所以这个时候可以找来产品经理进行确认,需不需要改动,商量确定好后再看要不要改。
二是这种情况不可能发生,所以不需要修改,这个时候可以先尽可能的说出是 BUG 的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。如果最终 bug 被确定不改,那么就要在测试报告里面记录一下,以便以后查阅。

发现一个bug,怎么定位是app端还是服务端的问题
  1. 抓包分析
    通过对客户端进行抓包,分析服务端返回的数据是否符合预期,如果服务端数据是正确的,那就是客户端的问题
  2. 日志分析
    可以通过查看客户端/服务端的日志,分析有没有异常的日志信息,从而确定具体原因
app测试和web测试的区别

Web 端测试和移动端测试类型基本相似,都需要进行功能测试、性能测试、安全性测
试,他们主要区分 web 端一般都是 b/s 架构,基于浏览器的,app 是 c/s 架构,是有客户端
的。
(1) 从系统架构来看的话:web 测试只要更新了服务器端,客户端就会同步更新;而如果是
app 端下修改了服务端,意味着客户端用户所有使用的核心版本都需要进行回归测试一遍。
(2) 客户端性能方面:Web 端可能只会关注响应时间;App 则还要关心流量、电量、cpu、
等;
(3) 兼容方面:Web 是基于浏览器的,所以更倾向于浏览器(IE、Chrome、firefox)和电脑
硬件,电脑系统方向的兼容;App 测试则必须依赖于手机或者 pad,不仅要看分辨率、频目
尺寸、重要看设备系统。

什么是负载与有哪些负载模式?

负载就是对服务器迭代式加压,从而寻求性能测试拐点。

  1. 用户模式。不断增加的用户数带来的压力;
    1个用户1s内发起20个请求,rps=20/s。
  2. 请求模式,不断增加的请求数带来的压力;
    10个用户,1s用户1s内发起1个请求,rps=10/s。
    不能单纯的通用用户去衡量压力,直接通过每秒请求数去衡量压力。直接从服务端考虑。
Jmeter性能测试时,应用服务器CPU高的排查方法?

应用cpu高,说明进程非常耗用资源,进程又是由线程组成的,故登录服务器排查,排查步骤如下:

  1. 用top命令查看占用资源高的进程,记下进程pid。
  2. top -Hp pid 列出进程下面的哪些线程消耗资源,记下线程的pid,转换为16进制。
  3. 打出进程dump信息:命令为:jstack -l pid >111.txt
  4. sz 111.txt,下载进程dump信息查看,查找dump中16进制的线程信息。
  5. 定位到哪里,就是哪里的线程一直在耗费资源,定位出来让研发去解决。
jmeter性能测试需求的来源是什么?
  1. 客户提供需求
  2. 开发提供需求
Jmeter性能测试如何准备性能测试数据?
  1. 调用业务接口构造数据,一般适用于数据逻辑比较复杂的情况下。
  2. 直接写 jdbc 代码造数据,一般适用于数据量较大且数据逻辑较简单的情况。
  3. 存储过程造数据,一般适用于数据量巨大且数据逻辑较简单的情况。
  4. 导入 sql,一般适用于数据安全级别较低且数据量巨大的情况。
描述下性能测试流程
  1. 分析性能需求(用户使用最频繁的场景进行测试),确定性能指标(例如:事务通过率100%,top99%是5秒,最大并发是2000,CPU和内存都是70%以下)
  2. 制定性能测试计划,明确测试时间、测试环境和测试工具
  3. 编写测试用例
  4. 搭建测试环境,准备测试数据、编写测试脚本
  5. 测试脚本优化:设置检查点,参数化,关联,集合点,事务,调整思考时间等
  6. 设计测试场景,运行测试脚本和监控服务器
  7. 分析测试结果,收集相关日志提单给开发
  8. 回归测试
  9. 编写测试报告
Jmeter如何实现200用户的并发?

绝对并发:在脚本对应的请求后添加集合点。
相对并发:线程组设置200线程数。

服务器的cpu使用率和load是什么关系?

通常情况下,cpu使用率和load值是正比关系,即cpu使用率越高,load值越高。但是在一些特殊情况下,也会出现cpu使用率不高,但是load值较高的情况,比如某系统只能使用CPU中的单核运行,它可以占用单核cpu100%,但从整体cpu使用率来看,只是使用了一小部分。而随着并发的增大,单核CPU的任务队列会越来越长,造成了load值较高。

如何分析性能测试结果?

首先看事务通过率,然后分析响应时间、CPU、内存等指标是否满足需求,如果结果不可信,则分析异常原因并复测,确定性能结果可信之后,如发现以下问题,按下面思路来定位问题:
1)响应时间不达标:首先看事务所消耗的时间主要是在网络传输还是服务器,如果是网络,就需要结合网络吞吐量图,计算宽带是否存在瓶颈,如果存在就需要考虑增加宽带;如果不存在则有可能是网络不稳定导致的。如果是服务器,就要分别查看web服务器和数据库服务器的CPU、内存的使用率是否过高,因为过高的CPU,内存必定会造成响应时间过长、
2)服务器CPU指标异常:把web服务器对应上对应的用户操作日志取下来,发给开发定位。
3)数据库CPU指标异常:把数据库服务器对应上对应的日期取下来,发给开发定位。
4)内存泄漏:把内存的heap数据取下来,分析是那个对象消耗内存最多,然后发给开发定位。
5)程序在单用户场景下运行成功,多用户运行失败,提示连不上服务器:程序可能是单线程处理机制。

性能测试中常见的性能问题有哪些?
  1. 响应时间过长:指系统对请求做出响应的时间过长,导致用户等待时间增加。例如,一个网页的响应时间超过3秒,用户可能会失去耐心并离开该网页;
  2. 吞吐量过低:指系统处理请求的速率过低,导致系统无法满足用户需求。例如,一个网站的每秒处理页面数过低,用户可能需要等待较长时间才能加载页面;
  3. 延迟过高:指系统处理请求的延迟时间过长,导致用户等待时间增加。例如,一个API的延迟时间超过 200 毫秒,可能会导致应用程序响应缓慢;
  4. 带宽不足:指系统传输数据的速率过低,导致系统无法满足用户需求。例如,一个视频网站的带宽不足,可能会导致视频播放卡顿或无法加载;
  5. CPU使用率过高或过低:指系统CPU的利用率过高或过低,导致系统处理能力不足或浪费。例如,一个数据库的CPU使用率过高,可能会导致数据库性能下降;
  6. 内存使用率过高或过低:指系统内存的利用率过高或过低,导致系统处理能力不足或浪费。例如,一个服务器的内存使用率过高,可能会导致服务器崩溃或无法满足用户需求
常见的性能测试指标有哪些?

1、响应时间:指系统对请求做出响应的时间,通常以毫秒或秒为单位测量;
吞吐量:指系统处理请求的速率,通常以每秒处理的请求数或每秒处理的页面数为单位测量;
2、并发用户数:指同时发起请求的用户数量,通常用于评估系统的并发处理能力;
3、带宽:指系统传输数据的速率,通常以比特或字节为单位测量;
4、CPU使用率:指系统CPU的利用率,通常以百分比表示;
5、内存使用率:指系统内存的利用率,通常以百分比表示;
回答参考:
这些指标可以帮助我们评估系统的性能表现,发现性能瓶颈和优化空间,为系统的优化和升级提供参考。在性能测试过程中,我们通常会记录这些指标的数据,并进行分析和比较,以确定系统的性能表现和需要改进的地方。

如何确定并发用户数
  1. 用户并发数指标:并发用户数的定义是每秒同时向服务器提交请求的用户总数量
    平均并发用户数的计算公式:C=nL / T
    其中C是平均的并发用户数,n是平均每天访问用户数,L是一天内用户从登录到退出的平均时间(操作平均时间),T是考察时间长度(一天内多长时间有用户使用系统)
    并发用户数峰值计算公式:C’ ≈ C+3根号C
    其中,C’指并发用户数的峰值,C即是平均并发用户数
  2. 先确定 n、L、T:
    n: 项目预估运行一年日活:10 w;
    L: 用户平均使用时长是:10 min;
    T: 用户每天活跃时间大约是从早上 10 点到晚上 10 点。
  3. 平均并发 = 100000 * 10 / 12 ≈ 83333.33 人/分钟 ≈ 1388 人/秒
  4. 峰值并发 ≈ 1500 人/秒
    回答参考:
    确定并发用户数需要考虑系统用户数、在线用户数和并发用户数之间的关系,以及系统的高峰期和日常流量等情况。并发用户数不是随便确定的,需要根据系统实际情况进行数据分析和估算,一般采用经验公式或通用公式进行计算;同时,还需要考虑系统性能指标和用户行为需求等因素,以确保系统能够支持预期的并发用户数
    在这里插入图片描述
测试报告应该包括哪些内容?

1、测试背景说明
2、测试范围说明
3、测试环境说明
4、测试方法说明
5、测试结果与缺陷分析,主要从功能性能方面来分析
6、测试结论与建议
7、质量或风险评估

bug的生命周期都有那些阶段

1)New: 是新发现的bug(指给对应的开发);
  2)Open: 开发确认这是bug,并且认为需要进行修复;
  3)Fixed: 修复,开发人员修改后,标记一下已经修复完毕,等待测试人员进行确认性测试;
  4)Rejected: 拒绝,如果开发不认为这是个bug,就拒绝修改,把bug的状态制成Rejected状态;
  5)Delay: 延迟,如果认为暂时不需要修改或者暂时不能修改,延后去做修改,就可以将bug置成Delay状态 ,并且说明理由;
  6)Closed: 关闭,修改状态的bug,经测试人员确认测试,并且通过测试之后,关闭bug;
  7)Reopen: :修改状态的bug,经测试人员确认测试,如果仍然存在问题,把bug置成Reopen状态,开发人员需要重新去修改这个bug;
  8)later: 延期修改,下个版本再进行去修复这个bug;

测试计划都包括那些项
  1. 测试计划目标

  2. 测试参考文档

  3. 测试术语与定义

  4. 测试内容

  5. 测试人员的分工

  6. 测试进度

  7. 测试流程

  8. 测试工具

  9. 测试缺陷管理

  10. 测试的风险分析

  • 23
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问 12-6 用Timer类调度任务 12-7 练习 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值