功能测试是一种测试,旨在确定每个应用程序功能是否按照软件要求运行。每个功能都要与相应的要求进行比较,以确定其输出是否符合最终用户的期望。测试的方法是提供输入样本,捕捉结果输出,并验证实际输出与预期输出是否一致。
一些功能测试示例如下:
与非功能测试不同,功能测试并不关注应用程序底层源代码的质量、安全性或性能。功能测试不会衡量速度、可扩展性和可靠性。
功能测试关注的是处理结果,而不是处理机制,并确定应用程序是否满足了用户的最低基本期望。
从这个意义上说,功能测试的定义近似于黑盒测试的同义词,而白盒测试则通常是非功能测试的特征。
功能测试计划通常遵循以下顺序:
确定测试目标
功能测试目标是指根据项目要求软件应具备的功能。测试目标包括验证应用程序是否按预期运行,以及是否能优雅地处理错误和意外情况。
创建测试方案
为给定功能制定一份所有可能的(或至少所有最重要的)测试场景列表。测试场景描述了使用该功能的不同方式。例如,对于支付模块,测试场景可能包括多种货币、处理无效或过期卡号,以及在交易成功后生成通知。
创建测试数据
根据所确定的测试场景,创建模拟正常使用条件的测试数据。您可以手动输入测试数据(如从 MS-Excel 电子表格或打印输出),也可以通过脚本或测试工具自动从数据库、平面文件、XML 或电子表格读取和输入数据。每组输入数据还应有相关数据,描述输入数据应产生的预期结果。
设计测试用例
根据测试输入的不同预期结果创建测试用例。例如,如果输入无效的信用卡号,应用程序应显示有意义的错误信息。
执行测试用例
在应用程序中运行测试用例,并将实际结果与预期结果进行比较。如果实际结果与预期结果不同,则说明该功能未通过测试,应记录缺陷。
审议、跟踪和解决缺陷
一旦发现缺陷,应将其记录在正式的跟踪系统中,供整个项目团队使用。在将缺陷标记为已关闭之前,应对应用程序进行必要的更改,并再次执行测试用例以确认问题的解决。
功能测试自动化工具能够与被测应用程序的用户界面进行交互。它们能识别屏幕上的对象,如列表框、文本框和按钮,并能进行选择、输入数据和按下按钮。
许多功能测试自动化工具都包含一个记录器,当用户与应用程序及其屏幕上的对象交互时,记录器会 "观察 "用户,记录他们输入系统的数据以及用户执行的操作,如按下按钮或选择菜单。然后,可以使用记录期间捕获的对象、数据和操作来重放这些操作,以复制用户的活动。测试工具会记录这些操作的结果,并与自动化工程师定义的预期结果进行比较,以确定测试是通过还是失败。
功能测试自动化工程师可以使用工具识别的对象逐步建立测试,也可以从记录开始,定制步骤和参数化数据,使其通用化,并使测试能够在不同的环境中运行,包括各种浏览器和移动设备。
如今,领先的测试自动化工具都具有人工Intelligence (AI) 功能,采用了机器学习、计算机视觉、神经网络和自然语言处理等先进技术。这有助于以与人类相同的方式识别屏幕上的对象,自然地与对象进行交互和操作,并使用简单的英语编写测试。
事实证明,基于人工智能的功能测试自动化可以缩短测试创建时间、提高测试覆盖率、增强测试资产的弹性并减少测试维护工作。
尽早创建测试用例
不要等到应用程序或模块编码完成后才开始创建测试用例。在项目的早期阶段,用户需求是最新鲜的。您可以随时根据需要修改测试用例。
自动化
功能测试可能是一个艰巨、重复和耗时的过程。自动化程度越高,就能越快地确保所需的功能或识别并纠正缺陷,在 应用程序交付过程中节省的测试时间和成本也就越多。自动化所有测试用例也许不可能,甚至不可取,但只要将最重要的测试用例从手动名册中删除,就能大大提高测试投资回报率。
了解用户的思维过程
功能测试人员必须深入了解最终用户的思维过程。每个应用程序通常都有不同类型的用户(买家、卖家、管理员、数据录入员、主管等)。每个测试计划都必须考虑到不同类型的用户及其对应用程序的典型操作。
确定优先次序
测试人员的时间和资源是有限的。不是每个功能都能测试。有些应用功能的优先级很高,因此必须优先于优先级较低的功能进行测试。
虽然Functional Testing 对许多组织来说都是一个挑战,但适当的自动化功能测试质量保证组织所带来的好处远远超过了这些挑战,而利用成熟的功能测试工具是实现这一目标的最佳途径。了解OpenText™ 功能测试自动化如何帮助您从功能测试中获得最佳价值。
借助人工智能的力量加速测试自动化
让开发人员参与集成的自动左移测试
随时随地开发、调试、监控和优化应用程序
利用逼真的 API 和模拟加速软件测试
利用人工智能驱动的 DevOps 自动化、测试和质量,更快地交付更好的软件