测试面经
常用工具
1. Postman
用途:
Postman 是一个强大的 API 测试工具,用于开发和调试 API 接口。
基本功能:
- 发送请求: 支持 GET、POST、PUT、DELETE 等多种 HTTP 请求方法。
- 测试脚本: 可以编写测试脚本来验证 API 的响应。
- 环境变量: 支持环境变量的设置,方便在不同环境中测试 API。
- 集合管理: 可以将多个 API 请求组织成集合,方便管理和运行。
- 自动化测试: 支持将测试集合导出为 JSON 格式,并与 CI/CD 管道集成,实现自动化测试。
2. JMeter
用途:
JMeter 是一个开源的性能测试工具,主要用于负载测试和性能测量。
基本功能:
- 负载测试: 模拟多个用户同时访问系统,测量系统的性能表现。
- 协议支持: 支持 HTTP、HTTPS、FTP、SOAP、JDBC 等多种协议的测试。
- 问:HTTP、HTTPS有什么区别?
- 分布式测试: 可以通过配置多台机器进行分布式测试,模拟大规模用户访问。
- 结果分析: 提供详细的测试报告和图表,帮助分析系统性能瓶颈。
- 可扩展性: 支持插件扩展,用户可以编写自己的测试组件。
3. Selenium
用途:
Selenium 是一个用于自动化 Web 应用测试的工具,可以模拟用户在浏览器上的操作。
基本功能:
- 跨浏览器测试: 支持在多种浏览器(如 Chrome、Firefox、Safari 等)上运行测试。
- 脚本编写: 支持多种编程语言(如 Java、Python、C# 等)编写测试脚本。
- 元素定位: 提供多种方式定位页面元素,如 ID、Name、XPath、CSS 选择器等。
- 动作模拟: 可以模拟用户的各种操作,如点击、输入、拖拽、下拉等。
- 测试框架集成: 可以与多种测试框架(如 JUnit、TestNG 等)集成,支持测试用例的组织和执行。
4. Fiddler
用途:
Fiddler 是一个 Web 调试代理工具,用于捕获和分析 HTTP/HTTPS 流量。
基本功能:
- 捕获流量: 能够捕获所有通过本机的 HTTP 和 HTTPS 流量,便于调试和分析。
- 请求修改: 可以修改请求和响应,模拟不同的情况进行测试。
- 性能分析: 提供详细的请求时间和响应时间分析,帮助优化性能。
- 过滤器: 支持设置过滤器,只捕获特定的流量,便于集中分析。
- 脚本扩展: 支持编写脚本来定制 Fiddler 的功能和行为。
覆盖率
覆盖率是衡量测试用例对代码覆盖程度的指标。常见的覆盖率类型包括:
语句覆盖率(Statement Coverage):测试用例执行的代码语句占总语句的比例。
分支覆盖率(Branch Coverage):测试用例执行的条件分支(如if-else)占总分支的比例。
条件覆盖率(Condition Coverage):测试用例执行的布尔表达式中的每个条件的比例。
路径覆盖率(Path Coverage):测试用例执行的所有可能路径的比例。
异常测试
异常测试旨在验证系统在异常情况下的行为。通过构造异常的特殊情况,可以确保系统在各种异常情况下都能正确处理。以下是一些常见的方法来构造异常情况并进行测试:
构造异常的特殊情况
无效输入:输入非法值,如空值、负数、超出范围的值等。
边界值:测试输入的边界情况,如最大值、最小值、刚好在范围内和刚好超出范围的值。
异常操作:执行可能导致异常的操作,如除以零、访问空指针、超出数组边界等。
资源不足:模拟资源不足的情况,如内存不足、磁盘空间不足、网络中断等。
等价类划分
等价类划分将输入域分为若干类,每个类代表一组具有相似性质的输入值。测试时只需从每个等价类中选择一个代表值进行测试。
判定表
判定表是一种系统地分析和测试多条件组合的方法。通过列出所有条件和对应的结果,可以确保覆盖所有可能的情况。
状态码
1xx 信息响应
1xx 状态码表示临时响应,需要请求者继续执行操作才能完成请求。
100 Continue:请求者应继续进行请求。服务器已收到请求的初始部分。
101 Switching Protocols:请求者已要求服务器切换协议,服务器已确认并进行切换。
2xx 成功响应
2xx 状态码表示请求已成功被服务器接收、理解并处理。
200 OK:请求成功。一般用于 GET 和 POST 请求。
201 Created:请求成功并且服务器创建了新的资源。通常用于 POST 请求。
202 Accepted:服务器已接受请求,但尚未处理。请求可能会被处理,也可能不会。
204 No Content:服务器成功处理了请求,但没有返回任何内容。常用于DELETE请求。
3xx 重定向响应
3xx 状态码表示客户端需要采取进一步操作才能完成请求。通常用于重定向。
301 Moved Permanently:请求的资源已被永久移动到新的 URL。响应会包含新的 URL。
302 Found:请求的资源临时被移动到新的 URL。客户端应使用新的 URL 进行暂时性的请求。
304 Not Modified:请求的资源未修改,可以使用缓存的版本。
4xx 客户端错误
4xx 状态码表示请求错误,客户端需修改请求内容。
400 Bad Request:服务器无法理解请求的格式。客户端应修改请求内容后再尝试。
401 Unauthorized:请求未经授权。客户端需提供有效的身份验证凭据。
403 Forbidden:服务器拒绝请求。即使有身份验证,客户端也无权访问该资源。
404 Not Found:请求的资源在服务器上不存在。
405 Method Not Allowed:请求方法不被允许。服务器支持的请求方法会在 Allow 头信息中给出。
5xx 服务器错误
5xx 状态码表示服务器在处理请求时遇到内部错误。客户端无法完成请求。
500 Internal Server Error:服务器遇到未知错误,无法完成请求。
501 Not Implemented:服务器不支持请求的方法。
502 Bad Gateway:服务器作为网关或代理时收到无效响应。
503 Service Unavailable:服务器当前无法处理请求。通常是临时状态。
504 Gateway Timeout:服务器作为网关或代理时没有及时从上游服务器接收到响应。
用例怎么写,测试计划怎么制定,测试在生命周期中扮演的角色,代码覆盖率,单元测试,自动化,测试框架
fiddler,selenium,pytest,接口自动化
fiddler使用教程
http://t.csdnimg.cn/bGHug
场景题:
功能测试、性能测试、兼容性测试、界面测试、安全性测试
微信发红包
- 功能测试:确保红包发送、接收、打开等基本功能正常运作,包括单个红包发送、群发红包等情况。
- 兼容性测试:测试在不同版本的微信客户端、不同操作系统(如iOS和Android)以及不同设备上的红包功能表现。
- 安全性测试:确保红包系统的安全性,包括支付安全、数据加密、防止恶意攻击等方面。
- 性能测试:测试红包系统在高负载情况下的性能表现,包括发送红包的响应时间、服务器负载等。
- 用户体验测试:测试用户在发送和接收红包时的体验,包括界面友好性、操作流畅性等。
- 异常情况测试:测试在网络异常、服务器故障等情况下的红包功能表现,确保系统能够正常处理异常情况并给出合适的提示。
- 国际化测试:如果红包功能面向全球用户,需要测试不同地区、不同语言环境下的使用情况,确保功能能够适应不同文化背景。
- 社交功能测试:测试红包功能与微信的其他社交功能(如朋友圈、群聊等)的集成情况,确保红包能够顺利与其他功能互动。
淘宝购物
https://www.nowcoder.com/discuss/623458913320529920?sourceSSR=users
登录
抖音发礼物
思维题
为什么选择测试?
答案:我大学期间就对软件很感兴趣,并且也了解到软件测试是一个非常细致的工作,我自己本身也是一个很细致的人,就专门自学了软件测试相关的一些知识,从校招开始就开始从事软件测试的相关工作。
答案:从很早我就对自己的思维各方面有些研究,我发现我个人思维的严谨性远大于我思维的逻辑性,后来也了解到软件测试是一个需要高度并且严谨的工作,自己也在网上看了相关资料,进行学习,大学期间也找到对应的公司进行实习,锻炼了我相关的测试技能。
通俗回答:我感觉我很喜欢找到bug的感觉,一个项目模块给我,我稍微有点强迫症,我肯定会事无巨细的测试一下,完全测试没事我才放心,我非常喜欢使用各种工具的感觉,我大一的时候就是用fidder进行抓包,并且成功。
http://t.csdnimg.cn/HAkmH
软件测试流程及生命周期模型
http://t.csdnimg.cn/fX4n5
软件测试流程是什么?
http://t.csdnimg.cn/Ye2H0
测试用例?
http://t.csdnimg.cn/o47gg
讲一下最近做的项目
最近对一个聊天室的项目进行了测试,主要是对其登录,注册,发消息,语音通话功能进行的测试。
使用了Jmeter工具进行测试,发现了几个小bug。
bug1:用户直接关闭网页端,再次登陆的时候显示已经登录。
bug2:发消息的时候,发消息会出现问题,比如发链接的时候,会出现a标签
bug3:语音通话的时候,不稳定
开发说你的bug不是bug时,你怎么处理?
http://t.csdnimg.cn/K2rC6
你印象最深的bug是什么?
是一个关于登录的bug,
给你一个功能你会测试哪些点?
功能方面,兼容性方面,性能方面,安全方面
接口测试如何做的?
bug定位有哪些方法?
http://t.csdnimg.cn/J1s1M
如何区分前后端的bug?
http://t.csdnimg.cn/BEvMv
linux常用命令有哪些?
数据库中的增删改查?
如何进行sql优化?
建立索引
避免使用select *.
控制索引数量,单表不超过5个。
为什么不做开发,来干测试?
答:自己能力比较综合,喜欢使用小工具,找到bug很有成就感。
你有什么优势?
- 抗压能力强
- 沟通能力好
- 学习能力好
- 结合自己学校经验
工作流程类:
给你一个功能,设计一下测试用例。
1.测试功能点
2.等价类划分
3.边界值
4.兼容性测试
sql题
一个table,字段部门(part)、员工(Person)、薪资(salary),求平均薪资高于8000的部门
select part
from table
group by part
where avg(salary) >= 8000;
linux
找文本里面的某个字符串的行数 Linux
grep -n “your_string” filename.txt
Linux 常用命令
top,cd ,cp,mv,ls,ll,chmod,mkdir,pwd,tree,cat,more,less,grep
ceshi
测试流程
http://t.csdnimg.cn/Ye2H0
测试用例
http://t.csdnimg.cn/o47gg
登录测试
http://t.csdnimg.cn/nuDF5