通过AI和自动化加速Salesforce测试

之前的一篇文章中,我提供了一些使用Selenium测试Salesforce应用的提示和技巧。Salesforce提供了一个灵活的开发环境,允许开发人员以抽象的方式定义他们的业务逻辑和UI元素,以便Salesforce能够在页面上实现这些元素。

这种灵活性是以牺牲UI测试自动化为代价的。因为开发人员无法直接控制浏览器中的最终内容。Salesforce企业级应用在使用Selenium等开源自动化框架进行测试时是出了名的困难。

为什么用Selenium测试Salesforce很困难?

总结一下我在上一篇文章中讨论的问题,以下是使用Selenium测试Salesforce应用程序难以自动化的一些原因。

动态元素标识符

Salesforce应用中的元素标识符看起来非常奇怪,例如,id="940:1376;a"。比这更糟糕的是,标识符在页面访问之间会随机变化。这使得标识符对测试自动化毫无用处。

云托管的企业应用速度慢

尽管名为“闪电”,但Salesforce的云端托管企业应用有时会相当缓慢。测试自动化工程师熟悉响应缓慢的应用程序所带来的挑战。如果测试脚本在应用程序准备好之前尝试执行下一步,就会失败。

记忆和重新初始化Lightning UI组件

UI测试自动化的另一个棘手问题是,Salesforce会记住哪些Lightning UI组件是最后打开的,并在登录时重新初始化最后的已知状态。这意味着,测试可用的初始页面布局会根据保存的历史记录而改变。

频繁的Salesforce软件更新

Salesforce Lightning UI每年都有多次更新。每次更新都可能会导致UI测试自动化的中断。在这种情况下,为了让测试自动化能够在如此频繁的更新计划中正常工作,就需要AI驱动的自愈。

我在篇文章中提供了应对这些挑战的技巧和方法。来应对这些挑战。虽然它们对于让SeleniumSalesforce应用程序一起工作很有帮助,但这仍然是一个很大的工作。幸运的是,有一些工具可以提供帮助。

利用AI技术增强Selenium自动UI测试功能

Parasoft Selenic有效地自动创建Selenium测试并简化测试维护。使用Selenic可以在浏览器中记录与Salesforce企业应用程序的交互。然后轻松地创建Selenium测试类,利用所有这些相同的技术。

Parasoft Selenic的集成Recorder提供了一个应用程序选择,因此可以选择收集Salesforce特定属性,同时记录UI动作。然后,Selenic在创建Selenium UI测试时将这些属性纳入其中,并使用AI技术对测试进行自我修复。因定位器变化或等待条件而被打破的。

但是,等等。还有更多!

还可以利用API测试和服务虚拟化来帮助Salesforce测试变得更好、更快、更便宜。让我们来看看Parasoft如何帮助你实现这三点。

更好地测试你Salesforce应用程序

Salesforce应用程序中使用自动化的困难很可能导致测试普遍不佳。测试覆盖率可能很低,而增加覆盖率需要大大增加工作。为了更好地测试这些应用程序,测试自动化解决方案需要使测试更容易创建和维护。

Selenic记录应用执行过程中的UI交互,并以此创建一个可重用的Selenium测试。使用Chrome浏览器的记录插件,Selenic在应用程序执行过程中拦截所有UI交互,并使用Selenium页面对象模型识别元素,尽管Salesforce应用程序中使用了非典型标识符,但这提高了唯一识别定位器的能力。

下面说明了使用Selenic创建测试的工作流程。应用程序交互与相关的 API 调用一起在浏览器中被记录下来(稍后会有更多介绍),并在 IDE 中变成 Selenium Java 项目。

测试可以从现有的测试场景中快速、轻松地创建,并在IDE中转换为Selenium测试。

当事情发生变化时,会发生什么?

Selenium测试是有些脆弱的,当应用程序发生变化后,很快就会停止工作。Selenic通过为这些损坏的测试提供自我修复来帮助你。

Selenic会在后续的测试运行中继续记录交互,以检测自上一个测试版本以来的变化,并根据检测到的差异更新测试,如失败的定位器和等待条件。

Selenic也会在录音过程中跟踪性能指标,这有助于基准和调试性能问题。Selenic自愈的一般工作流程如下所示。

SelenicAI启发式诊断测试失败,并自动调整缺失的元素来 "治愈 "测试。这直接从IDE中工作,如这里所示,在CI/CD流水线中也同样有效。从观察到的测试中提出的建议可以导入到IDE中,并通过一键更新。

自动生成与自愈相结合,确保了Selenium测试对Salesforce应用的脆性较小,更容易维护。这应该可以帮助团队显著提高自动化测试的水平,因为他们可以可靠地记录整个测试套件并重用它们,而不会出现困扰Selenium测试的传统问题。这些测试不太可能因为UI的变化而中断,并且在整个开发生命周期中很容易维护。

