一、软件测试基础概念相关问题

- 测试类型:面试官常常会问到各种测试类型,如功能测试、性能测试、集成测试、系统测试、验收测试、回归测试等。例如,会让你解释功能测试是对软件的功能需求进行验证,确保软件的各项功能都能正常工作,像测试一个登录功能是否能正确处理用户名和密码的输入并成功登录等。性能测试则关注软件在不同负载情况下的响应时间、吞吐量、资源利用率等性能指标,比如一个电商网站在高并发访问时的响应速度和服务器资源占用情况。集成测试侧重于检查多个模块集成在一起时是否能正确交互,比如不同模块之间的数据传递是否准确。系统测试是基于整个系统的需求进行的全面测试,包括功能、性能、兼容性等多方面。验收测试是用户或独立测试人员根据测试计划和结果对系统进行测试以决定是否接收,其中Alpha测试是用户在开发者场所受控环境下进行,Beta测试则是在用户实际环境下进行。回归测试是在软件修改后重新执行之前的测试用例,以确保修改没有引入新的问题。
- 测试目的与原则:关于软件测试的目的,需要理解它不仅仅是为了找出软件中的缺陷,更是为了确保软件的质量,提高用户满意度,降低软件运行风险等。测试原则方面,像测试应尽早介入,从软件开发生命周期的需求阶段就开始参与;测试应遵循独立性原则,测试人员应独立于开发人员进行测试工作;穷尽测试是不可能的,要根据风险和需求合理选择测试用例等。
二、测试用例设计相关问题
- 设计方法:黑盒测试和白盒测试是两大测试种类。黑盒测试中的等价类划分法、边界值分析法、因果图法和错误猜测法常常被问到。例如等价类划分法是将输入数据划分成有效等价类和无效等价类,如测试输入年龄时,18 - 60岁可能是有效等价类,小于18岁或大于60岁可能是无效等价类。边界值分析法则关注输入输出的边界情况,比如一个输入框要求输入1 - 100之间的数字,那么0、1、100、101就是边界值情况。白盒测试中的逻辑覆盖法等也可能被考查,如语句覆盖、判定覆盖等,通过设计测试用例使得程序中的语句或判定条件尽可能多地被执行到。
- 设计关键要素:做好测试用例设计工作的关键在于全面考虑各种情况。要明确输入条件,包括正常输入和异常输入,详细的操作步骤要清晰可执行,预期输出必须准确,同时还要考虑实际输出可能出现的情况。例如在测试一个搜索功能时,输入正常关键词、特殊字符、空值等不同输入的操作步骤以及对应的预期搜索结果和可能出现的实际结果偏差等。
三、测试工具使用相关问题
- 工具种类及原理:如果有性能测试相关经验,可能会被问到是否使用过诸如LoadRunner等工具。LoadRunner能够录制测试人员的操作步骤,然后模拟多个用户来执行这些操作。它主要通过Visual User Generator创建脚本,选择协议后进行操作录制和编辑;中央控制器(Controller)负责调度虚拟用户,创建场景,选择脚本,建立虚拟用户,设计调度计划,设置IP欺骗;运行脚本后分析调度计划并分析测试结果。此外,像Fiddler这样的抓包工具,用于分析网络请求和响应,在测试接口时非常有用,其原理是通过在客户端和服务器之间进行数据拦截和分析。
- 工具应用场景:以LoadRunner为例,在对一个大型电商网站进行性能测试时,可以通过录制用户登录、浏览商品、下单等操作步骤,然后模拟大量用户并发访问,查看系统在高负载下的性能表现,如响应时间是否超过规定阈值、服务器资源是否耗尽等。对于Fiddler,可以在测试接口时,查看接口请求的参数、响应的内容、状态码等,帮助定位接口是否存在问题,如请求参数错误或者响应数据不符合预期等。
四、软件缺陷管理相关问题
- 缺陷记录内容:在以往工作中,一条软件缺陷记录应包含检测时间、系统环境(包括操作系统、软件版本等)、硬件环境(如服务器配置、客户端设备等)、严重程度(如致命、严重、一般、轻微等)、程式版本、确认人、功能模板、问题描述、详细操作步骤以及是否会重现等信息。例如,在测试一个手机APP时,发现某个功能在特定手机型号(硬件环境)、特定APP版本(程式版本)下,点击某个按钮(详细操作步骤)时出现闪退(问题描述),这个问题每次操作都会出现(是否会重现),这就是一个较为完整的缺陷记录。
- 高质量缺陷记录:要提交高质量的软件缺陷记录,问题描述和详细操作步骤要尽可能详细。尽量使用书面语,对于严重程度比较高的缺陷要在相同环境下测试一遍。在C/S模式下,如果条件满足可以使用替换法来确认是client端的问题还是server端的问题。比如在测试一个客户端 - 服务器架构的软件时,如果出现登录失败的问题,可以先在相同的服务器环境下更换客户端设备测试,如果问题仍然存在,再检查服务器端的配置和日志等,以便准确地定位问题并记录缺陷。
声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。