Automated tests 如何处理对象中的更改';自动测试中的结构?

Automated tests 如何处理对象中的更改';自动测试中的结构?,automated-tests,ui-automation,qtp,testcomplete,Automated Tests,Ui Automation,Qtp,Testcomplete,我很想知道,当您创建一个自动化测试用例时,摆脱对应用程序内部结构的依赖是多么可行。或者,当开发人员修改部分代码以修复bug时,您可能需要重写测试用例,等等。 我们可以基于应用程序内部对象结构编写几个自动化测试用例,但假设对象层次结构在6个月左右发生变化,我们如何处理此类问题 我不能代表其他测试工具,但至少在QTP的情况下,测试工具在应用程序上引入了一个抽象级别,因此应用程序中的非功能性更改通常(但不总是)不会影响测试工具识别对象的方式 例如,在QTP中,所有web元素都被视为文档的直接子元素,因

我很想知道,当您创建一个自动化测试用例时,摆脱对应用程序内部结构的依赖是多么可行。或者,当开发人员修改部分代码以修复bug时,您可能需要重写测试用例,等等。
我们可以基于应用程序内部对象结构编写几个自动化测试用例,但假设对象层次结构在6个月左右发生变化,我们如何处理此类问题

我不能代表其他测试工具,但至少在QTP的情况下,测试工具在应用程序上引入了一个抽象级别,因此应用程序中的非功能性更改通常(但不总是)不会影响测试工具识别对象的方式


例如,在QTP中,所有web元素都被视为文档的直接子元素,因此DOM中的更改(例如附加的
s)不会更改对象的描述。

在TestComplete中,有两种方法可以确保更改的应用程序结构不会破坏您的测试

  • 可以设置名称映射功能的别名树。在这种情况下,如果更改了应用程序结构,则需要适当地修改别名树,并且测试将保持工作状态,而无需修改它们

  • 您可以使用名称映射的扩展查找功能来忽略实际对象树的部分,并在更深层次上搜索所需的对象


  • 由于DOM结构的更改,我两次丢失了所有工作,这就是我被迫做的事情:

    每次需要处理对象时,我都会使用对象ID的
    Find
    功能,在
    页面上搜索对象。这样,每当DOM更新时,我的测试仍然可以顺利运行。
    唯一会破坏我的测试的事情是如果对象的ID被更改,但这不太可能发生


    您可以找到一些我使用的助手函数的示例。

    可能重复抱歉,我没有在发布的链接中看到我的答案。我试图理解我们需要如何处理这些问题。有什么指针吗?如果你通过公共接口测试你的程序,那么当实现细节改变时,单元测试就不需要改变了。我不执行单元测试。我使用TestComplete或QTP等工具执行功能自动化测试。没错,它们是文档的子文档。那么基于windows的应用程序呢。一个按钮可以嵌套在其相应的主父按钮下面的多个层中。在一些复杂的C#WPF类应用程序中就是这样。同意!我们还可以使用其他方法吗?我们可以执行find,findall,findallchildren操作来定位一个孩子。正则表达式或通配符匹配在某种程度上应该对我们有所帮助。但到那时,我们编写的测试已经失败了。当对象树发生变化时,自动化工程师是否经常重新编写测试用例?是的,保持对象映射方案更新是QA工程师的一项常见任务。至于Find方法,您确实可以使用它们。但是,名称映射功能以更方便的方式提供相同的功能。最严重的问题是,新用户不容易理解如何使用这个强大的功能。