加速UI测试是非常有用的,在UI层面投资Selenium测试的投资回报率使其值得。即使有了这些改进,在UI的测试仍然是一个瓶颈,在API级别测试业务逻辑更有效率。

更快地测试你的Salesforce应用

幸运的是,在使用Selenic记录UI测试场景的同时,也可以使用Parasoft SOAtest记录正在发生的API交互。这些记录,就像UI交互一样,可以重复使用,参数化,并修改以创建API测试场景。

SOAtest使用AI技术分析复杂的数据流量模式和定位器,并将它们凝聚成有组织的API测试。然后,这些API测试可以应用到应用程序中,以测试相同的逻辑,但没有UI交互。这就大大降低了测试的开销,而且经过一些调整,API测试可以缩减到测试特定用例所需的最小交互。下面展示了使用 SOAtest 进行 Salesforce 应用程序 API 测试的典型工作流程。

测试API层面对业务逻辑的验证方式与原UI测试用例相同,但执行时间明显降低。高达97%。这意味着测试套件需要的时间大大减少,同时也为扩展测试提供了可能性,以验证在UI层面遗漏的部分业务逻辑。

SOAtest API测试的目的是根据需要重复使用和参数化。在原始记录的基础上创建新的场景,并根据需要添加测试人员创建的数据集和自动生成的数据。现在,通过扩展测试的数据集,可以从一个简单的录音中获得一整套的API测试。

通过利用这些灵活的API测试,我们可以测试更多的应用程序,因为我们已经有效地消除了对UI的大部分测试的依赖。这种独立性意味着测试可以快速扩展,并且在开发计划中更快地进行。

当然,API测试是很好的,但仍然存在测试执行环境的问题。没有一个企业系统是不依赖外部服务和遗留系统的。这些通常是测试人员的祸根,因为它们要么完全排除了生产系统的测试--需要在实验室里进行合理的摹拟,要么使集成测试的风险极高。这就是服务虚拟化对于解耦这些生产系统的依赖性变得至关重要的地方。

更便宜地测试你Salesforce应用程序

Parasoft Virtualize等工具提供的虚拟化服务对于将被测应用从复杂的生产环境中解耦至关重要。模拟依赖性意味着被测应用程序与生产环境脱钩。

这提供了对数据的完全控制,按需部署,以及并行化的能力,并大大加快了测试速度,而不需要付费使用API、测试实验室或干扰生产系统的成本。

Parasoft CTP的环境管理器可以为被测应用程序绘制测试环境,并根据需要设置模拟服务。这些服务可以提供真实的响应,并支持模拟真实世界服务的数据模型。

CTP为虚拟化服务提供了一个数据模型,以及管理与数据模型相关的数据集的能力。虚拟化服务的复杂性根据被测试的应用程序的需求进行扩展。

服务虚拟化让集成测试变得更简单、更便宜。同时也意味着更早地进行测试。你可以将API和集成测试比以前更远地转移到左边。

最重要的是:提高跨团队协作能力

测试自动化的一个关键优势是能够在测试执行过程中收集数据和结果。Parasoft DTP 汇总和分析团队使用的各种测试实践的数据,以创建一个集中的质量视图。此外,它还可以将这些测试结果关联到你的需求管理工具(如Jira)中的用户故事。

在用例、测试结果、代码覆盖率和整体状态之间“连接点”的能力对于做出明智的决策至关重要。由于每个人都能看到应用程序状态的同一真相来源,并且可以根据需要对相同的信息采取行动,因此团队协作得到了改善。

结语

Salesforce应用程序的测试自动化可能很麻烦。使用Selenium进行UI测试是可能的,但如果没有进一步的工具协助,就会很耗时。Parasoft Selenic恰好提供了所需的协助,使SeleniumSalesforce应用程序的测试变得实用,并提高了基于UI测试的结果。

基于UI的测试是很重要的,但这是一种测试应用程序所有业务逻辑的低效方式。API测试在加速应用测试的同时,也提高了测试覆盖率。

UI测试相比,可以在更短的时间内进行更多的测试。API测试的影响通过服务虚拟化得到了进一步的改善,服务虚拟化将Salesforce应用程序与其复杂而昂贵的生产环境解耦。Parasoft SOAtestVirtualize CTP 的强大组合意味着测试更加全面,并且可以在开发周期的早期开始。

最后,团队的协作也会因为应用的各个层面的测试自动化而得到集中的质量视图而得到改善。Parasoft DTP为合理的决策提供了有意义的见解,并提高了组织专注于创新的能力。

posted @ 2021-03-10 13:25  SWTOR  阅读(132)  评论(0编辑  收藏  举报