关于用户界面:GUI测试

关于用户界面:GUI测试

GUI Testing

我正在研究测试我的GUI的问题,我不完全确定这里的最佳方法。 我的GUI是使用传统的MVC框架构建的,因此我可以轻松测试GUI的逻辑部分而无需打开GUI本身。 但是,在测试GUI的功能时,我不确定我是否应该担心单独测试GUI组件,还是主要集中在功能测试系统上。 这是一个非常复杂的系统,其中测试GUI经常涉及向服务器发送消息,然后在GUI上观察响应。 我最初的想法是功能测试是解决问题的方法,因为我需要运行整个系统来真正测试UI。 对此问题的评论将不胜感激。

谢谢,
杰夫


我可以提供的其他GUI测试工具是:
Thoughtworks White,
PyWinAuto,
AutoIt,
AutoHotKey。

尝试使GUI自动化时要记住的一件事是,您唯一可以做到的就是在考虑自动化的情况下构建GUI。 Crush开发人员认为他们的GUI不应该在项目的早期阶段就支持可测试性,并且会根据测试需求愉快地公开所有可以帮助实现按需自动化的挂钩。


您(至少)有2个问题-环境(服务器)的复杂性和GUI的复杂性。

有许多用于自动化GUI测试的工具。它们全部或多或少都非常脆弱,面对不断变化的布局,需要进行几乎恒定的维护。使用它们可以获得好处,但这是长期的好处。

另一方面,环境是可以驯服的区域。如果您的应用程序是使用"依赖项注入/反转"技术来构建的(将服务器组件"注入"应用程序),则可以使用相关服务器接口的"模拟"来编写测试用例的脚本。

结合这两种技术,可以使GUI测试自动化。

最后一个想法-祝你好运!


根据您坐在MVC频谱中的哪个位置(这是一个过度使用的术语),测试视图可能是一个机械过程,以确保响应对视图的正确输入而调用正确的模型方法以测试一些客户端验证,谁知道。

从MVC演变而来的许多模式(我认为是被动视图,监督控制器)都在努力使视图需要很少的测试,因为它实际上只是将用户输入连接到演示者或模型上(取决于具体情况)。您使用的模式的变体)。

"测试GUI经常涉及向服务器发送消息,然后在GUI上观察响应"。

我立即想到应该使用服务器的模拟或存根对GUI进行测试,以测试是否发生了正确的交互并且GUI做出了适当的响应。

如果您需要服务器的自动功能测试,我认为不需要在其中包含GUI。


如果您的应用程序是基于Web的,则可以使用WatiN或Selenium之类的工具编写测试。

如果您的应用程序基于Windows .NET,则可以尝试使用White。


Mercury QuickTest Pro,Borland SilkTest和Ranorex Recorder是一些GUI测试工具。


尝试走廊可用性测试。它既便宜又有用:去最近的走廊,抓住第一个经过的人,让他们坐在您的计算机上并使用您的软件。看着他们的肩膀,您会看到他们试图做什么,使他们沮丧的事情,等等。这样做几次,并注意模式。


我们确实将GUI测试纳入了我们的项目,并且它具有副作用。但是,开发人员有一个重要的设计原则:使GUI层尽可能薄!

这意味着GUI类中没有逻辑。在负责输入验证等的表示模型中将此分开。

为了在Unix机器上进行测试,我们在运行测试时将Xvfb服务器用作DISPLAY。


我可以说的最清楚的方法是:

不要浪费时间编写自动GUI测试。

尤其是在使用MVC应用程序时(在这种情况下),当您向服务器发送消息时,可以确保返回正确的消息号并完成。您可以添加一些其他情况-或完全进行其他测试,以确保GUI将消息ID转换为正确的字符串,但是您只需要运行一次该测试即可。


我的建议:忘记传统的GUI测试。太贵。对测试进行编码需要花费大量时间,这些工具并不是真正稳定的,因此您将获得不可靠的测试结果。代码与测试之间的耦合非常牢固,您将花费大量时间进行维护。

新趋势是忽略GUI测试。请参阅Fowler的ModelViewPresenter模式作为指南链接文本


