什么是非功能测试?
- 7 分钟
在 Azure Pipelines 中的“运行功能测试”中,已将 Selenium UI 测试添加到管道。 UI 测试是 一种功能测试形式。 在本部分中,你将探索可在管道中运行的 非功能 测试类型。
团队首先定义非功能测试。 他们谈论这些测试的某些类型。 然后,他们决定添加一个非功能性测试到测试流程中。
非功能测试与功能测试相比如何?
在 Azure Pipelines 中运行功能测试中,我们定义了功能测试和非功能测试。
简言之, 功能测试 验证软件的每个功能是否应执行。 换句话说,功能测试验证应用程序的功能。
非功能测试 检查应用程序的非功能方面,例如性能和可靠性。 还可以在非应用(如基础结构组件)的系统上运行非功能测试。 非功能测试的一个示例是确定有多少人可以同时登录到应用程序,而不会造成问题,例如响应时间变慢。
例如,在 Space Game 网站上,功能测试可能会验证排行榜是否正确显示,并在用户选择筛选器时显示正确的记录。 非功能测试可能会验证排行榜筛选是否在不到一秒钟内完成,即使许多用户同时连接到网站也是如此。
非功能测试始终测试可衡量的内容。 目标是改进产品。 例如,可以通过提高应用程序使用资源的效率,或者通过改进许多客户同时使用资源的响应时间来执行此作。 下面是非功能测试可以回答的一些问题:
- 应用程序在正常情况下如何执行?
- 当许多用户同时登录时,应用程序如何执行?
- 应用程序有多安全?
可以运行哪些类型的非功能测试?
有许多类型的非功能测试。 许多内容都符合性能测试和安全测试的广泛类别。
性能测试
性能测试的目标是提高应用程序的速度、可伸缩性和稳定性。 测试速度决定了应用程序响应的速度。 可伸缩性测试决定了应用程序可以处理的最大用户负载。 测试稳定性决定了应用程序在不同负载下是否保持稳定。 两种常见的性能测试类型是负载测试和压力测试。
负载测试
负载测试 确定应用程序在实际负载下的性能。 例如,负载测试可以确定应用程序在其服务级别协议(SLA)上限下的表现。 基本上,当多个用户同时需要应用程序时,负载测试会确定应用程序的行为。
用户不一定是人。 例如,打印机软件的负载测试可能会发送应用程序大量数据。 邮件服务器的负载测试可能会模拟数千个并发用户。
负载测试也是发现仅在应用程序处于其限制时存在的问题的好方法。 这时,缓冲区溢出和内存泄漏等问题可能会浮出水面。
在本模块中,你将使用 Apache JMeter 来执行负载测试。 你将使用一组同时访问网站的模拟用户。
压力测试
压力测试 确定应用程序在繁重负载下的稳定性和稳定性。 负载超出了为应用程序指定的负载。 压力测试确定应用程序是否在这些负载下崩溃。 如果应用程序失败,压力测试会进行检查以确保其属于正常失败。 例如,正常失败可能会发出相应的信息性错误消息。
应用程序必须在异常繁重的负载下运行的情况很常见。 例如,如果视频病毒化,你将想知道服务器如何处理额外的负载。 另一个典型情况是假日期间购物网站的流量较高。
安全测试
安全测试 可确保应用程序不受漏洞、威胁和风险的影响。 彻底的安全测试发现所有系统可能存在的漏洞和弱点,这些漏洞可能导致信息泄露或收入损失。
有许多类型的安全测试。 其中两个是渗透测试和合规性测试。
渗透测试
渗透测试或 笔测试是一种安全测试,用于测试应用程序的不安全区域。 具体而言,它会测试攻击者可能利用的漏洞。 授权的模拟网络攻击通常是渗透测试的一部分。
合规性测试
合规性测试 确定应用程序是否符合公司内部或外部的一组要求。 例如,医疗保健组织通常需要遵守 HIPAA (1996 年《健康保险可移植性和责任法》),该法案提供数据隐私,以及保护医疗信息的安全规定。
组织可能也有其自己的安全要求。 必须测试软件,以确保它符合这些要求。 例如,在 Linux 系统上,默认用户掩码必须限制 为 027 或更高。 安全测试需要证明满足此要求。
计划
在本模块的其余部分中,你将设置 Azure DevOps 环境,了解如何使用 Apache JMeter 规划负载测试,并在 Azure Pipelines 中运行负载测试。