当前位置:文档之家› 软件自动化测试原理

软件自动化测试原理


用Findbugs做Java代码的分析(续)
代码分析的实现
上述例子中没有执行代码,而是通过对代码的逐行扫描来 分析代码,找出问题。这种静态测试是通过事先所建立的 代码规则、由软件工具来自动执行。代码静态分析的关键 是建立各种规则,而这种规则的建立依赖于相应编程语言 的语法。
利用这些规则可以找出Java源程序的许多问题,如:没有 用到的变量、多余的变量创建操作、空的catch块等。为了 提高代码分析的效率,会把Java源代码解析成抽象语法树 (Abstract Syntax Tree, AST),由Java符号流(对象)构成 树型层次结构(语义层)。对一个规则的检验,就是对相 应的AST的一次遍历。
用IE Web Developer识别DOM对象
安装IE Web Developer 工具下载URL:/dominspector 使用IE Web Developer可以在IE浏览器内查看页面,获取 完整的DOM信息。打开IE浏览器,点击“查看”-->“浏览 器栏”-->“IE Web Developer”,启动后就可以看到当前页 面的结构,并查看页面的各个元素,如下图所示。

设置Java环境:安装JDK;配置环境变量 安装Eclipse:下载Eclipse软件包并解压 在Eclipse中安装Findbugs插件 URL:/eclipse
用Findbugs做Java代码的分析(续)
安装成功后,在Eclipse的“窗口”-->“首选项”中,展开 “Java”后发现Findbugs项,从中可以发现Findbugs定义了 很多种检查器(Detector),而且分为不同的模式(pattern)和 类型(category):纠错(correctness)、不合理的(dodgy)、不 好的实践(bad practice)、安全性(security)、性能 (performance)和多线程纠错(multithreaded correctness)等 问题。 使用Findbugs: 创建或打开一个Java项目 选择该项目并单击右键,从菜单中执行“Find bugs” 运行后的警告信息会显示在右下区域的Problems视图中 双击某条警告信息会自动定位到编辑器中对应的源代码行
3.5 脚本技术
脚本是一组测试工具执行的指令集合,也是计算机程序的 一种形式。脚本可以通过录制测试的操作产生,然后再做 修改,这样可以减少脚本编程的工作量;也可以直接用脚 本语言编写脚本。 自动化测试脚本和程序代码比较接近,包括指令和数据, 还包括其他内容,如: 同步,何时进行下一个输入; 比较信息,是测试验证点所需要的,包括比较什么、如何 比较及和谁比较; 捕获何种屏幕数据及存储在何处; 从何处读取测试数据; 控制信息等。
3.3 DOM对象识别
有些测试工具(如Selenium)直接访问Web浏览器,利用 脚本语言操纵浏览器和Web页面,这时就需要对DOM (Document Object Model, 文档对象模型)对象进行识别, 从而模拟用户控制浏览器中页面元素的操作。也只有获取 DOM对象的属性,才可以验证页面实际的表现,即确定实 际结果和期望结果是否一致。 DOM定义了HTML的标准对象集合,是HTML文档的编程 接口,与浏览器、平台、语言无关。DOM也就是定义了标 准的访问和操纵HTML对象的方式,使得其他程序或软件 可以访问页面的标准组件。DOM以层次结构组织节点、内 容等相关信息,从而将一个Web页面转换为一个基于树或 基于对象的多层次集合。
3.1 代码分析
代码分析类似于高级编译系统,一般是针对不同 的高级语言去构造分析工具,在工具中定义类、 对象、函数、变量和常量等各个方面的规则。 在分析时,通过对代码进行扫描和解析,找出不 符合编码规范的地方,从而给出错误信息和警告 信息。 还可以根据某种质量模型评价代码的质量,生成 系统的调用关系图,评估代码的复杂度等。
线性脚本是最简单的脚本,如同流水账那样描述测试过程, 一般由自动录制得来;而结构化脚本是对线性脚本的加工, 类似于结构化设计的程序,是脚本优化的必然途径之一。 而数据驱动脚本和关键字驱动脚本可以进一步提高脚本编 写的效率,极大地降低脚本维护的工作量。目前大多数测 试工具都支持数据驱动脚本和关键字驱动脚本。
软件自动化测试技术
软件技术教研室 杨鹏 yangp@
第3单元 软件自动化测试原理
3.1 代码分析 3.2 GUI对象识别 3.3 DOM对象识别 3.4 捕获和回放 3.5 脚本技术 3.6 自动比较技术
软件自动化测试的原理
自动化测试的实现方法,对于静态测试和动态测试有很大的 不同: 动态测试的自动化实现主要通过特定的程序来模拟软件的操 作过程或操作行为,然后对软件所做出的反应或输出结果进 行检查或验证。 静态测试的自动化实现是按照代码规范和软件开发的最佳实 践建立各种代码规则,然后依据这些规则对代码进行自动扫 描,发现和规则不匹配的各种问题。 软件测试自动化实现的原理和方法主要有:直接对代码进行 静态和动态分析、测试过程的捕获和回放、测试脚本技术、 自动比较技术、虚拟用户技术和测试管理技术等。
测试脚本的分类
测试脚本可以分为以下几类: 线性脚本:是录制手工执行的测试用例得到的脚本。 结构化脚本:类似于结构化程序设计,具有各种逻辑结构。 共享脚本:是指某个脚本可被多个测试用例使用。 数据驱动脚本:将测试输入存储在独立的数据文件中。 关键字驱动脚本:是数据驱动脚本的逻辑扩展。
用Findbugs做Java代码的分析
Findbugs是一个静态分析工具,它检查类或JAR文件,将 字节码与一组缺陷模式(Java代码规范)进行对比以发现 各种可能存在的问题。通过静态分析工具可以在不运行程 序的情况下对软件进行测试,更早地发现软件中的缺陷。 安装Findbugs(Findbugs可以独立运行,也可以作为 Eclipse的插件)
3.2 GUI对象识别
功能测试工具需要和用户界面打交道,就要能操作、控制 用户界面上的各种对象,所以大部分功能测试工具是基于 GUI对象识别技术来实现自动化测试的。
安装功能测试工具AutoIT v3 工具下载URL: 英文版:/site/autoit/downloads/ 中文版: AutoIT安装成功后,从“开始”-->“所有程序”-->“AutoIT v3”菜单中,选择执行“AutoIT窗口信息工具(AutoIT Window Info)”,就可以进行Windows对象识别的操作。
线性脚本
线性脚本是直接基于手工操作而录制的脚本,这种脚本包 含用户所做的所有键盘和鼠标操作。如果仅使用线性脚本 技术,所有录制的测试用例可以通过脚本完整的回放。 优点:不需要深入的工作或计划;可以加快开始自动化; 对实际执行操作可以审计跟踪;测试用户可以不必是编程 人员;提供良好的(软件或工具)演示。 缺点:过程烦琐,一切依赖于每次捕获的内容;测试输入 和比较是“捆绑”在脚本中的;无共享或重用脚本;容易 受 软件变化的影响;修改代价大,维护成本高;容易受意 外事件的影响,引起整个测试失败。 适用情况:演示或培训;执行量较少、且环境变化小的测 试;数据转换。
用AutoIT识别GUI对象
启动“AutoIT窗口信息工具”后,鼠标在Windows不同窗 口或对象上移动,AutoIT窗口信息工具会显示鼠标所指向 的对象信息。也可以移动查询工具来指定某个窗口、菜单、 快捷键、按钮、输入框、文字信息 等各种对象,从而获得如右图所示 的信息。
在操作中,会发现它可以识别工具 栏,但不能识别工具栏的某个具体 对象(如主页、打印机等图标), 而对浏览器内的对象更是无能为力。
用Firebug识别DOM对象(续)
3.4 捕获和回放
代码分析是一种白盒测试的自动化方法,捕获和回放则是 一种黑盒测试的自动化方法。捕获是将用户每一步操作都 记录下来。这种记录的方式有两种:程序用户界面的像素 坐标或程序显示对象(窗口、按钮、滚动条等)的位置, 以及相对应的操作、状态变化或是属性变化。所有的记录 转换为一种脚本语言所描述的过程,以模拟用户的操作。 回放时,将脚本语言所描述的过程转换为屏幕上的操作, 然后将被测系统的输出记录下来同预先给定的标准结果比 较。这可以大大减轻黑盒测试的工作量,在迭代开发的过 程中,能够很好地进行回归测试。
用Firebug识别DOM对象
安装Firebug(工具下载URL:) 最好的DOM识别工具是Firebug,它可以JavaScript文件 方式支持在IE、Opera和Safari等浏览器中运行,但推荐 作为Firefox的一个插件使用。Firebug功能强大,集HTML 查看和编辑、JavaScript控制台、CSS /script /DOM查看 器、网络状况监视器、测试于一体,可从各个不同的角度 剖析Web页面内部的细节层面。 打开Firefox工具下的Firebug后,在浏览器载入任何页面 时,Firebug都可以生成DOM树,点击HTML标签,鼠标 只要停在某个对象上,浏览器页面上相应的对象就会被明 显标识出来。点击某个对象属性的参数, Firebug还可以 编辑HTML。如果点击DOM标签,可以更详细的了解页面 的DOM结和控制的自动化测试工具,一般在脚本 语言中采用Windows API(Application Programming Interface, 应用程序编程接口)函数调用的方法来实现。 Windows API涵盖了系统的管理、诊断、图形和多媒体、 网络、安全性等各个方面,但在自动化测试工具中或对象 识别中,主要使用Windows User Interface(用户界面) 一类的API。这类函数封装了操作应用软件所需的接口函 数,包括键盘和鼠标操作的捕获,以及窗口、按钮、选择 项等的识别和操作。 自动化测试工具可以基于这些API函数,来完成对象的识 别和操作。
捕获和回放(续)
关于自动化测试中的“录制-回放”技术 目前的自动化负载测试解决方案几乎都是采用 “录 制-回放”的技术。
相关主题