手动测试教程

✨ 主要收获:手动测试仍然是现代软件质量保证的重要组成部分,提供超越自动化的关键洞察。其灵活性和人类直觉能及早发现复杂错误,确保可靠的用户体验和更高的客户满意度。

Manual Testing

什么是手动测试?

手动测试是一种软件测试过程,测试人员在其中不使用自动化工具执行测试用例。相反,测试人员手动执行操作——例如点击按钮、输入数据或通过工作流导航——以验证软件是否按照指定要求运行。

手动测试的主要目的是确保应用程序在发布前无错误、稳定且用户友好。与依赖脚本和工具的自动化不同,手动测试利用人类的直觉、创造力和观察力,使其在检测可用性问题和意外缺陷方面特别有效。

快速事实

  • 手动测试在各个层面进行——单元测试、集成测试、系统测试和验收测试
  • 它通常用于探索性测试、即席测试和 UI/UX 验证,在这些场景中,人类判断至关重要。
  • 不需要编程知识,使初级测试人员也能接触。
  • 每个应用程序在应用自动化之前都必须经过一定程度的手动测试。

简而言之,手动测试是质量保证的基础,确保从最终用户视角验证功能和非功能需求。

根据2025年测试现状™报告显示,人工智能正在重塑质量保证,46%的受访者认为提高了自动化效率,35%提高了测试数据生成,27%减少了对手动测试的依赖,尽管46%的团队仍报告在测试中未使用人工智能。

软件测试基本原理之一是“100%自动化是不可能的”。这使得手动测试变得不可或缺。

手动测试概念视频

如果视频无法访问,请点击此处

为什么手动测试很重要?

尽管测试自动化日益普及,手动测试仍然至关重要。它的价值在于评估用户体验并发现不明显的错误。IBM系统科学研究所的一项研究发现,在实施阶段发现的错误修复成本是设计阶段发现的错误的6倍。通过手动探索及早发现这些问题是具有成本效益的。

  • 用户体验 (UX) 验证:自动化工具可以检查按钮是否可点击,但只有人才能判断它是否直观、美观或提供足够的反馈。超过70%的项目将“用户体验”列为手动测试的主要原因。
  • 探索性测试和即席测试:这种非脚本化测试依赖于测试人员的技能和创造力来发现脚本化测试会遗漏的边缘缺陷。
  • 短期项目的成本效益:对于生命周期短或UI频繁变化的项目,编写和维护自动化脚本的投入可能大于其提供的价值。手动测试提供了一种灵活且即时的解决方案。

👉 免费报名实时手动测试项目

手动测试的主要目标

Manual Testing

手动测试的主要目标是确保软件应用程序按照指定要求运行并提供无缝的用户体验。与自动化不同,手动测试强调人工观察,使测试人员能够发现工具可能忽略的可用性问题、界面缺陷和逻辑错误。

主要目标包括

  1. 错误识别 – 在发布前检测功能、逻辑或设计缺陷。
  2. 需求验证 – 验证应用程序是否满足功能和非功能规范。
  3. 用户体验保证 – 从最终用户角度进行测试,确认工作流直观且无错误。
  4. 回归信心 – 重新测试已修复的缺陷,以确保新更改不会破坏现有功能。
  5. 质量交付 – 向客户交付稳定、可靠且无错误的产品。

最终,手动测试旨在平衡质量、可靠性和可用性,确保软件已准备好投入生产并符合业务目标。

手动测试的特点

手动测试由几个关键特征定义,这些特征突出了其在软件开发生命周期中的重要性。与自动化测试不同,手动测试依赖于人类的直觉、适应性和批判性思维,使其在用户体验和探索性测试至关重要的领域特别有效。

  1. 以人为本的方法 – 手动测试人员亲自执行测试用例,模拟真实的最终用户行为。这确保了可用性、导航和设计缺陷能够及早被发现。
  2. 探索性 – 测试人员可以超越预定义的测试用例,探索意外的工作流,以发现隐藏的缺陷。这种灵活性对于捕获自动化可能遗漏的边缘情况至关重要。
  3. 适应性 – 手动测试允许测试人员快速适应不断变化的需求,尤其是在功能快速演变的敏捷环境中。
  4. 耗时 – 由于人类逐步执行测试,此过程比自动化慢,并且对于大型测试套件来说可能会变得重复。
  5. 易出错但富有洞察力 – 虽然可能会出现人为错误,但手动测试通常能更深入地了解产品的可用性和整体客户体验。

这些特性使得手动测试成为自动化的重要补充,尤其适用于需要人工判断的 UI 验证、即席测试和以用户为中心的质量检查

