任何复杂度达到一定程度的代码库都需要有配套的测试系统,以确保在添加新代码时,代码库能继续正确且高效地运行,并持续满足用户的需求。本模块列出了您应该开始学习的基础知识。
6. 测试
最佳实践
扩展模块
6.1 通用测试基础
学习成果
-
理解测试的总体目的
-
确保应用程序的功能能够(并持续)为目标用户群体在选定的质量水平上正常运行。
-
确保代码和功能符合选定的质量标准,并符合既定的符合性标准、基准或指南。
-
-
常见测试类型的目的
-
功能测试(与单元测试相关):检查 Web 应用程序的功能是否按预期工作,例如用户交互、表单、导航、链接和其他核心功能。
-
可用性测试:评估 Web 应用程序的用户友好性。这包括评估用户导航应用程序、完成任务和实现目标的难易程度。
-
兼容性测试(又称跨浏览器测试):确保 Web 应用程序在不同的浏览器、操作系统和设备上都能正常运行。
-
性能测试:衡量 Web 应用程序在不同负载下的响应速度、速度、可伸缩性和稳定性(另请参阅 扩展 4:性能)。
-
安全测试:识别 Web 应用程序安全机制中的漏洞和弱点(另请参阅 扩展 5 安全与隐私)。
-
可访问性测试:确保残障人士可以使用 Web 应用程序,符合可访问性指南,例如 Web 内容可访问性指南(另请参阅 可访问性)。
-
6.2 功能和兼容性测试
学习成果
-
理解这两者密切相关——您希望您的 Web 应用程序功能能够在各种目标浏览器/设备上为目标用户群体正常运行。此外,可以使用可用工具在很大程度上自动化此类测试。
-
一些可访问性测试可以自动化,例如,“图像是否都有 alt 文本?”。
-
执行自动化测试的典型流程
-
确定目标用户群体是谁,以及他们正在使用哪些浏览器。
-
确定应测试的功能项。这些可以从视觉(“布局看起来是否应该这样?”)到面向用户的函数(“搜索框是否返回结果?”)再到更低级别的代码(“函数
x()是否返回预期结果?”)不等。 -
一些测试还将测试集成模块是否与其他代码库部分正常工作(集成测试)。
-
使用合适的工具集编写测试来测试这些功能。
-
定期运行测试(例如,每次提交到仓库后)以查看是否有测试失败。
-
记录测试结果。
-
修复代码并重新运行测试以确保它们通过,并确保代码更新没有引入新的错误(回归测试)。
-
-
了解用于运行自动化测试的典型工具集
-
结合使用物理设备和虚拟机(如 VirtualBox)来提供不同的浏览器和设备组合。
-
使用 Selenium/WebDriver 在已安装的浏览器上运行特定测试并返回结果,从而在浏览器出现故障时及时通知您。可以使用 webdriver.io 和 nightwatch.js 等包通过 Node.js 代码控制 WebDriver(也存在其他平台集成)。
-
Playwright 是一个流行的替代方案。
-
使用基于云的服务进行跨浏览器自动化功能测试,例如 LambdaTest、Sauce Labs、BrowserStack 或 TestingBot。其中大多数服务都提供 API,允许您从 Node.js 等平台运行测试。
-
-
了解如何使用持续集成 (CI) 工具将测试集成到 GitHub
资源
6.3 可用性测试
学习成果
-
理解可用性测试与功能测试的区别——功能测试在很大程度上可以自动化(主要检查代码是否返回预期结果),而可用性测试通常需要与真实测试对象进行手动测试(例如,“页面是否允许我找到最重要的功能,并且使用起来是否直观?”)。
-
作为可用性测试的一部分,应进行一些可访问性测试——例如,您可能可以通过 Tab 键访问表单元素进行填写,但对于辅助技术用户来说,该表单是否有意义?他们能否了解它要求提供什么信息?
-
可用性测试的典型流程
-
确定要测试的应用程序功能方面(可以是假设或您想测试的问题陈述),以及最适合测试它们的目标用户群体。
-
招募一些测试对象进行测试。5-10 次成功的会话足以开始识别重复出现的可用性问题。
-
为测试对象编写脚本,让他们按照脚本测试功能(例如,“导航到产品页面,搜索一个组件,然后将其添加到购物车”)。
-
与测试对象一起运行可用性测试并记录会话。
-
分析会话,并确定需要进行的改进。
-
进行改进。
-
衡量改进是否解决了问题(例如,通过查看关键指标的变化,或通过与新一批测试对象重新运行可用性测试)。
-
-
运行可用性测试的典型工具集
-
需要清晰的指示:向测试对象解释测试的目的。指导他们在执行任务时“出声思考”。观察他们的互动,并记录他们遇到的任何问题或困难。鼓励参与者提供诚实的反馈。
-
视频会议软件,如 Zoom,它包含屏幕共享功能,以便您观察测试对象正在做什么,并能够录制会话以便以后回顾。
-
眼动追踪软件可能很有用,它可以让您看到用户在尝试遵循脚本时在网站上关注的地方。
-
资源
- 可用性测试 101,nngroup.com (2019)