2010-07-01 66 views
2

(这可能是在TestComplete论坛更好,但我想我会在这里给它一个镜头反正)制作一个自定义的控制TestComplete的可测试性

我们期待在我们的2010 德尔福的自动化测试申请与TestComplete。我们的应用程序使用的主要控件是我们自己的自定义控件,它直接从TCustomControl派生。 (作为参考,控件就像是一个用于显示其中带有文本的框的控制工具,可以选择这些框,控件是完全自定义的,包括选择)。

我们来使这个更TestComplete友好,所以我们可以读出来的数据看的(例如,什么样的数据到控件加载,选择什么样的数据)

我还要提到的是我们的应用程序使用MVC架构并大量使用接口。 TestCompletes调试代理似乎无法返回有关接口的任何类型信息,因此我们无法从中获取任何数据。我怀疑这是我们的问题

的我正在考虑这两种方法根:

  1. 添加新的属性,将返回关于当前选定框(ES)信息的控制。例如文本框中的位置,屏幕上的位置,分层路径,并通过TestCompletes调试代理访问它们。

  2. 考虑创建一个自定义的控件添加对TestComplete(我什至不知道你可以用Delphi控制做到这一点)

与第一种方法的问题是连接器会经常elimate性质并在没有被使用时起作用。我们希望使用我们的发布版本进行测试,而不是调试版本。

有没有人对此有任何建议或有这种类型的经验?

感谢

编辑:我刚读SDK帮助和自定义控制插件只能用于.NET和WPF控件创建。

回答

2

你对调试信息是正确的 - 你可以从发布版本中删除它。因此,你将测试一个发布版本并同时访问内部。
关于这种情况的说明:“链接器通常会在不使用属性和功能的情况下使其变得更加灵活。”你可以在这里作弊,使链接器为这些功能生成调试信息:

  1. 使功能发布。链接器不会触及已发布的元素。
  2. 使功能变得虚拟。链接器不排除虚拟方法。
  3. 在您的代码中的某处调用您的函数。包括,而不实际调用任何东西在你的代码中调用,你可以做这样的事情: 1:
 
var t: Boolean; 
begin 
    t := False; 
    if t = True then 
    TheFunctionThatNeverExecutes(); 
... 
end; 
2

您应该重新考虑您决定使用发布版本进行测试。原因是TestComplete需要一些神奇的东西来让你的测试生活变得更简单,而你不希望这种魔法出现在发布版本中。因此,如果您可以详细说明不使用调试版本进行测试的原因,我们可以尝试找到解决方案来撤销此决定。如果只显示TestComplete的所有可用功能,结果可能是您可以访问控件的所有相关数据。

回到原来的问题:您可以通过创建一些特殊的类来封装接口,从而使TestComplete中的属性可用,从而克服接口问题。

创建一个小的(可能不可见的)测试表单,您可以集中访问这些类的实例。 (现在是发布模式链接)仅在调试模式下创建此表单,因此,如果仔细设计,只有在需要进行测试时才链接相关代码。

+0

使用一个发布版本几个原因。这是我们的功能测试,我们希望在相同的构建客户将获得。发行版和调试版本之间可能存在轻微的行为差异,例如调试版本可能跳过许可检查。 2.根据TestComplete 7帮助,您可以使用发布配置来构建您的应用程序,但也包括td32信息。然后,您可以使用striptds.exe util将调试信息移除到其自己的文件中。 关于包装界面的建议很有意思,我会看看这个。 – Jamie 2010-07-01 12:22:42