问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

不同类型的测试和测试金字塔

创作时间:
作者:
@小白创作中心

不同类型的测试和测试金字塔

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/training/modules/visual-studio-test-concepts/4-different-types-of-testing?ns-enrollment-id=learn.visual-studio.visual-studio-test&ns-enrollment-type=learningpath&source=recommendations

在软件开发过程中,测试是确保代码质量和系统稳定性的关键环节。本文将详细介绍不同类型的软件测试以及它们在测试金字塔中的位置和作用,帮助开发者更好地理解如何通过测试提高软件质量。

不同类型的测试和测试金字塔

在过去数年中,测试金字塔作为一种常见的模型,被广泛用于说明不同类型的测试以及每种测试在软件中的常见程度。虽然测试金字塔的使用仍然存在争议,但我们可以给出一个直截了当且没有争议的解释。

测试金字塔

测试金字塔的底部由单元测试组成。单元测试通常是最易于编写的测试,在代码变更时最易于维护,并且运行速度最快。对于许多用户来说,单元测试是第一次接触的测试。金字塔越往上,测试的编写、维护和运行成本通常会越高。金字塔顶端的测试仍具有很高的价值,但这些测试的类型数量较少。例如,通常用户的单元测试比集成测试多,集成测试比 UI 测试多。

测试类型

行业一直在开发更好的方法来通过测试确保代码质量。此处列出的测试类型只是部分测试类型,但是是主要的测试类型。越来越优秀的软件做法和开发技术不断改变我们的思考和测试方式,与此同时测试金字塔本身也可能需要重写或重设。

单元测试

单元测试是最基本的测试类型,是测试金字塔的基础。单元测试应特定于一种方法或最小的可测试代码单元。一个方法可以通过一系列参数使用许多单元测试来执行它的所有功能。这些测试最易于编写,也最易于调试,因为这些测试是练习所测试代码的最简单方法。

例如,假设你使用一个方法从输入字符串中分析邮政地址。对于这个方法来说,优秀的单元测试会插入多种邮政地址,以确保该方法正确分析了这些地址,并且这些地址与预期结果相匹配。某一个单元测试可能会插入另一个国家/地区的邮政地址作为字符串。另一个单元测试可能会插入含特殊字符的字符串,以确保它不会中断分析程序。单元测试应测试一小部分的应用功能,这样,如果测试失败,可以轻松确定失败的功能。

集成测试

集成测试在测试金字塔中处于单元测试的上一层。与单元测试相比,集成测试可能涵盖多种方法或更多行为。在邮政地址示例中,集成测试可以测试邮政地址分析程序和该地址运费的计算方法。如果应用的多个部分按预期协同运作,则结合使用这两种测试有助于总结。

性能测试

性能测试通常会记录运行程序的某些部分所花费的时间。性能测试最适用于发现导致应用缓慢的代码变更。你可以在测试开始时设置测试完成时才结束计时的计时器,如果计时器超过某个阈值,则报告测试失败。

负载测试

负载测试可能类似于性能测试,但更侧重于高负载情况下使用应用。应用在 1,000 名用户同时使用的情况下表现如何?10,000 名用户时表现如何?负载测试有助于确定应用在承压时是否会运行缓慢或发生异常。

验收测试

验收测试可以帮助实现业务预期结果。如果客户指定了一系列应用标准,你可以编写满足所有标准后才能通过的验收测试。验收测试是另一种将规范与代码融合的方式。

UI 测试

UI 测试可以直接测试应用的用户界面交互。UI 测试旨在模拟实际的用户单击和与应用的交互,以及测试 UI 响应是否正确。UI 测试位于测试金字塔的顶层。许多框架可以自动执行 UI 交互。例如,Playwright可以使浏览器自动模拟用户如何使用网站。

另一种类型的 UI 测试是手动测试,即真实的用户使用应用。在应用发布前让用户测试应用既有一些优点,也存在一些缺点。该测试类型可能较为缓慢,因为需花费一些时间向新用户介绍如何使用应用,且难以每次都重复完全相同的步骤。主要优点是可以更有把握地确信应用可用于实际客户,并且没有任何遗漏,因为该应用不仅仅通过了自动模拟测试。

执行该测试方法前,需仔细考虑。对 UI 测试进行投入很容易,因为 UI 测试似乎能够最直观地展现用户使用应用时的体验。因此,UI 测试首次出现时,业界迅速选择了接受。缺点是 UI 变更迅速,因此即使是微小变更,也可能需要对编写的所有测试进行更新,以保持一致性。请避免编写过多的 UI 测试,以避免为与应用变更保持一致而进行大量投入。

提示:许多新式 UI 测试框架专门用于使 UI 测试保持最新状态,因此最好寻找测试时更易于维护的平台。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号