用户界面的测试优先
行为驱动开发 (BDD) 是将需求描述为示例的早期尝试。在实践中,团队会以“给定/何时/然后”的形式提出需求。例如:
Given I am logged in
When I search for "teddy ruxpin bear"
And I click "Teddy Ruxpin"
And I click "add to my cart"
Then my cart consists of one Teddy Ruxpin
这让程序员至少可以详细了解软件应该做什么并防止摩擦。尽管如此,除非定义了 UI 元素,否则UI测试的实际“接线”只能在计算机程序存在后发生。
同样,测试而且连线通常由 XPATH、CSS 或其他类型的按钮代码组成。如果按钮移动,如果链接更改文本,或者如果链接出现在页面前面的相同文本中,则测试将出现错误失败并需要修复。一些专家,在纸上预先设计整个用户界面方面取得了一些成功,因此测试代码可以与生产代码一起创建。这仍然存在定位符字符串的问题。
很少有能够编写生产代码的程序员成为测试中的软件开发工程师并编写测试工具。
要在测试优先方面取得成功,该软件需要做的不仅仅是单击定位器;它需要识别定位器。代替诸如 //div//span[text()='About the company'] 之类的代码,自然语言处理 (NLP) 和语义建模可以采用诸如“单击登录按钮”之类的短语并找到该按钮,即使按钮没有被称为“登录”。
这样做需要一个连接成语和术语的模型,这在当今的技术中是完全可能的。一个强大的模型,结合 NLP,允许从白板草图创建的测试成为测试自动化。
转向零冲刺
即使采用 Scrum 和其他方法,财务人员和行政人员仍然想知道开发需要多长时间。这将我们带到零冲刺,在那里设计、资助和模拟项目。这些模型可能会绘制在白板上,由 UI 设计师参与,他们制作网页或详细设计。项目经理将此称为“启动”阶段;Scrum 爱好者可能会称之为零冲刺。
一个人看着用户界面可以推断当点击东西时会发生什么;一个复杂的线框甚至可能允许他们点击它。
到目前为止。计算机视觉是一种人工智能技术,可以训练图像识别符号。将它发送到购物车的谷歌图片搜索,让人工训练猜测,软件可以识别购物车。这使得完全基于模型创建单击、键入和断言值的命令成为可能。
这种真正的人工智能通过符号,而不是位图。这意味着单个测试可以在多个平台上重复使用。计算机视觉可以找到在 Android、iPhone 和网络上识别出的相同符号,即使该符号发生变化。这意味着代码不那么脆弱,因为在不同位置更改图标或按钮不会导致错误。这为测试提供了非常强大的帮助,但仍然需要强大的技术人员进行编码 - 直到您添加 NLP。
人机结合
就像 BDD 开始一样简单,在某些时候程序员必须向计算机解释“搜索 Teddy Ruxpin”的含义。传统代码看不懂成语。例如,计算机不会知道“结帐”意味着单击结帐按钮。所以一些程序员必须写:
browser->wait_for_element("id=checkout");
object checkout = get_element(id=checkout");
browser->click();
计算机视觉可以使程序员不必寻找 ID,并允许软件在 ID 更改但文本保持不变的情况下成功。仅使用计算机视觉,一些程序员需要编写该代码,对于不同的桌面或移动平台可能需要编写两到三遍。
对于 NLP,该代码可能是“单击结帐按钮”。也没有人必须编写代码。NLP 引擎观察用户测试软件,然后创建看起来像地道英语的代码。
如果测试失败,该软件可以使用计算机视觉的方式查看屏幕并尝试进行更改。如果尝试成功,测试软件可以在幕后更新对结账按钮的期望。这意味着一种高级测试,它维护自己的 Web、Android、iOS、Windows 或其他平台的细节。
组织不必依赖稀有且昂贵的 SDET,而是可以利用现有的领域专家、分析师和测试人员,让他们从 sprint 零开始创建测试。