今天的软件行业比过去复杂得多。几乎在客户需求、激烈的企业竞争,当然还有直接影响该市场的全球变化的各个方面,它都是显而易见的。正因为如此,如今的企业需要比竞争对手更具竞争优势,这意味着他们必须能够快速发布质量卓越的产品。
因此,如果我说每家公司(从初创公司到企业)最重要的目标之一是确保他们向客户提供频繁发布的能力,就不足为奇了。这容易吗?不,由于各种因素,包括文化、技术限制,当然还有测试过程,这可能需要几年时间(尤其是对于大公司),这很可能会占用每个项目的大部分时间.
那么,企业该如何应对呢?这就是持续测试提供帮助的地方。根据维基百科,持续测试是“作为软件交付管道的一部分执行自动化测试的过程,以获得与软件发布候选相关的业务风险的即时反馈。”
简而言之,持续测试的主要目标是从软件开发生命周期的一开始就将质量构建到产品中。使用这种方法,我们推动我们的团队进行文化、思维和技术调整,以确保他们能够在开发的所有阶段(单元测试、集成测试、安全测试、系统测试和验收测试)进行测试,并加速整体开发过程,以便为他们的客户取得更好的结果。
正如我上面提到的,持续测试对于企业在竞争中领先一步至关重要,但它也带来了内在的复杂性和挑战,在您开始之前值得一提。
挑战 1:在现有方法中实施新的思维方式
正如我之前提到的,在将持续测试纳入 DevOps 术语之前,开发团队必须采用完全不同的思维方式。我观察到一些组织如何因团队沟通不畅而遭受严重延误或未能进行过渡。人们不喜欢变化,尤其是像采用持续测试带来的剧烈变化。
让您的团队在与他们沟通时能够理解“为什么”和变革的优势。例如,为了为客户改进产品,他们将学习新技术和工具。此外,让您的团队有时间适应变化也很重要;在您确定他们愿意与您一起旅行之前,请避免向他们施加压力。
挑战 2:我们的自动化程度是否足够?不再是问题
在持续测试成为基于云的开发(SaaS 产品)的新规范之前,组织的主要目标是减少测试工作,尤其是手动测试。因此,始终存在的主要问题是,“我们的自动化程度够高吗?” 在过去,这是一个行之有效的策略,但在不断测试的时代,需要重新评估。作为“自动化一切”努力的结果的大量非结构化测试套件在几个月内变得难以管理,并且比测试本身需要更长的维护时间。此外,组织及其开发团队无法将它们作为结构化过程的一部分连续运行,每次修复每次构建,因此面临自动化的全部动机。
那么现代发生了什么变化呢?我们必须迅速采取行动,集中精力进行能够产生最高投资回报的测试。这是意识到自动化一切是不切实际的结果。例如,我曾经有一个简单的清单供我的团队使用,然后再决定什么该自动化,什么不该做。(在几个项目之后,它不再是必要的,因为他们将其视为一个持续的过程)。
让我们检查此清单中的一些项目:
1、从业务角度来看,测试的价值是什么?
2、自动化/不自动化测试的风险是什么?
3、它是应该针对每个构建/项目运行的重复测试吗?
4、它会节省工程时间吗?
挑战三:持续测试不只是为了测试
认为持续测试只专注于测试的想法是最常见的误解之一。不是这种情况。尽管测试是其核心,但我们必须专注于该过程中涉及的其他几个领域,以充分利用持续测试。
例如:
1、创建与每个测试套件相关的健康仪表板。
2、在多个版本、平台和框架上执行测试套件。
3、在失败的情况下重新运行测试的能力(同时保留失败日志、转储和任何其他与调试相关的信息)。
4、使用生成自动报告给相关利益相关者。
挑战 4:假阳性和假阴性
注意假阴性和假阳性。他们比你想象的更频繁!当您运行测试自动化脚本时,它可能会报告执行失败,即使系统运行正常,也可能会报告测试执行成功,即使系统遇到故障。虽然两者都是有害的,但误报可能更具破坏性,因为您假设一切正常,直到出现问题。
明智地考虑回滚。即使您遵循所有最好的连续测试和 CI/CD 标准,也无法保证构建不会在生产中崩溃。始终为最坏的情况做好准备。在将更改部署到生产环境之前,请确保您的数据已备份。如果出现问题,您可以立即回滚到以前的生产版本并进行另一轮测试以验证应用程序再次正常工作。
请注意,如果您从生产环境回滚,您不能简单地确认您的预生产状态并立即提交定制。您必须检查整个管道和所有测试环境,以确保没有松散的结局,因为您不想多次延迟同一个发布周期。
挑战五:资源利用不足
如果组织想要一个有效且可扩展的持续测试过程,就必须在资源、基础设施、框架和体力劳动方面进行投资。如果不随着时间的推移对其进行管理和跟踪,这种安葬可能会非常昂贵。例如,日常 CD 流程使用各种服务器(物理和虚拟),每台服务器都会消耗资源,随着时间的推移,这些资源会非常昂贵。(如果您使用 Azure、AWS 等云提供商,这一点就更重要了)。
工程团队将被期望确保他们不会将这些宝贵的资源浪费在由于编码和测试不充分而导致失败的无意义的工作执行上。对于不能在未利用的资源上浪费金钱的初创公司或低预算项目来说,这可能是一个主要问题。因此,持续关注 CD 执行管道以识别和解决资源浪费区域至关重要。
挑战六:安全漏洞
持续测试在交付高质量产品方面具有很多优势。非中立地说,黑客也很有可能将您的 CD 管道作为目标,因为总是存在一些企业没有很好解决的安全漏洞。如果现在还不清楚的话,CD 管道包含大量与产品直接相关的敏感信息,这使得攻击者更容易尝试获取这些数据。
今天,我们有一些很好的方法来减少这种威胁,方法是利用可以用作完整防御线的各种策略:
1、聘请外部承包商来处理安全测试过程的各个方面。对于没有内部专业知识来处理这项工作的企业来说,这个解决方案是不可思议的。
2、结合跟踪整个管道的监控系统,以确保始终保持基本安全级别。
3、通常,我们可以减少通过代码传输的敏感和受限信息的数量。
4、通过使用不同的方法来保护代码存储库,例如双因素身份验证(对作者进行身份验证)或安全本地备份(在主存储库被完全劫持的情况下)。
挑战 7:测试人员的角色和职责
到目前为止,我们遇到的大多数问题主要是技术或程序问题,但是软件测试人员呢?是什么让他们成为这个世界的一部分?他们的新职责和角色是什么?因此,除非您计划从您的开发管道中消除测试人员,否则我建议您采取适当的步骤来消除这个潜在的定时炸弹。让我解释一下,软件测试人员通常(或多或少取决于所使用的 SDLC 方法)进行测试或至少进行测试设计,因此现在在持续测试方法中,我们将越来越多的测试活动推给开发人员分阶段测试(单元、集成等),而简单的测试人员无法做到。
我经常观察到测试人员如何努力掌握他们的新角色以及对他们的要求,这导致他们对工作极度沮丧和恐惧。为了解决这个问题,需要以一种让测试人员知道他们如何适应新的 SDLC 以及他们期望什么样的 RNR 的方式来澄清这一变化。例如:
1、跟踪、监控和调试(基于技术技能)自动化结果并传达潜在问题。
2、使用基于风险的测试和探索性会话执行临时测试。
3、在发布周期中管理缺陷。
4、针对主要业务流程设计测试场景。
5、和更多。
结论
自从我在这个领域工作了将近 20 年以来,我目睹了至少一两次推动我们行业发展的重大事件。在我看来,持续测试是当今的其中之一,因为它与其他重要变化相互作用,例如各级云服务(IaaS、PaaS 和 SaaS)的使用不断增加,以及我们现在生活的快节奏社会. 因此,应该以某种方式采用持续测试,无论是通过技术手段还是使用其中的特定元素。
卓码软件测评是一家[ 具备CMA、CNAS双重资质 ]的专业做软件测试的第三方软件测试服务机构, 可根据您的需求提供各类软件测试服务,并出具合格有效的软件测试报告。点击→→可了解测试报价
部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。负责人:曾菲 电话:4006070568