论文部分内容阅读
Web应用的质量保证是Web应用开发的一个关键问题和研究热点,而测试是保证Web应用质量的一种重要途径。与传统的软件相比,Web应用更加复杂。它是一种具有复杂用户界面的交互性很强的软件,软件的后台具有许多按不同方式组合的构件。随着Web应用的规模和复杂程度不断提高,Web应用越来越难以开发、管理和维护。现有的Web应用测试工具大多数是基于程序或源代码的静态验证和度量工具,一般不支持测试用例的自动生成。测试用例在软件测试中具有重要的作用,是软件测试质量稳定的根本保障。基于规格说明的测试可以用来确保“程序正确地实现了其需求”,还为测试用例的重用提供了可能,也使得测试工作在整个软件生命期中都可以并行地开展,从而提高软件测试的效率。由于形式规格说明语言提供了一种精确的、一致的、易于被机器处理的表示来描述软件需求规格说明,用形式规格说明作为测试用例的来源将会使得测试用例的自动生成变为可能。本文采用形式方法研究基于用户界面规格说明的Web应用建模及其测试用例生成。软件规格说明精确和抽象地定义了软件的功能和结构,为测试提供了软件产品功能方面的重要信息。本文使用面向对象的形式规格说明语言Object-Z来描述规格说明,研究从用户功能规格说明和用户界面的规格说明生成测试用例的方法和技术。构建了基于规格说明的测试用例生成工具原型,力图实现Web应用测试用例生成的自动化。用户功能需求描述了用户使用软件必须要完成的任务,是最基本的需求。本文使用基于任务的需求模型描述用户的功能需求。整个系统被描述成一个Object-Z的类,类中的操作为不同的用户所具有的功能。用户界面的规格说明描述了最终用户和软件的交互,它包括了用户在软件上可能执行的动作。用户界面的规格说明是功能规格说明的扩展。本文提出了对Web应用的用户界面进行形式化描述的方法,形式的用户界面规格说明有利于验证和测试用例的自动生成。使用Object-Z说明了Web页面上的常用控件和Web页面。通过扩展Object-Z,在附加谓词中结合用户动作标记(User Action Notation,UAN)来说明用户界面的设计,并对UAN进行了扩充,加入了Web应用中常见的对数据和用户动作的约束。浏览器上的按钮在方便用户浏览信息的同时,也会给Web应用的导航和功能带来影响,特别是在安全性上的影响。本文使用Object-Z构建包含浏览器交互的Web应用的完整形式导航模型,定义了与此相关的各种用户行为。该模型具有Web应用中的会话控制和浏览器的缓存机制,为Web应用的导航的测试和验证提供了基础。Object-Z是形式规格说明语言,抽象层次比较高,具有面向对象的特征,适合进行建模。相比之下,FSM更接近实现,通常用来表示测试模型并产生测试用例。本文提出了从功能规格说明和用户界面规格说明构建分层的FSM的方法,有效的解决了测试模型的状态爆炸,并利用分层的FSM和测试充分性准则产生测试用例。关键字驱动的测试在工业上得到了广泛的应用,已有很多基于关键字驱动的测试工具,但是已有的工具不能自动产生测试用例。本文从用户界面规格说明出发,提出了基于关键字驱动的测试用例生成方法。该方法定义了逻辑关键字和基本关键字,逻辑关键字表示了测试的功能,基本关键字表示了测试某一功能的细节,这有利于测试的管理和实施。提出了基本关键字测试序列的选择准则,并对准则的揭错能力也进行了分析。本文详细分析了布尔运算符(BOR)和布尔关系运算符(BRO)逻辑覆盖测试准则,并在产生符合这两种测试充分性准则的约束集的算法中增加了对元素和集合的关系运算符{∈,? ,?,?}的处理,扩大了算法的适用范围。针对浏览器上的一些按钮(后退、前进和刷新)可能对Web应用的功能和安全带来影响的问题,本文提出了在已产生的测试用例(不考虑浏览器)基础上产生包含浏览器交互的新的测试用例的方法,定义了和浏览器交互相关的页面性质,给出了产生导航树的算法,设计了和Web页面性质相关的测试充分性准则。相比传统软件,Web应用的可靠性更为重要。软件统计测试是高可靠软件测试的重要内容。本文把统计覆盖率应用到分层的FSM模型中,给出了测试用例集合的统计覆盖率的计算方法,使得通过该测试用例集测试的软件可以被评估其可靠性。为了实现和验证本文提出的方法,本文设计并实现了一个规格说明编辑和测试用例生成方法的系统原型Object-ZTest。通过对规格说明的分析,产生抽象测试用例,也就是约束谓词,根据抽象测试用例不同的特征,采用线性规划技术和数据库查询技术对抽象的测试用例进行实例化。针对集合和元素关系的约束,利用数据库查询技术从测试数据库中获取数据,对抽象的测试用例进行实例化。而对其他抽象的测试用例,则构建线性规划模型,通过模型的求解实现实例化。