对于基于SIMPLE Web的GUI测试,请尝试使用iMacros(一个简单的Firefox插件,具有很酷的功能,可以将整个测试发送给其他人)
请注意,SIMPLE拼写有缩写...


我发现WinTask是进行GUI测试的一种很好的方法。只要您不经常更改OS引用UI的每个元素的方式,WinTask就会按名称处理UI元素,因此,即使布局发生更改,仍可以按/调整/选择UI元素。


不要错过" GUI"中的" U"
我的意思是:如果您要测试的东西都是正常的,并且按计划工作,则可以遵循Seb Rose的回答。

但是请不要忘记必须要考虑一个用户界面,而不是任何用户,而是该应用程序的目标用户。因此,在确定所有工作都可以正常工作之后,将每个视图/屏幕/表单与一组由代表可能使用您的应用程序的每组不同用户的用户组成的团队进行测试,这些用户包括高级用户,管理员,MS Office用户,计算机配置文件较低的用户,计算机配置文件较高的用户...,然后,对每个用户进行评论,进行混合,必要时重新触摸GUI,然后再次返回GUI用户测试。


您正在寻找的是"验收测试"。如何执行取决于您使用的框架,所创建的应用程序类型以及所使用的语言。如果您使用自己的特定技术和上述短语搜索Google,则应该找到一些可以使用的工具。


推荐阅读

    linux关闭系统的命令?

    linux关闭系统的命令?,系统,工作,命令,时间,用户,指令,通知,目的,终端,表示,

    linux系统nl命令?

    linux系统nl命令?,系统,工作,命令,信息,文件,标准,工具,单位,公式,内容,nl是

    linux命令修复系统?

    linux命令修复系统?,系统,地址,时间,工作,数据,一致,第一,工具,流程,命令,当L

    linux更新系统的命令?

    linux更新系统的命令?,系统,工作,单位,管理,信息,命令,地址,基础,数据,工具,l

    linux系统开发命令?

    linux系统开发命令?,工作,系统,地址,信息,命令,目录,数据,管理,单位,功能,Win

    linux系统命令awk?

    linux系统命令awk?,数据,系统,工具,基础,标准,名称,单位,命令,文本,语法,Linu

    linux命令行退出系统?

    linux命令行退出系统?,系统,工作,时间,地址,信息,命令,软件,工具,发行,电脑,

    linux系统命令vim?

    linux系统命令vim?,系统,工作,发行,模式,连续,工具,官方网站,状态,环境,时间

    linux系统常用命令表?

    linux系统常用命令表?,系统,基础,工作,工具,管理,网络,命令,数据,标准,地址,l

    linux系统命令无效?

    linux系统命令无效?,系统,密码,数据,工具,网络,信息,软件,情况,在线,时报,lin

    linux系统解压缩命令?

    linux系统解压缩命令?,系统,工具,管理,文件,命令,名称,电脑,格式,文件名,目

    linux系统用户命令?

    linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请

    linux系统清缓存命令?

    linux系统清缓存命令?,数据,系统,地址,服务,网络,电脑,缓存,工具,环境,设备,l

    linux系统中vi命令?

    linux系统中vi命令?,位置,状态,档案,系统,首开,工作,数据,环境,数字,正规,lin

    linux系统负载命令?

    linux系统负载命令?,系统,情况,信息,电脑,工具,管理,状态,时间,命令,灵活,Lin

    linux系统初始化命令?

    linux系统初始化命令?,系统,基础,工作,服务,信息,命令,软件,网络,密码,发行,l

    linux系统查版本命令?

    linux系统查版本命令?,系统,信息,名称,状态,设备,命令,软件,工具,版本,终端,l

    强大系统linux命令?

    强大系统linux命令?,系统,工作,地址,信息,命令,管理,名称,位置,目录,控制台,l

    退出linux系统命令?

    退出linux系统命令?,系统,状态,工作,档案,命令,电脑,工具,基础,信息,时间,lin

    linux系统cmp命令?

    linux系统cmp命令?,系统,工作,标准,信息,命令,一致,目录,指令,功能,文件,请问