何为边缘情况?
在极端条件下发生的情况被称为边缘情况,有时候也叫边界情况,在功能、回归、单元和性能测试中都会应用。如果质量保证团队知道某项功能的最大和最小负载,他们就能防止这些情况发生。当用户不按照程序的预期工作流程操作时,就属于边缘情况。
虽然用户在使用程序时可能没有按照其设计功能进行操作,但他们不应该面临任何故障。通过测试边缘案例,质量保证团队可以通过发送有意的安全攻击来识别漏洞。这种测试还能确保合规性,并能隔离程序中的风险。边缘案例会对程序的整体性能和用户体验产生影响。
那么,你遇到过这样的情况吗?
比如,当你关闭某社交软件上的视频时,声音却在后台继续播放几秒钟?这就是边缘情况的典型示例!
此类情况可能会导致难以诊断和修复的问题或错误。边缘情况的示例包括但不限于:
用户错误:用户输入数据或执行系统无法处理的操作的情况。例如,设计可能不会预期用户输入无效数据或单击他们未预期的按钮。
误用:当用户以非预期方式使用产品时,例如,将CD驱动器用作杯架。
依赖关系:当产品依赖于不可用或发生变化的资源时,例如互联网连接或代码库。
极端情况:当不太可能发生的事件同时发生并产生意外结果时,例如多个用户使用相同的名称同时注册。
技术变革:当用户尝试使用系统无法支持的过时或创新技术时。
所以,开发人员在设计和开发过程中需要考虑边缘情况,以最大程度地降低错误风险并确保产品能够处理意外场景。
边缘情况的类型,包括不限于以下情况:
输入边缘情况:使用极端输入值测试程序,包括非常大或很小的数字。
硬件边缘情况:使用不常见的硬件配置或设备测试程序。
时序边缘情况:在异常时序条件下测试程序,例如高负载或低网络带宽。
配置边缘情况:使用独特的设置或禁用的功能测试程序。
安全边缘案例:在非典型安全条件下测试程序,例如使用不同的权限或禁用的安全功能。
如果你想知道为什么边缘情况如此重要,你必须首先了解一些不平常发生但很严肃的事实!
1.边缘案例可以揭示系统或流程中在典型场景中可能不明显的缺陷。我们可以通过考虑边缘情况来识别和解决潜在问题,以免它们成为更大的问题。
2.边缘案例通常代表现实世界中的场景,这些场景可能很少发生,但如果处理不当,仍然会产生严重后果。考虑到这些场景,我们可以确保我们的系统和流程足够强大来处理它们。
3.边缘案例还可以通过识别用户可能遇到意外行为或错误的情况来帮助我们改善用户体验。解决这些边缘情况,可以使我们的系统更加友好,并减少用户的不良体验。
4.边缘案例可能会严重影响某些行业(例如医疗保健或金融)的患者安全或财务稳定性。查看这些场景,我们可以确保系统和流程的设计能够最大限度地降低风险,并保护依赖它们的人。
如果你正在使用具有有限范围的可重复和可控输入值的应用程序,应该考虑自动化边缘情况测试。
测试自动化通常执行边缘情况测试,以使用自动化测试验证预定的软件输出。
自动化测试确保系统满足测试用例的预期性能、质量、行为和配置。自动化测试脚本可以检测手动测试无法识别的问题。团队经常使用自动化测试来加速测试套件并检查复杂Web应用程序和系统的边缘情况。
因此,软件测试中的边缘情况是指超出正常输入和行为范围的场景。它们就像我们必须测试的疯狂异常值,以防万一。
有时,我们必须测试我们没有预料到或计划之外的事情。这就像测试可能发生但可能不会发生的古怪而意料之外的事情。
当测试人员需要处理大量数据并认为测试可能在数据的最高或最低限制时失败时,他们会使用称为边界值分析的方法。这意味着我们正在检查输入数据值的上限和下限,因为我们认为这就是我们的测试用例可能出错的地方。当我们有大量测试数据时,这种技术效果最好。
假设你正在测试一个仅允许包含6-12个字符的用户名的网站。通过边界值分析,你可以测试下限(6个字符)、精确限制(7个字符)和上限(12个字符)。
接下来是等价分区。这是关于将一个巨大的数据集分解成更小的块。如果我们传递一个块中的任何随机值,我们可以假设我们已经覆盖了该块,并且不需要单独测试其中的所有内容。
假设你正在测试一个仅允许使用字母数字字符的用户名的网站。你可以将其分为两个等价类:所有字母字符和所有数字字符。然后,你可以测试这两个类中每一类的一个值,以确保网站接受数字和字母。
边缘案例测试是软件测试的重要组成部分,涉及测试系统的极端或边界条件,而这些条件在常规测试中经常被忽视。
手动方式:
识别边缘情况:第一步是识别应用程序的边缘情况。这可以通过分析系统的要求和规格来完成。
创建测试用例:确定边缘情况后,创建涵盖这些场景的测试用例。应该包含等于或超出这些测试用例中预期限制的输入。
执行测试用例:手动执行每个测试用例并观察系统在这些条件下的行为方式。
记录结果:记录每个测试用例的结果,包括测试期间发现的任何问题或缺陷。
自动化方式:
1.识别潜在的边缘情况:第一步是识别系统中潜在的边缘情况。这可以通过分析需求、用户故事和用例来完成。
2.开发测试场景:一旦识别出潜在的边缘情况,下一步就是开发涵盖这些情况的测试场景。这些场景应旨在测试系统在极端条件下的行为。
3.使用自动化工具:Selenium、Appium等自动化工具可以自动执行这些测试场景。这些工具可以模拟用户与系统的交互并验证其在不同条件下的行为。
4.分析结果:执行自动化测试后,分析结果以识别可能已发现的任何问题或缺陷非常重要。此分析可以通过识别需要改进或进一步测试的领域来帮助提高系统的质量。
在产品发布之前,边缘情况测试对于检查系统在极端条件下的表现非常重要。系统的意外行为可能会让用户体验极差并导致他们放弃该产品。
边缘情况测试涉及通过输入超出正常使用限制的值来测试系统的边界,例如提供异常大或负的输入。这可以识别并消除极端用例中的错误或意外行为。边缘案例测试可以帮助为客户提供流畅、无缝的用户体验。
测试人员一旦发现边缘案例缺陷,就必须对其进行优先排序,以便分流。
通常情况下,组织对边缘案例缺陷的优先级排序与回归测试周期中报告的缺陷略有不同。
比如,我们正在测试安全性和身份验证–我可以尝试在用户界面中直接绕过它的任何可能方式。你可能会在应用程序工作流程的任何地方发现并测试边缘案例缺陷。为了有效地确定边缘案例测试和缺陷的优先级,就需要考虑问题被发现的频率,以及对公司和用户的潜在业务结果。
想想我们前面的例子,如果我能使用用户界面规避登录流程,并获得所有账户的访问权限,这就是一个重大缺陷,企业必须立即解决。但不太严重的边缘测试用例缺陷可能不会立即在代码中得到修复,尤其是如果产品或开发团队不相信有人真的会走这条路。
这就是确定优先级如此重要的原因:严重的边缘测试用例缺陷必须立即修复,但轻微的缺陷可能会被搁置。
边缘测试用例很难辩护,因为它们并不常见或出乎意料。但是,组织在审查和优先处理边缘案例时,不应将其视为不常见的情况,而应将其视为在某些时候会出现的缺陷,这取决于用户的狡猾程度。也许他们不会在工作流程之外随意点击。但如果他们这样做了呢?黑客会花大量时间测试边缘情况和利用缺陷。
他们会测试系统的方方面面,而这些都是没人认为重要的。如果要保持客户对应用程序的信任,边缘案例测试就是重中之重。
请记住,你也可以在设备级别发现边缘案例。安卓系统有许多不同的版本,因此边缘案例缺陷会存在于某个版本,但不会存在于另一个版本。在确定边缘案例的优先级时,要考虑用户拥有哪些设备,以决定是否值得花精力修复该缺陷。要同时解决所有缺陷,设备/操作系统组合实在是太多了,因此有必要采取分清主次的方法。
总之,不要忽视边缘缺陷,要将边缘测试纳入项目的整体质量保证计划。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!