论文部分内容阅读
随着软件技术的发展,Web应用已经变得越来越庞大和复杂,Web页面也以指数级增长,而开发周期却越来越短、维护更新也更为频繁,这就导致目前实际开发中Web页面常用的单元测试方法在面对动态Web程序呈现的新特性如输入空间巨大、内容动态生成、控制流可变性等呈现出低效、重复的测试局限性。获得有效的测试数据和提高程序缺陷发现率是保障软件测试有效性的两种最重要的手段,本文从这两点着手,研究一种能自动分析程序生成测试数据并验证Web动态页程序是否发生异常的自动检测方法,使得在单元测试中就能尽早且尽可能发现Web输出异常,提高Web应用程序测试的客观性及有效性。本文在对动态页的特点及其输出异常表现进行分析的基础上,首先提出一种自动检测单个Web动态页输出异常的策略,该策略是基于Concolic方法自动生成输入数据驱动程序运行并以html语法为测试规范验证输出,实现对Web动态页输出异常的自动检测。在该策略中所生成的输入数据能驱动程序执行所有的可达状态,从而深度遍历被测程序的所有分支,有效地解决目前web单元测试中面对巨大输入空间测试输入难以选择的问题,避免了对人工经验的过大依赖,减小了测试盲目性。其次在针对多个动态页的模块级检测方面,探讨分析多个动态页之间主要是通过状态变量传递来维系的,在提出的针对单个动态页输出异常检测策略的基础上,引入状态转换概念,提出一种针对多个动态页模块级检测策略,该策略把系统状态变量和输入数据共同作为测试数据驱动程序运行,实时运行检测程序,综合考虑实时运行环境中用户输入、系统变量等各种因素不同组合下程序是否发生输出异常,使得该策略能检测到多种类型的异常提高了Web应用程序的缺陷发现率。最后,根据Web应用动态页输出异常检测的策略设计一个对Web动态页输出进行检测的原型系统框架实现对于动态页程序输出异常的自动检测。