问题描述
当涉及到Sarbanes-Oxley (SOX)合规性时,如何在不进行全面手动测试的情况下使用功能开关(Feature Toggles)是一个挑战。功能开关允许我们在未完成的功能上进行部署,而无需对关闭的功能进行全面手动测试。我们可以将功能开关打开给特定用户,尝试使用该功能,然后选择为所有用户打开或关闭。这使得更频繁的集成变得可能,正如版本控制策略(例如主干开发)所建议的,可以更频繁地将主干(或主分支)部署到用户手中。
然而,Sarbanes-Oxley规定,所有用户使用的功能都必须经过全面测试。因此,如果我有一个符合SOX合规性的系统,那么在使用功能开关时,如何避免对打开的功能进行全面手动测试呢?尽管关闭功能开关是合理的回归测试方式,但最常见的需求是集成和部署良好的代码,而不需要为默认情况下关闭的功能开关进行手动测试。
您是否有关于在每次发布时使用符合SOX合规性的功能开关而不需要全面手动测试的建议?
解决方案
以下解决方案基于提供的问答数据和常规技术实践,但仍然建议根据具体情况进行适当的定制和测试。
在使用功能开关以及频繁部署的背景下,确保SOX合规性可能需要结合以下措施:
1. 使用高级功能管理系统
理想情况下,您应该使用支持灵活的用户定向的功能管理系统,如LaunchDarkly。这些系统允许您定向特定用户或用户分段,以确保未经测试的功能不会意外地对所有用户启用。在这样的系统中,您可以灵活控制功能开关的目标受众。
2. 针对特定用户或分段启用功能开关
一种常见的做法是,在特定用户或产品团队中启用功能开关。例如,在只有负责开发该功能的产品团队的情况下,您可以启用一个新功能的开关。这样,即使该功能未经测试,只有特定的用户或团队才能访问该功能。
3. 针对测试人员进行有针对性的开关
您可以考虑将功能开关的控制权限制在测试人员等有关人员手中,直到该功能经过全面测试并准备好投入生产。这可以通过功能管理系统的角色和权限来实现。
4. 记录和审计开关变更
确保对所有功能开关的变更进行详细记录和审计。这将有助于追踪开关的状态变更,确保只有经过适当审核和测试的功能被开启。
5. 环境控制
对于生产环境等关键环境,实施更严格的控制,以防止未经充分测试的功能在用户手中启用。这可以通过功能管理系统的角色和策略来实现,以确保只有经过审慎审核的功能才能在生产环境中开启。
请注意,这些措施的具体实现可能因您所使用的功能管理系统和技术栈而异。确保在实施之前进行充分测试和验证,以确保符合SOX合规性的要求。
结论
在使用功能开关和频繁部署的背景下确保SOX合规性可能需要结合多种措施,包括使用高级功能管理系统、有针对性地启用功能开关以及记录和审计开关变更等。通过合理的组合和调整,您可以在保持开发敏捷性的同时,确保符合SOX合规性的要求。