package TestScript;
……
//如果该测试用例需要对View按钮和Home按钮做更多的操作,可以直接从缓存中获取这两个对象,而无需再一次搜索
public class CacheVer1 extends CacheVer1Helper
{
public void testMain(Object[] args)
{
WordWindow word = new WordWindow();
word.getViewButton().click();
word.getHomeButton().click();
}
}
接下来将探讨一下如何在该对象缓存机制的基础上进行改进,再进一步的提高动态搜索的性能呢?我们注意到,动态搜索的原理类似于从某个节点开始,对这个节点以下的所有节点进行遍历,把所有满足条件的对象都返回。一般在动态搜索前,我们会获取测试应用的窗口作为根节点,对所有需要的对象进行搜索,这样的操作十分耗时。现在我们有了一个按照对象层次存储的缓存,就可以利用它来减少搜索的时间。
具体实现如下:
使用被测试应用的顶层窗口对象作为根对象存储。
在 ObjectMap 中分析需要被查找的对象
如果有一组对象具有相同的祖先节点,那么把离它们最近的祖先节点对象存储到 cache 中
当需要获取这组对象中的某一个时,先或者事先存储的祖先节点,然后从这个祖先节点开始进行动态搜索。
这种机制会减少很多动态搜索所涉及到的层次,进一步减少了动态搜索需要的时间。
我们建立一个新的 WordWindowVer2 对象作为缓存对象。我们的示例很简单,只有一个缓存对象。在真实的项目中,根据对象的复杂程度,我们会需要一种设计模式更好的组织更多的缓存对象。
文章来源于领测软件测试网 https://www.ltesting.net/