在我工作的地方,有很多测试用例需要运行以验证在一个弹出式对话框中修改后的字段值是否在另一个弹出式对话框中正确显示保存记录之前和之后的对话框。
例如,第一个弹出窗口是添加记录代码的位置,但是还有另一个弹出窗口允许您搜索另一个代码并替换当前代码。
例如,情景可以写成如下:
Given I have a saved record with code 'X'.
When I change the code to 'Y'
Then the modified code is displayed in the dialog
When I save and re-open the record
Then the modified code is still displayed in the dialog
但是,根据我的阅读,应避免在场景中使用多个When-Then子句。
我想它可以写成如下:
Given I have a saved record with code 'X'.
When I change the code to 'Y'
Then the modified code is displayed in the dialog before the record is saved
And the modified code is displayed in the dialog after the record is saved and re-opened.
注意:由于自动化测试人员对应用程序不是很熟悉,因此Gherkin测试用例需要与测试数据一起列出,而不是声明性的。
第二个选项的问题是Then子句包含和操作而不是断言本身,因此在步骤实现中,Then子句将要求自动测试人员编写动作以保存并重新打开记录,这有点像When语句。
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
在教科书之外,这种事情总是会出现。为什么不使用多组whens和thens的要点是,结果场景不能像规范那样工作,只能作为测试脚本。
拥有多组when和thens的另一个缺点是,为什么测试失败并不总是那么清楚。如果测试只测试一件事,那么你通常可以很容易地说出出了什么问题。
但在我看来,没有一个适合所有人的答案。要考虑的因素是:
首先,如果您不使用这些方案作为编写规范的方法,例如BDD,那么唯一真正的缺点是它可能不清楚测试失败的原因。在我看来,这通常可以通过仔细命名你的步骤来解决问题,而不是试图将小孩和母狗挤在一起。
其次,如果您的测试需要永远运行,因为正在测试的系统或其他什么,那么基本上运行测试两次使用不同的断言真的值得去读书吗?一个完全取决于你的决定,人们有不同的意见。
最后,处理这个问题的最佳方法是将测试分成两部分,并模拟开始步骤,以便在第二个测试中你可以做出断言当你重新打开它时工作。但是,如果你没有足够的技能可以轻松地做到这一点,那么它真的是一个足够大的问题吗?同样,你有多少时间,这是一个足够大的交易,值得花时间吗?但是,需要考虑的一件大事是,将来您的测试系统是否会出现这种情况。如果它可能那么值得花时间......