手动测试的不同类型是什么?

Types of Manual Testing
手动测试概念

手动测试包括几种不同的类型,每种类型在软件质量保证中都有其独特的用途。

以下是主要的手动测试类型

黑盒测试

黑盒测试是手动测试最常见的形式,测试人员在不了解内部代码或结构的情况下验证软件。重点完全放在输入和输出上——如果应用程序行为符合预期,则测试通过;否则,则失败。

黑盒测试的主要特点

  • 基于需求从规范或用户故事进行验证。
  • 专注于最终用户视角而非代码。
  • 常用于功能测试,如登录、结账或表单提交。
  • 适用于验收测试、回归测试和系统测试

由于测试人员不需要编程知识,黑盒测试广泛应用于验收测试、回归测试和系统测试,使其成为每个质量保证策略的关键部分。

白盒测试

白盒测试,也称为透明盒测试玻璃盒测试,侧重于软件的内部结构和逻辑。与将应用程序视为“黑盒”且不了解其代码的黑盒测试不同,白盒测试需要访问源代码、算法和设计细节

白盒测试的主要特点

  • 通过测试所有路径、循环和条件来确保代码覆盖率
  • 使用数据流测试来跟踪变量的初始化和使用情况。
  • 有助于路径和循环验证,以防止逻辑缺陷或无限循环。
  • 常应用于单元测试和安全测试
  • 需要扎实的编程和技术知识

由于需要编程知识,白盒测试通常由开发人员或技术精湛的测试人员执行,因此非常适合单元测试和安全审计

灰盒测试

灰盒测试是一种混合方法,结合了黑盒测试和白盒测试的优点。在此方法中,测试人员对系统的内部结构有部分了解(例如数据库模式、设计文档或架构细节),但他们仍然主要从用户视角执行测试。

灰盒测试的主要特点

  • 平衡功能测试和结构测试
  • 用于集成测试以验证模块之间的交互。
  • 有助于识别黑盒测试中不可见的数据流问题和隐藏缺陷。
  • 在不需要完全访问源代码的情况下增强测试覆盖率
  • 适用于安全测试、API 验证和工作流测试

灰盒测试在Web应用程序、API验证和系统集成测试中特别有用,在这些情况下,了解内部逻辑有助于发现隐藏缺陷,而无需完全访问代码级别。

其他手动测试类型

单元测试

手动测试中的单元测试侧重于单独验证单个组件、方法或小段代码单元。通过提供输入并仔细审查结果来测试每个单元的正确性。开发人员或测试人员在集成之前手动验证结果。虽然自动化在此处很常见,但手动单元测试仍然应用于初始构建、原型或快速调试活动。

系统测试

手动测试中的系统测试检查整个集成应用程序。测试人员模拟真实世界用户行为,以确认所有组合模块无缝协作。此测试确保可用性、性能和业务逻辑的正确性。手动系统测试对于发现集成副作用并验证软件是否完全按照要求提供功能至关重要。

集成测试

手动测试中的集成测试验证多个模块或系统之间的交互。测试人员手动跨接口传递数据,监控工作流,并确保组件之间准确通信。此过程有助于发现不匹配、不兼容的格式或损坏的数据流。当 API、第三方服务或数据库连接需要在受控测试周期中进行验证时,手动集成测试非常有用。

验收测试

手动测试中的验收测试确认整个应用程序是否符合业务期望和客户要求。最终用户、利益相关者或测试人员在产品发布前验证真实场景,如工作流、可用性和可靠性。类型包括 Alpha 测试(内部)和 Beta 测试(外部)。手动验收确保产品提供令人满意的体验并已准备好实际市场使用。

强烈推荐您阅读: 探索手动测试面试问题

如何进行手动测试

结构化流程是有效手动测试的关键。它为全面的覆盖和可重复性提供了框架。下面,我提供了执行手动测试的关键步骤

步骤 1) 需求分析:测试人员审查需求文档、用例和用户故事,以充分理解系统的预期行为。在此阶段,与业务分析师或开发人员澄清任何歧义。

步骤 2) 测试计划创建:此文档通常称为测试策略,概述了测试的范围、目标、资源、时间表和总体方法。它充当整个测试工作的蓝图。

步骤 3) 测试用例开发:测试人员编写详细、逐步的测试用例,其中包含明确的先决条件、测试数据、执行步骤和预期结果。这些用例旨在验证所有需求。

步骤 4) 测试环境设置:配置一个模拟生产的专用预生产环境。这包括设置服务器、数据库和测试数据,以确保准确和隔离的测试。

