软件测试高频面试题
以下是一些软件测试高频面试题:
基础概念类
-
HTTP和HTTPS的区别:HTTPS使用SSL/TLS协议对传输数据加密,HTTP没有加密;HTTPS可确保数据完整性,防止传输中被篡改,HTTP不保证;HTTP默认用80端口,HTTPS默认用443端口;HTTPS加密解密操作使其性能可能略低于HTTP,但差距已很小。
-
TCP和UDP的区别:TCP面向连接,提供可靠服务,有流量、拥塞控制,无重复、丢失、差错,面向字节流,只能点对点,首部20字节,全双工;UDP无连接,尽最大努力交付,无拥塞控制,面向报文,支持一对一、一对多、多对多,首部8字节。
-
- 软件测试的目的是什么:主要目的是发现软件中的缺陷和错误,确保软件的质量和可靠性,验证软件是否满足用户需求和业务规则,同时为软件的发布和使用提供质量依据。
-
黑盒测试和白盒测试的区别:黑盒测试不考虑程序内部结构和逻辑,仅依据需求规格说明书,检查软件功能是否符合要求,关注输入输出;白盒测试则基于程序内部逻辑结构,对代码进行检查和测试,如语句覆盖、分支覆盖等。
测试分析类
-
开发说不是bug时你怎么处理:首先与开发人员友好沟通,详细了解其认为不是bug的原因,从需求文档、用户场景等角度说明自己认为是bug的依据;若沟通无法达成一致,可邀请产品经理、测试经理等相关人员进行讨论,以需求和业务规则为标准来判定;若仍有争议,可记录下来,向上级汇报,寻求更高层的决策。
-
如何区分前后端bug:可从现象初步判断,界面显示问题如页面布局错乱、按钮无法点击等可能是前端问题;数据处理、业务逻辑执行错误如数据保存失败、计算结果错误等可能是后端问题。还可通过抓包工具查看请求和响应数据,若请求发送正确但响应错误,可能是后端问题;若请求未正确发送或前端对响应数据处理有误,可能是前端问题。
工具操作类
-
Linux常用命令有哪些:文件操作命令如 ls (列出目录内容)、 cd (切换目录)、 mkdir (创建目录)、 rm (删除文件或目录);文本处理命令如 cat (查看文件内容)、 grep (在文件中搜索指定字符串)、 sed (文本处理和替换);进程管理命令如 ps (查看进程)、 top (实时查看系统进程状态)、 kill (终止进程)。
-
使用Jmeter进行性能测试的基本步骤:创建测试计划,添加线程组设置并发用户数、循环次数等;添加HTTP请求,设置请求的URL、方法、参数等;添加监听器,如聚合报告、图形结果等,用于查看测试结果;配置完成后,启动测试,查看监听器中的性能指标数据,如响应时间、吞吐量、错误率等。
项目经验类
-
讲一下你最近做的一个项目:阐述项目的背景、目标和主要功能;说明自己在项目中承担的角色和负责的工作,如测试用例设计、执行、缺陷跟踪等;分享项目中遇到的问题及解决方法,以及项目的成果和自己的收获。
-
项目迭代情况,交付质量,遇到的问题,以及候选人如何解决这些问题:介绍项目的迭代周期和频率,说明交付的产品是否满足质量要求,有无重大缺陷;举例说明遇到的问题,如测试环境不稳定、需求频繁变更等,阐述采取的解决措施,如与运维人员协作解决环境问题、与产品经理沟通控制需求变更等。
测试用例设计类
-
如何对一个登录功能设计测试用例:从正常登录、异常登录两方面考虑。正常登录包括输入正确用户名和密码登录;异常登录有用户名或密码为空、用户名不存在、密码错误、输入超长字符等情况。
-
给一个三角形判断程序设计测试用例:可采用等价类划分和边界值分析。如输入三边为正整数且能构成三角形、不能构成三角形的情况,以及边界值如输入0、负数、非数字字符等。
工具使用类
-
请简述Jmeter的作用和基本使用步骤:Jmeter用于性能测试等,可模拟大量用户并发访问。基本步骤包括创建测试计划,添加线程组设置并发用户数等,添加HTTP请求设置访问地址和参数,添加监听器查看测试结果。
-
Selenium主要用于什么测试?有哪些常用的定位元素方法:Selenium主要用于Web自动化测试。常用定位元素方法有id、name、class name、tag name、link text、partial link text、xpath、css selector等。
项目经验类
- 在过往项目中,你遇到过最难发现的缺陷是什么?是如何解决的:可举例如兼容性问题,在特定浏览器和分辨率下页面显示异常。通过逐步排查代码、检查样式表,与开发人员协作,最终找到并解决问题。
接口测试方面
-
接口测试怎么做,如何分析数据:首先获取接口规范,设计功能用例,验证各种入参和返回值,了解接口实现逻辑以做到逻辑覆盖,还需考虑接口的并发、安全和性能问题,采用工具或自写代码验证,发现问题及时报bug并跟踪。分析数据时主要对比返回数据与接口文档预期是否一致,检查数据的完整性、准确性、合理性等,也可通过抓包工具查看请求和响应数据来分析。
-
注册账号成功,但登录失败,怎么排查:检查注册用户的数据是否成功传入数据库;调用登录接口,查看返回信息,若有报错根据报错信息分析,如密码错误、账号未激活等;检查登录接口的逻辑和代码,是否存在验证错误;查看数据库中用户表的记录,确认用户信息是否完整、正确;考虑是否存在环境问题或网络问题影响登录。
测试基础方面
-
敏捷测试流程:敏捷测试是与敏捷开发紧密结合的测试模式。一般在迭代开始前,测试人员与开发等团队成员共同参与需求梳理,明确需求和验收标准;迭代中,测试人员与开发并行工作,进行测试用例设计和执行,包括单元测试、集成测试等,及时反馈和跟踪缺陷;迭代结束时,进行测试总结和回顾,对测试过程和产品质量进行评估,为下一次迭代提供改进建议。
-
APP测试和web测试有什么区别:从环境上,APP测试需考虑不同操作系统、机型等,web测试主要考虑浏览器和操作系统兼容性。从功能上,APP有更多与手机硬件交互的测试点,如摄像头、GPS等,web测试侧重页面展示和交互。性能方面,APP对电量、流量、安装卸载时间等有要求,web测试更关注响应时间、吞吐量等。
数据库方面
-
把字段基金代码的长度扩长为8位:在MySQL中可以使用 ALTER TABLE 语句,如 ALTER TABLE 表名 MODIFY COLUMN 基金代码 VARCHAR(8);
-
统计同一销售商和网点代码下持有的总份额:假设表名为 fund_table ,字段为 seller_id (销售商ID)、 branch_code (网点代码)、 share_amount (份额),可以使用 SELECT seller_id, branch_code, SUM(share_amount) AS total_share FROM fund_table GROUP BY seller_id, branch_code;
性能测试方面
-
LoadRunner分哪三部分:用户动作设计、场景设计、测试数据分析。
-
LoadRunner进行测试的流程:首先进行测试规划,明确测试目标和场景;然后创建虚拟用户脚本,模拟用户操作;接着创建运行场景,设置并发用户数、执行时间等参数;再运行测试脚本,监控场景执行情况;最后分析测试结果,查看响应时间、吞吐量、资源利用率等指标,评估系统性能。