什么是非功能测试?

已完成

在 Azure Pipelines 中运行功能测试模块中,你将 UI 测试添加到了管道。 UI 测试是一种功能测试形式。 在本部分中,你将了解在管道中可运行的非功能测试类型。

团队首先定义非功能测试。 讨论这些测试的某些类型。 然后确定要添加到其管道的非功能测试。

非功能测试和功能测试的有何区别?

在 Azure Pipelines 中运行功能测试模块中,我们定义了功能测试和非功能测试。

简而言之,功能测试可验证软件的每个功能是否都能正常运行。 也就是说,功能测试验证应用程序的功能。

非功能测试检查应用程序的非功能方面,如性能和可靠性。 还可以在不是应用的系统(如基础结构组件)上运行非功能测试。 非功能测试的一个示例是确定可以同时登录到应用程序且不会造成问题(例如响应时间较长)的用户数。

以 Space Game 网站为例,功能测试可验证排行榜是否正确显示,在用户选择筛选器时是否显示相应的记录。 非功能测试可验证排行榜筛选是否能在一秒钟内完成,即使是在有许多用户同时连接到网站的情况下。

非功能测试始终测试可衡量的内容。 目标是改进产品。 例如,可通过提高应用程序使用资源的效率,或者通过在许多客户同时使用时改进响应时间来实现。 以下是非功能测试可解答的一些问题:

  • 在正常情况下,应用程序是如何执行的?
  • 如果多个用户同时登录,应用程序是如何执行的?
  • 应用程序的安全性如何?

可以运行哪些类型的非功能测试?

非功能测试有很多种。 其中许多都适合广泛的性能测试和安全测试类别。

性能测试

性能测试的目标是提高应用程序的速度、可伸缩性和稳定性。 速度测试确定应用程序的响应速度。 可伸缩性测试确定应用程序可处理的最大用户负载。 稳定性测试确定应用程序在不同负载下是否能保持稳定。 两种常见的性能测试类型是负载测试和压力测试。

负载测试

负载测试可确定应用程序在真实负载时的性能。 例如,负载测试可确定应用程序在其服务级别协议 (SLA) 上限的性能表现。 基本上,当多个用户同时需要应用程序时,负载测试可确定该应用程序的行为。

用户不一定是人。 例如,打印机软件的负载测试可能会向应用程序发送大量的数据。 邮件服务器的负载测试可能会模拟数千个并发用户。

负载测试也是发现仅在应用程序运行到极限时才出现的问题的好方法。 在这种情况下会出现缓冲区溢出和内存泄漏等问题。

在此模块中,你将使用 Apache JMeter 执行负载测试。 你将使用一组同时访问网站的模拟用户。

压力测试

压力测试确定在负载过大时应用程序的稳定性和可靠性。 负载远远超过为应用程序指定的范围。 压力测试确定应用程序是否会在这些负载下发生故障。 如果应用程序失败,压力测试会进行检查以确保其属于正常失败。 例如,正常失败可能会发出相应的信息性错误消息。

应用程序必须能够在异常繁重的负载下运行,这是很常见的场景。 例如,假设你的视频风靡网络,你就想知道服务器处理额外负载的能力如何。 另一种典型场景是购物网站在节日期间流量较高。

安全测试

安全测试可确保应用程序无漏洞、威胁和风险。 全面的安全测试可发现系统中所有可能会导致信息泄露或收入损失的潜在漏洞和弱点。

安全测试有许多种。 其中两种是渗透测试和合规性测试。

渗透测试

渗透测试是一种安全测试,可测试应用程序的不安全区域。 具体而言,它会测试攻击者可能会利用的漏洞。 经授权的模拟网络攻击通常是渗透测试的一部分。

合规性测试

合规性测试确定应用程序是否符合公司内部或外部的某些要求。 例如,医疗保健组织通常需要遵守 HIPAA(健康保险可携性和责任法案 1996),该法案提供了用于保护医疗信息的数据隐私和安全性规定。

组织还可能具有自己的安全要求。 软件必须进行测试,确保遵循这些要求。 例如,在 Linux 系统上,默认用户掩码必须为 027 或更严格。 安全测试需要证明满足此要求。

计划

在本模块的其余部分中,你将设置 Azure DevOps 环境,了解如何使用 Apache JMeter 规划负载测试,并在 Azure Pipelines 中运行负载测试。

知识检查

1.

你最近将 Web 应用连接到了数据库。 数据库记录在页面加载时显示。 你要验证数据库调用不会导致页面加载时间超过一秒。 可使用哪种非功能测试?

2.

你的网站销售当地场馆的音乐会门票。 该场馆即将举办为期数天的活动,并将邀请许多流行歌手参加。 你很害怕网站无法处理流量突增的情况。 哪种测试有助于减缓你的压力?

3.

你怀疑你的网站公开了黑客能够访问敏感数据的漏洞。 可运行哪种非功能测试来发现此漏洞?