步骤 5) 测试执行和缺陷报告:测试人员执行设计的测试用例。实际结果与预期结果之间的任何差异都将作为缺陷记录在 Jira 等跟踪工具中。一份好的缺陷报告应清晰、简洁且可重现。

步骤 6) 最终报告和分析:在测试周期结束后,会生成一份测试摘要报告。它向利益相关者提供测试覆盖率、通过/失败率和缺陷密度等指标,清晰地展示软件质量。

手动测试示例

为了解手动测试的实际操作,让我们看一个真实的电子商务网站结账流程

测试场景:用户注册和结账

1. 测试规划 – 定义目标:确保用户可以注册、将产品添加到购物车并完成购买。

2. 测试用例设计 – 创建详细的测试用例,例如:

  • 有效注册:用正确数据填写所有必填字段。
  • 无效注册:留空字段或输入无效电子邮件。
  • 结账:添加多个商品,应用优惠券,并完成付款。

3. 测试执行 – 测试人员在网站上手动执行每个步骤。例如,点击“下单”后,预期结果是订单确认页面和电子邮件通知。

4. 缺陷报告 – 如果支付网关未能重定向或缺少确认电子邮件,则会记录缺陷并附上屏幕截图。

5. 重新测试和关闭 – 开发人员修复问题后,重新执行失败的用例以验证解决方案。

此示例为何重要

这个简单的案例研究表明,手动测试超越了脚本检查。通过模拟真实用户行为,测试人员不仅验证功能,还验证可用性和客户体验,这对于业务成功至关重要。

手动测试案例研究

  1. 案例研究:视频游戏用户界面
  2. 一家游戏工作室自动化了性能测试,但仍依赖手动测试人员评估游戏玩法和用户界面。测试人员报告称菜单导航令人困惑,影响了玩家满意度。

    ➡️ 经验:手动测试对于游戏等主观、体验驱动的产品至关重要。

  3. 案例研究:医院管理系统
  4. 一家医院实施了新的患者管理系统。自动化检查了后端数据处理,但手动测试人员模拟了真实的医院工作流程(护士注册患者,医生更新记录)。他们发现了表单导航和错误消息中的关键问题,这些问题可能会延误紧急护理。

    ➡️ 经验:手动测试对于安全关键系统至关重要。

手动测试的误区

当您被一些顽固的误解包围时,很容易忽略手动测试的价值。让我们来看看一些关于手动测试最常见的误解和事实

误区:手动测试已过时,自动化后不需要

事实:手动测试通过覆盖用户体验和探索性测试来补充自动化。

误区:手动测试比自动化快

事实:自动化执行重复性测试更快;手动测试需要熟练的人工时间。

误区:手动测试可靠性较低

事实:专业手动测试人员提供机器无法提供的上下文、细致的反馈。

误区:手动测试不需要规划

事实:结构化的测试规划对于有效性至关重要。

手动测试的挑战

虽然手动测试对于验证可用性和最终用户体验至关重要,但它也带来了一些团队必须解决的挑战

  1. 耗时 – 在没有自动化的情况下逐步执行测试用例会延迟发布,尤其是对于大型或复杂的项目。
  2. 重复性 – 回归测试等任务通常涉及重复相同的场景,这可能导致测试人员疲劳和疏忽。
  3. 人为错误 – 与自动化脚本不同,手动执行容易出错,例如忽略边缘情况或错误报告结果。
  4. 可伸缩性问题 – 随着应用程序的增长,手动实现完整的测试覆盖变得不切实际。
  5. 测试数据管理 – 维护真实和安全的测试数据很困难,尤其是在包含敏感信息的企业系统中。
  6. 环境设置 – 配置测试环境以模拟生产环境可能资源密集且容易出错。
  7. 资源依赖性 – 手动测试严重依赖测试人员的专业知识;技能水平不一致会影响可靠性。

认识到这些障碍有助于质量保证团队更明智地规划——通过平衡手动和自动化测试,使用基于风险的优先级排序,并投资于更好的测试管理实践。及早解决挑战可确保更快的交付,同时不影响质量。

手动测试与自动化测试

手动测试确保可用性和人类洞察力,而自动化提供速度和可伸缩性。混合策略——将手动用于探索性任务,将自动化用于重复场景——可提供最有效和最可靠的测试结果。请看下表,了解手动测试与自动化测试的不同之处

