手工编码编码的UI测试

嗨,我正在使用编码的UI测试(CUIT)来测试应用程序。 我尝试过录音选项,这对我来说不够灵活。 如果你在不同尺寸的屏幕上使用它会破坏。

我知道你可以手动编写测试代码,但我找不到任何关于如何编写基本测试的好例子。 这里有一些使用CUITe的例子,但是这些post来自2011年,我不确定它们与微软对CUIT的新升级有多相关。

这些测试需要与Visual Studio 2012 Ultimate中的构建环境集成,这就是我不使用Selenium的原因。

和代码示例或指向优秀教程的链接将不胜感激,但特别是我正在寻找一个关于如何开始手工编码我的CUIT的示例

CodePlex上的Code First编码UI测试API项目( http://codeduicodefirst.codeplex.com/ )包含一个可以下载的项目演示 – 应用程序和测试。 它专为构建CUIT测试而设计,不依赖于记录/回放。

如果您打算仅使用代码,那么您需要的最重要的事情是避免依赖CUIT记录创建的自动生成的对象映射。 Code-First项目使用映射到各个页面对象的类来解决这个问题 – 如果我没记错的话,你需要扩展项目代码以使用桌面应用程序。

(我不以任何方式加入这个项目 – 它只是我找到的除了CUITe之外唯一的手工编码资源,而CUITe在一段时间内没有更新,我看到的最后一次)。

不是很多开发人员都知道这一点,但可以使用CodedUI创建Code First测试。 它没有被提倡,这是不好的imo。 我认为录制选项是一个脆弱的选项。 它使用鼠标坐标,这意味着你必须在UI更改时重新创建测试…

可维护的方式是使用Page Object模式 (也被Selenium等其他流行工具使用)。 这创建了UI的抽象,为您提供更大的灵活性和强大的输入。

您可以轻松,可读并且最重要的是可维护的代码:

var storeHyperlink = new HtmlHyperlink(_browserWindow); storeHyperlink.SearchProperties[HtmlHyperlink.PropertyNames.Id] = "StoreLink"; Mouse.Click(storeHyperlink); 

阅读更多

这是一个video,展示了如何进行Code First编码的UI测试:

编码的UI测试 – DeepDive-Episode3-HandCoding

不确定是否有人仍在寻找如何最好地手工编写Coded UI测试代码,但是后来进入记录和回放路线将会令人失望! 最好的方法是创建一个自动化框架,用于定义要与之交互的各个对象,并使用页面对象来处理业务逻辑。 如果您正在测试Web应用程序,则可以使用通用UITestControls或HtmlControls定义对象。 例如:

 public static UITestControl EditBox_Password { get { if ( mEditBox_Password == null || ! mEditBox_Password.Exists ) { mEditBox_Password = new UITestControl (browserWindow ); mEditBox_Password.TechnologyName = "Web"; mEditBox_Password.SearchProperties.Add (UITestControl.PropertyNames.ControlType , "Edit"); mEditBox_Password.SearchProperties.Add ( UITestControl.PropertyNames.Name , "TxtPassword"); } return mEditBox_Password ; } } 

如果您正在测试基于Windows的应用程序,则可以使用WinControls或WpfControls定义对象。

我最近买了一本关于亚马逊(Hand Coding Coded UI)的书,它清楚地定义了如何设置框架并创建易于维护的代码。 不确定它是否可以在任何书店中使用,但如果您想查看,这里是亚马逊上的链接

https://www.amazon.com/dp/1547000856/ref=sr_1_1?s=books&ie=UTF8&qid=1496767488&sr=1-1&keywords=1547000856

我希望它有所帮助。

更新:只需用Google搜索并在http://www.arkenstone-ltd.com/testing-with-coded-ui/上有该书的折扣代码