为了确保API提供了必要的安全性、可靠性和性能,这不可避免地涉及到开发、持续执行和忠实地维护广泛的复杂测试。
以下是5个关键的API测试“必须具备”,可以帮助你实现这一点:
1.智能测试创建和自动验证
由于api的极端暴露和潜在的误用,使得测试范围更广的条件和角落用例变得至关重要,自动化就成为了最重要的问题。在SOA的内部范围内,使用有限的或手动验证创建和执行简单的自动化测试可能已经足够了,但是需要更复杂和更广泛的自动化,以确信您的api足够健壮,能够在环境中生存下来。您需要一个自动化的级别,它为您提供一组全面的功能测试用例,这些测试用例可以以系统的方式重复。
为此目标推荐的功能包括一个直观的界面,用于跨消息传递层、esb、数据库和大型机自动化复杂场景:
- 定义api中使用的广泛协议和消息类型的自动化测试场景:REST、JSON、MQ、JMS、EDI、固定长度消息等。
- 在端到端测试场景中涉及的多个端点上自动化丰富的多层验证。
- 参数化来自数据源、从测试场景或变量中提取的值的测试消息、验证和配置。
- 定义复杂的测试流逻辑而不需要脚本。
- 可视化测试执行时消息和事件如何在分布式体系结构中流动。
2.测试资产和环境的更改管理
不断发展的API可以帮助组织在响应业务需求的同时保持领先于竞争对手。然而,如果自动化测试套件无法跟上不断发展的API,这种频繁的更改将带来巨大的质量风险。
快速、简单和准确地更新测试资产的系统对于使测试资产与不断变化的API保持同步至关重要。如果可以自动评估更改对现有测试的影响,然后快速更新现有测试(或创建新的测试)以响应已识别的更改影响,则可以大大减少所需的时间,以确保测试不会因预期的更改…而失败。或者忽略关键的新功能。
3.模拟测试环境的服务虚拟化
服务虚拟化技术即我们经常说的Mock,可以创建模拟测试环境,提供对依赖的系统组件行为的随时随地访问,这些依赖系统组件不可用、难以访问或难以配置用于开发或测试。“依赖组件”可能包括大型机、移动应用程序前端、数据库、web服务、第三方应用程序或其他超出团队直接控制范围的系统。服务虚拟化可以与硬件/OS虚拟化结合使用,以访问需要更早、更快或更完整地测试的环境。
在API测试的上下文中,服务虚拟化可以通过两种关键方式应用:
- 提供对依赖组件行为(例如,从移动应用程序、数据库、遗留系统或第三方服务)的访问,以彻底验证API。
- 为了模仿API的行为,创建一个API使用者可以在不影响生产环境的情况下开发和测试的测试环境,或者允许在API完成之前开始开发和测试。
4.广泛的性能测试--最好是服务虚拟化
由于api的高度暴露特性,很有可能出现不可预测和经常波动的业务量。要确定在API通常面临的需求不稳定或激增的情况下,您的API是否能够满足sla,就必须扩大性能测试的范围。您可以使用服务虚拟化(上文说过)创建模拟测试环境,帮助您针对不同的性能场景进行测试,否则在测试环境中很难创建这些场景。
例如,可以轻松地设置性能条件(例如,定时、延迟、延迟)来模拟峰值、预期性能和缓慢的性能——也许是为了帮助规划云突发,或者确定当有人从国外访问它时API可能如何响应。还可以配置各种很难在实际系统中再现或复制的错误和故障条件——例如,如果API依赖于AmazonWebServices,您可以轻松地模拟AWS宕机的场景。这种在相关系统中快速配置广泛条件的能力对于确定api在异常条件下是否提供合理的响应(或至少优雅地失败)至关重要。
采用服务虚拟化有助于性能测试的最后一种方式是:可以“虚拟化”到第三方系统的任何连接,从而可靠地消除压力测试可能影响不允许(或预算)使用测试消息的服务的风险。
5.广泛的安全性测试-最好是服务虚拟化
考虑到API增加的攻击表面积较大,一个多方面的安全测试策略对于确保开发在应用程序中构建适当级别的安全至关重要。这包括:
- 执行复杂的身份验证、加密和访问控制测试场景。
- 生成范围广泛的渗透攻击场景,包括参数模糊、注入、大有效载荷等。
- 针对现有功能测试方案运行渗透攻击场景。
- 在测试执行期间监视后端,以确定安全性是否实际受到损害。
此外,如果采用的是服务虚拟化(上文说过),则可以利用它将您的安全测试提升到下一个级别:
- 它提供了快速模拟攻击场景的方法,以及模拟依赖项的不同安全行为的方法。这使您可以从现有的功能测试方案中获得更多的价值(因为您可以相对于不同的安全场景运行它们,否则将很难配置,并且无法对它们进行测试)。
- 它允许在没有安全专家的情况下执行广泛的安全测试。现有的测试方案可以很容易地针对一组广泛的预先配置的安全场景执行。
- 它帮助您隔离API,并将其用于响应各种攻击场景和依赖项的不同安全行为。
这里推荐的是Eolinker的Goku网关,可以自行尝试一下。
使用地址:www.eolinker.com
翻译来源:dzone.com