这里只是借用MVC这个名字,其实和web应用的mvc模式不是一个概念
M是model,是数据模型,从测试来讲包含测试数据和测试对象数据。
-测试数据管理。在数据驱动的场景下可能要用到大量测试数据,可以是随机或特定约束下生成的,或者从外部导入。无论哪种都需要支持类和方法来生成,存储,操纵或转换。
测试数据的格式常见的有csv,xml,excel,数据库等。在java里配置数据一般存在xml或者properties文件,便于读取和管理,而大量的数据纪录则用csv比较经济。数据结构来讲映射到对象比多维数组更便于检索,但开销也大一些。
数据库存测试数据增加了依赖性,但是方便复杂的查询。各种结构可谓各有利弊,从个人实践上讲csv是常用的输入输出格式,其中一个重要因素是csv转换excel非常方便。
-测试对象数据。QTP有动态和静态对象库的概念。这种机制有利于脚本的维护,完全可以借鉴到我们自己的框架设计体系中来。selenium里可以标示网页对象的是Locator,webdriver里是By。类型不外乎name,id,class,xpath,jquery locator等,描述方式接近于QTP的描述性标示。Terrillium 框架采用了groovy混合编程,是利用了脚本语言在描述层次对象上的灵活性。假如用java实现的话也可以用递归的方式来检查组合对象,比如表单。表单对象有若干子对象,比如输入框,提交按钮,下拉框等。一个一个对象检查有些累赘,改进后伪代码如下
checkCombObject(WebObject object){
if(object.hasChildren()){
for(Object obj : object.allChildren){
checkCombObject(obj);
}
}
assertObjectMatch(expectedObj, object);
}
这样一行代码可以检查整个表单
checkCombObject(webForm);
先写到这里,下次再写V(View)和C(Control)