手动测试 自动化测试
执行 – 测试人员逐步运行测试用例,模拟真实用户行为。 执行 – 使用工具和脚本自动执行测试用例。
最适合 – 探索性测试、可用性测试、即席场景以及人类直觉至关重要的用例。 最适合 – 回归测试、性能测试、负载测试以及需要重复执行的场景。
优点 – 灵活、无需编码、提供即时用户反馈,以及适用于一次性或不断变化的需求。 优点 – 执行速度更快、可重用测试脚本、更高的覆盖率和长期成本效益。
局限性 – 较慢、重复且容易出现人为错误。对于大型系统来说,实现全面覆盖可能很困难。 局限性 – 需要编程知识、前期投资较高,且对 UI/UX 验证效果较差。

自动化手动测试的工具

您可以使用工具组合来自动化手动测试过程。这些工具共同使手动测试人员能够管理测试用例、跟踪缺陷并执行基本的性能检查——弥合手动执行和企业测试管理之间的差距。

1) Selenium

Selenium 主要以自动化闻名,Selenium 也协助手动测试人员验证跨浏览器兼容性。测试人员可以使用其 IDE 记录用户交互并在创建完整的自动化套件之前验证结果。

2) QTP (Quick Test Professional / UFT)

QTP,现在称为Micro Focus UFT,是一种功能测试工具。手动测试人员通常在混合工作流中使用它,其中手动测试用例被文档化并在同一环境中进行自动化。

3) Jmeter

Apache JMeter 广泛用于性能和负载测试。手动测试人员利用它来模拟基本用户负载,识别瓶颈,并在引入自动化脚本之前验证应用程序在压力下的行为。

4) Loadrunner

LoadRunner 是一款强大的性能测试工具,可帮助测试人员通过模拟数千个用户来建模真实世界场景。通过验证可伸缩性和系统可靠性来补充手动测试。

5) TestLink

TestLink 是一款开源测试管理工具使测试人员能够设计测试用例、组织执行并跟踪结果。它确保了手动测试周期的更好覆盖率和可追溯性。

6) Quality Center(ALM)

HP ALM (应用程序生命周期管理) 集成了需求、测试规划、执行和缺陷跟踪。手动测试人员将其用作集中式枢纽来管理完整的测试生命周期。

手动测试的优点和缺点

手动测试在软件质量保证中扮演着至关重要的角色,但像任何方法一样,它既有优点也有局限性。了解这些有助于组织决定何时依赖手动执行以及何时采用自动化。

手动测试的优点

  1. 人类洞察力 – 测试人员可以检测自动化脚本经常遗漏的可用性问题、设计缺陷和整体用户体验。
  2. 灵活性 – 适应频繁的需求变更,使其成为敏捷项目的理想选择。
  3. 无需编码 – 适合初学者和非技术测试人员,尤其是在黑盒场景中。
  4. 对小型项目有效 – 与自动化工具相比,成本效益高,设置速度更快。
  5. 探索性测试 – 鼓励创造性地发现超出预定义测试用例的意外缺陷。

手动测试的缺点

  1. 耗时 – 执行重复性测试用例会减慢发布周期。
  2. 容易出现人为错误 – 疲劳和疏忽可能导致遗漏缺陷。
  3. 覆盖率有限 – 在没有自动化的情况下难以实现100%覆盖率。
  4. 不可扩展 – 对于具有频繁回归周期的复杂大型应用程序效率低下。
  5. 资源依赖性 – 质量严重依赖于测试人员的专业知识和一致性。

结论

手动测试仍然是软件质量保证的基石,尤其适用于可用性、探索性测试和即席测试,这些测试需要人工判断。尽管它比自动化慢且可扩展性差,但手动测试提供了对真实世界用户行为的关键洞察力,揭示了工具经常遗漏的问题。在现代软件开发环境中,最有效的方法是结合两种方法的混合策略——手动测试用于以用户为中心的验证,自动化用于重复性、大规模执行。这种平衡确保了更快的发布、更高的效率和更可靠的软件,持续满足客户期望。

常见问题

不能。手动测试有助于发现最关键的缺陷,但实现100%无缺陷软件是不现实的。它显著降低了风险,但无法消除所有错误。

是的。 对于短期或低预算项目,手动测试比自动化更快、更具成本效益。

不能。 100%自动化是不可能的——对于需要人类洞察力的场景,手动测试总是必需的。

是的。手动测试技能仍然很有价值,尤其是与自动化知识结合时。能够平衡这两种方法的混合型测试人员需求量很大。

是的,但是。 虽然可行,但回归测试变得重复,大规模时最好由自动化处理。

是的。 可用性和用户体验验证依赖于人类观察,因此手动测试是最佳选择。