Unit testing 单元测试UI应用程序

Unit testing 单元测试UI应用程序,unit-testing,user-interface,Unit Testing,User Interface,UI应用程序可以进行单元测试吗?让我们考虑一个具有简单登录表单的UI应用程序。构成此UI应用程序单元测试一部分的内容。后端响应验证是否应该成为登录表单单元测试的一部分 我认为应该包括, 表单中UI组件的适当呈现 基于用户操作启用/禁用组件(未输入密码且提交表单时,密码不能为空消息) 在为UI应用程序设计单元测试用例时,是否应该使用任何指导原则/经验法则?在单元测试中应该考虑应用程序行为吗 UI测试不是严格意义上的单元测试,但是有一些工具/框架可以帮助实现这一点。我想你指的是一个网络用户界面-为此

UI应用程序可以进行单元测试吗?让我们考虑一个具有简单登录表单的UI应用程序。构成此UI应用程序单元测试一部分的内容。后端响应验证是否应该成为登录表单单元测试的一部分

我认为应该包括,

  • 表单中UI组件的适当呈现
  • 基于用户操作启用/禁用组件(未输入密码且提交表单时,密码不能为空消息)

  • 在为UI应用程序设计单元测试用例时,是否应该使用任何指导原则/经验法则?在单元测试中应该考虑应用程序行为吗

    UI测试不是严格意义上的单元测试,但是有一些工具/框架可以帮助实现这一点。我想你指的是一个网络用户界面-为此,你可以尝试,例如,或

    请注意,“适当呈现UI组件”是一个非常松散的术语-它可以表示无法自动验证的内容,只能通过人眼进行验证

    通过UI测试功能总是比通过经典单元测试直接测试代码更麻烦。因此,总是建议尽可能地将业务逻辑与UI分离开来,这样您就可以通过单元测试彻底测试逻辑本身的所有细节,并且只需要在UI上进行集成测试就可以验证整个应用程序是否按预期工作


    在您的示例中,理想情况下,输入验证和身份验证将与GUI分离,因此您可以对其进行单元测试(最好通过模拟数据库)。因此,您可以验证登录在各种正常/异常输入(空用户名/密码、奇怪字符、很长的输入、登录同一用户两次等)下是否按预期工作。然后,在UI测试中,您只需测试几个常见的测试用例,就可以验证应用程序是否确实具有功能。

    UI测试不是严格意义上的单元测试,但是有一些工具/框架可以帮助您做到这一点。我想你指的是一个网络用户界面-为此,你可以尝试,例如,或

    请注意,“适当呈现UI组件”是一个非常松散的术语-它可以表示无法自动验证的内容,只能通过人眼进行验证

    通过UI测试功能总是比通过经典单元测试直接测试代码更麻烦。因此,总是建议尽可能地将业务逻辑与UI分离开来,这样您就可以通过单元测试彻底测试逻辑本身的所有细节,并且只需要在UI上进行集成测试就可以验证整个应用程序是否按预期工作


    在您的示例中,理想情况下,输入验证和身份验证将与GUI分离,因此您可以对其进行单元测试(最好通过模拟数据库)。因此,您可以验证登录在各种正常/异常输入(空用户名/密码、奇怪字符、很长的输入、登录同一用户两次等)下是否按预期工作。然后,在UI测试中,您只需要测试一些常见的测试用例来验证应用程序确实是功能性的。

    < P>如果您的UI是本地图形应用程序,您可能需要考虑(仅Windows),这允许您以编程方式单击屏幕上的任何地方,并将文本键入到小部件或仅按键盘按压。它还能够读取指定位置像素的颜色。或者你可以用它来拍摄屏幕截图和进行图像比较

    如果是基于Web的,您可能还想考虑使用XPath来确定(非图形化)元素是否存在于生成的HTML中。但是,它对页面的呈现方式没有帮助。AutoIt可能也有帮助,但如果您希望所有平台的所有用户都能够合理地访问您的页面,您将无法在不同的平台上执行相同类型的测试

    如果你的UI是基于控制台的,考虑使用预期。我更喜欢这个,它是基于


    我知道我没有直接回答有关规则或指导方针的问题,但我认为知道哪些工具是可用的将打开您认为可能不存在或未考虑的可能性。例如,您可以使用AutoIt来确定组件是禁用还是启用,因为禁用时,小部件的颜色通常与启用的版本不同。因此,通过使用AutoIT获取屏幕的像素或区域的颜色,可以编程地测试是否启用了该小部件。

    < P>如果您的UI是本机图形应用程序,则可能需要考虑(仅Windows)。它允许您以编程方式单击屏幕上的任何位置,并模拟输入到小部件中的文本或仅按键盘。它还能够读取指定位置像素的颜色。或者你可以用它来拍摄屏幕截图和进行图像比较

    如果是基于Web的,您可能还想考虑使用XPath来确定(非图形化)元素是否存在于生成的HTML中。但是,它对页面的呈现方式没有帮助。AutoIt可能也有帮助,但如果您希望所有平台的所有用户都能够合理地访问您的页面,您将无法在不同的平台上执行相同类型的测试

    如果你的UI是基于控制台的,考虑使用预期。我更喜欢这个,它是基于


    我知道我没有直接回答有关规则或指导方针的问题,但我认为知道哪些工具是可用的将打开您认为可能不存在或未考虑的可能性。例如,您可以使用AutoIt来确定组件是禁用还是启用,因为禁用时,小部件的颜色通常与启用的版本不同。因此,通过使用AutoIt获取屏幕像素或区域的颜色,您可以通过编程方式测试该小部件是否已启用。

    通常,测试UI组件