Web网站的测试n  基于 Web 的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从终用户的角度进行安全性和可用性测试,从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于Web的系统测试方法。

  n  对Web网站测试所采用的测试方法与策略有哪些?

  ??黑盒测试、白盒测试、静态测试和动态测试都有可能用到,还会包括面向对象测试技术的运用。

  n  Web网站的测试是一项复杂的任务,如何进行?

  ??初的起点是把网页或整个网站当作一个黑盒子。

  网页测试n  文字测试:检查用户等级、术语、内容、准确度以及内容的时效性。

  n  链接测试:测试所有链接是否能按照指示的那样正确链接到应当链接的页面;测试所链接的页面是否存在;确保不存在孤立页面(即没有链接指向的页面)。

  n  图形、图像测试:确保有明确的用途;颜色的搭配;图片的大小和质量;所有图形是否能够正确载入和显示。

  n  表单测试:检测域的大小;数据接收是否正确;可选域是否真正可选;提交操作的完整性等。

  n  动态内容测试(要求能查看到程序源代码)

  n  Cookies测试:Cookies是否起作用;是否按预定的时间进行保存;刷新对Cookies有何影响等。

  网站测试n  数据库测试:在使用了数据库的Web系统中,测试由用户提交的表单信息不正确而引起的数据一致性问题;测试由网络速度或程序设计等问题引起的输出故障。

  n  服务器性能及负载(压力)测试:通过应用模拟的方法实现,即通过某种程序方法(工具软件)模拟上万个链接和下载来判断服务器的响应时间、并发访问数量等性能与负载能力。

  n  可用性测试:包括整体界面测试和导航测试。

  n  安全性测试:测试有效和无效的用户名和密码;测试Web应用系统是否有超时的限制;测试相关信息是否写进了日志文件、是否可追踪;在使用了安全套接字时,测试加密是否正确;在没有经过授权时,测试是否能拒绝在服务器端放置和编辑脚本。

  对Web进行压力测试n  Web服务测试原理n  Web压力测试压力测试是系统测试的一部分,要被设计为通过应用很大的工作负载来使软件超负荷运转,其目的是要弄清楚被测试的Web服务是不是不仅能做预期应能做的事,而且在被施加了某些高强度压力的情况下仍能继续正常运行。如果压力测试通过对软件保持高强度的使用(不超过性能统计数字确定的限制)能够有效执行,那么它经常能够发现许多其它测试无法发现的隐蔽错误。

  n  压力下的错误类型?  内存泄露??通常要求操作重复非常多的次数后才会出现?  并发与同步n  有效的压力测试系统的关键条件?  重复:是一遍又一遍地执行某个操作或功能。这将确定一个操作能否正常执行,并且能否继续在每次执行时都表现正常。?  并发:是在同一时间内执行多个操作。由并发引起的错误只能通过执行多个代码示例才能测出来,测试时要同时遍历多条代码路径。?  量级:要考虑到每个操作中的负载量,操作自身应尽可能给被测软件系统增加压力,即:尽量使单独的操作进行高强度的使用,增加操作的量级。?  随机变化:随机使用前面条件中的无数变化形式,能够在每次测试运行时应用许多不同的代码路径。

  使用WAS进行Web负载测试面向对象的基本概念n  对象??是指包含了一组属性以及对这些属性的操作的封装体。属性可以是数据,也可以是另一个对象;每个对象都有它自己的属性值,表示该对象的状态;对象中的属性只能通过该对象所提供的操作来存取或修改。对象所具有的状态、行为、标识三个基本特征,分别对应与对象的属性、方法和对象名。

  n  对象是软件开发期间测试的直接目标。

  n  面向对象软件测试所关注的焦点:(1)对象的行为是否符合它的规定说明;(2)该对象与和它相关的对象是否协同工作。

  n  类??是具有相同属性和相同行为的对象的集合。面向对象程序运行的基本元素是对象,而类则是用来定义对象这一基本元素的。

  n  在面向对象程序设计中,类是一个独立的程序单位,它有一个类名,还包括用于描述对象属性的成员变量和用于描述对象行为的成员函数。

  n  类是对象的抽象定义,它定义了用户将要如何创建对象的方法。使用类时必须先实例化?用对象名创建类的实例,再通过这个对象去访问类的成员变量,去调用类的成员函数。

  n  消息??是对象的操作将要执行的一种请求,也被称为成员函数调用或者方法调用。面向对象的程序的执行实际上是执行一个由消息连接起来的方法序列。?   “发送消息M到对象N” =“调用N对象的M方法”

  n  一个对象通过向另一个对象发送消息来请求其服务,对象之间的协同工作是通过互相传送消息来完成的。

  n  一个消息通常包括接收对象名、调用的操作名和适当参数(如有必要)。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样去完成操作。消息完全由接收者解释,接收者独立决定采用什么方法来完成所需操作。

  n  从测试的角度看,关于消息有下面的结论:(1)消息的发送者决定何时进行发送消息,可能会做出错误的决定;(2)消息的接收者可能收到非预期的特定消息,并做出不正确地反映;(3)消息可能含有参数。在处理一条消息时,参数能被接收者使用或修改。若传递的参数是对象,那么在消息被处理前和处理后,对象必须处于正确的状态,而且必须是接收者所期望的接口。

  n  接口??是行为声明的集合。接口是由一些规范构成的,规范定义了类的一套完整的公共行为。

  n  从测试的角度,关于接口有下面的结论:(1)接口封装了操作的说明。如果这一接口包含的行为和类的行为不相符,那么这一接口的说明有问题。

  (2)接口非孤立,它与其它的接口和类有一定的关系。一个接口可以指定一个行为的参数类型,使得实现该接口的类可以被当作一个参数进行传递。

  n  继承??是指在某个类的层次关联中,不同的类共享属性和操作的一种机制。继承允许一个新的类(称为子类)在一个已有的类(称为父类或者基类)的基础上进行定义。一个父类可以有多个子类,这些子类都是父类的特例。父类描述了这些子类的公共属性和操作,子类中还可以定义它自己的属性和操作。

  n  从测试的角度来看,继承包含以下内容:(1)继承提供一种机制,通过这种机制,潜在的错误能够从一个类传递到它的派生类。

  (2)子类是从父类继承过来的,子类也继承了父类的属性和操作。因此,可以用测试父类的方法对子类进行测试。

  n  多态??是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果。多态提供了将类看作是一种或多种类型的能力,它定义了用来支持多种不同类型所适应的策略。多态可分为包含多态与参数多态。

  n  与多态密切相关的一个概念是动态绑定。传统程序设计语言把过程调用与目标代码的连接放在程序运行前进行,称为静态绑定。而动态绑定则是把这种连接推迟到运行时才进行。

  n  在程序运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。

  n  自动化测试的定义:使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施。

  n  在进行自动化测试前,首先要建立一个对软件测试自动化的认识观。软件测试工具能提高测试效率、覆盖率和可靠性等,自动化测试虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充。自动化测试绝不能代替手工测试,它们各有各自的特点,其测试对象和测试范围都不一样:?  在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性测试时,多采用黑盒测试的手工测试方法。?  单元测试、集成测试、系统负载测试、性能测试、稳定性测试、可靠性测试等比较适合采用自动化测试。?  那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合自动化测试。?  工具本身并没有想象力和灵活性,根据报道,自动化测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷。?  自动化测试工具在进行功能测试时,其准确的含义是回归测试工具,这时工具不能发现更多的新问题,但可以保证对已经测试过部分的准确性和客观性。

  多数情况下,手工测试和自动化测试应该相结合,以有效的方法来完成测试任务。

  n  通常,当软件开发过程具有下列情况时,需要考虑引入自动化测试:(1)非常重要的测试;(2)涉及范围很广的测试;(3)对主要功能的测试;(4)容易自动化的测试;(5)很快有回报的测试;(6)运行频繁的测试;(7)测试个案的生成,包括测试输入、测试输出、测试操作指令等;(8)测试的执行与控制,包括单机运行和网络多机分布式的运行,在节假日的运行,测试个案调用控制,测试对象、测试范围与测试版本的控制等;(9)测试结果与标准输出进行对比;(10)不吻合预期的测试结果的分析、记录、分类和报告,及总体测试状况的统计及报表的产生。

  自动化测试的原理和方法n  软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程、操作行为,或者类似于编译系统那样对计算机程序进行检查。

  n  软件测试自动化实现的原理和方法主要有:直接对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术、虚拟用户技术和测试管理技术。

  (1)代码分析代码分析类似于高级编译系统,一般针对不同的高级语言去构造分析工具,在工具中定义类、对象、函数、变量等定义规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。

  (2)捕获和回放代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。

  回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。

  n  关于自动化测试中的“录制?回放”技术目前的自动化负载测试解决方案几乎都是采用 “录制-回放”的技术。

  所谓的“录制-回放”技术,是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序 (Script) .然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器可以模拟出成百上千的用户对应用系统进行负载能力的测试。

  常用测试工具概要n  ParasoftC++ Test n  TureCoverage n  QACenter n  DataFactory n  WinRunner n  MS ACT n  RationalRobot n  PureLoad