6. 测试

最佳实践

扩展模块

任何复杂度达到一定程度的代码库都需要有配套的测试系统,以确保在添加新代码时,代码库能继续正确且高效地运行,并持续满足用户的需求。本模块列出了您应该开始学习的基础知识。

6.1 通用测试基础

学习成果

  • 理解测试的总体目的

    • 确保应用程序的功能能够(并持续)为目标用户群体在选定的质量水平上正常运行。

    • 确保代码和功能符合选定的质量标准,并符合既定的符合性标准、基准或指南。

  • 常见测试类型的目的

    • 功能测试(与单元测试相关):检查 Web 应用程序的功能是否按预期工作,例如用户交互、表单、导航、链接和其他核心功能。

    • 可用性测试:评估 Web 应用程序的用户友好性。这包括评估用户导航应用程序、完成任务和实现目标的难易程度。

    • 兼容性测试(又称跨浏览器测试):确保 Web 应用程序在不同的浏览器、操作系统和设备上都能正常运行。

    • 性能测试:衡量 Web 应用程序在不同负载下的响应速度、速度、可伸缩性和稳定性(另请参阅 扩展 4:性能)。

    • 安全测试:识别 Web 应用程序安全机制中的漏洞和弱点(另请参阅 扩展 5 安全与隐私)。

    • 可访问性测试:确保残障人士可以使用 Web 应用程序,符合可访问性指南,例如 Web 内容可访问性指南(另请参阅 可访问性)。

6.2 功能和兼容性测试

学习成果

  • 理解这两者密切相关——您希望您的 Web 应用程序功能能够在各种目标浏览器/设备上为目标用户群体正常运行。此外,可以使用可用工具在很大程度上自动化此类测试。

  • 一些可访问性测试可以自动化,例如,“图像是否都有 alt 文本?”。

  • 执行自动化测试的典型流程

    • 确定目标用户群体是谁,以及他们正在使用哪些浏览器。

    • 确定应测试的功能项。这些可以从视觉(“布局看起来是否应该这样?”)到面向用户的函数(“搜索框是否返回结果?”)再到更低级别的代码(“函数 x() 是否返回预期结果?”)不等。

    • 一些测试还将测试集成模块是否与其他代码库部分正常工作(集成测试)。

    • 使用合适的工具集编写测试来测试这些功能。

    • 定期运行测试(例如,每次提交到仓库后)以查看是否有测试失败。

    • 记录测试结果。

    • 修复代码并重新运行测试以确保它们通过,并确保代码更新没有引入新的错误(回归测试)。

  • 了解用于运行自动化测试的典型工具集

    • 结合使用物理设备和虚拟机(如 VirtualBox)来提供不同的浏览器和设备组合。

    • 使用 Selenium/WebDriver 在已安装的浏览器上运行特定测试并返回结果,从而在浏览器出现故障时及时通知您。可以使用 webdriver.ionightwatch.js 等包通过 Node.js 代码控制 WebDriver(也存在其他平台集成)。

    • Playwright 是一个流行的替代方案。

    • 使用 JestMocha 等库,直接在代码库中编写自己的功能测试。

    • 使用基于云的服务进行跨浏览器自动化功能测试,例如 LambdaTestSauce LabsBrowserStackTestingBot。其中大多数服务都提供 API,允许您从 Node.js 等平台运行测试。

  • 了解如何使用持续集成 (CI) 工具将测试集成到 GitHub

    • 了解其实用性——您可以设置一个系统,在每次提交代码更改时自动运行测试套件。

    • 使用 CircleCITravis CI 等工具来实现这一点。

资源

6.3 可用性测试

学习成果

  • 理解可用性测试与功能测试的区别——功能测试在很大程度上可以自动化(主要检查代码是否返回预期结果),而可用性测试通常需要与真实测试对象进行手动测试(例如,“页面是否允许我找到最重要的功能,并且使用起来是否直观?”)。

  • 作为可用性测试的一部分,应进行一些可访问性测试——例如,您可能可以通过 Tab 键访问表单元素进行填写,但对于辅助技术用户来说,该表单是否有意义?他们能否了解它要求提供什么信息?

  • 可用性测试的典型流程

    • 确定要测试的应用程序功能方面(可以是假设或您想测试的问题陈述),以及最适合测试它们的目标用户群体。

    • 招募一些测试对象进行测试。5-10 次成功的会话足以开始识别重复出现的可用性问题。

    • 为测试对象编写脚本,让他们按照脚本测试功能(例如,“导航到产品页面,搜索一个组件,然后将其添加到购物车”)。

    • 与测试对象一起运行可用性测试并记录会话。

    • 分析会话,并确定需要进行的改进。

    • 进行改进。

    • 衡量改进是否解决了问题(例如,通过查看关键指标的变化,或通过与新一批测试对象重新运行可用性测试)。

  • 运行可用性测试的典型工具集

    • 需要清晰的指示:向测试对象解释测试的目的。指导他们在执行任务时“出声思考”。观察他们的互动,并记录他们遇到的任何问题或困难。鼓励参与者提供诚实的反馈。

    • 视频会议软件,如 Zoom,它包含屏幕共享功能,以便您观察测试对象正在做什么,并能够录制会话以便以后回顾。

    • 眼动追踪软件可能很有用,它可以让您看到用户在尝试遵循脚本时在网站上关注的地方。

资源

上一篇:5. 安全与隐私 下一篇:7. JavaScript 框架