我们正在为一些内联网应用程序实施Web测试自动化项目。我们正在设计一个可以使用不同适配器实现的Java DSL(我们已经选择了Sahi和Selenium/WebDriver到目前为止,因为我们要按照性能,可读性,可维护性等)。设计一个webtesting DSL由不同的Web测试驱动程序实现 - 我们是否应该混合原始操作和非原始操作?
我们已经确定了两种类型的DSL业务:
1)原始:它的实施,必将要处理HTML /硒/ SAHI公司/等细节。例如:(使用SAHI公司的网络驱动器)
public void insertProjectRecord(String projectName) {
b.link("Create new project").click();
b.textbox("ctl00$ProjectForm$Name").setValue(projectName);
b.span("Insert").click();
}
2)非原生态的:价值,包括我们的可重用性的目的DSL的操作,虽然可以使用原语上构建。例如:
public void createFormulation(String projectName, String rteDummyText) {
goToAddProjectPage();
insertProjectRecord(projectName);
switchToEditModeForFirstAvailableRecord();
editBeneficiaryCountries();
editAcronyms(rteDummyText);
saveSectionChanges();
}
问题:我们最初开始使用仅具有原始操作的接口,但后来我们以包括非原始的方法(其中具体的实施方式允许将其改为一个抽象类覆盖,如果需要的话)。 但是,混合原语和非原语并不感觉“好”,方法列表肯定会变得很长。
你会建议和/或探索什么其他方法?
感谢。我已经看到了页面对象模型模式,这是我们一定会探索的东西,更符合OOD。然而,我们决定从命令/程序方法开始(为什么?在这里解释太长......),并且我们面临着原始/非原始混合问题。到目前为止,我已经确定了更多原因来保持原始图元和非原始图元的分离,但我们仍然需要一点点。 – Sebastian 2010-08-25 14:05:16
切换到POM。 我们很害怕它,因为我们预计应用程序的导航性有很大的变化,但现在它感觉是最好的方式。稍后我们将处理这些更改。谢谢。 – Sebastian 2010-08-26 16:21:46
Page对象模型的思想是在导航更改发生时使更新测试更容易 – AutomatedTester 2010-08-26 20:04:19