第一章 概述
1、灰盒测试方法:
(1)黑盒白盒测试的局限性
- 黑盒测试在发现某些类型的错误,例如源代码级的数据流错误或边界条件错误方面是低效的。
- 白盒测试不能显示操作环境、兼容性、与时间有关的错误和可用性等宏观的质量风险。
(2)灰盒测试的概念
- 灰盒测试使用推断的或不完整的结构或设计信息来进行黑盒测试。——Dick Bender
- 灰盒测试是在算法、内部状态、体系结构或其它程序行为等高级描述知识的基础上设计的测试。——Doug Hoffman
- 灰盒测试涉及输入和输出,但使用关于代码或程序操作等通常在测试人员视野之外的信息设计测试——Cem Kaner
(3)灰盒测试的特点
- 灰盒测试考虑了用户端、特定的系统知识和操作环境,在系统组件的协同性环境中评价应用软件的设计。
- 灰盒测试非常适合Web测试,因为他涉及到高层设计、环境和互操作性条件,能发现容易被黑和分析和白盒分析忽略的问题,特别是端对端信息流的问题、分布式硬软件配置问题以及兼容性问题。
2、Web测试需掌握的技能和知识
(1)良好的软件测试技能
(2)应用系统的知识
(3)Web技术知识
(4)理解测试类型及其对Web应用的适用性
(5)一些Web应用特有的错误类型
(6)有效的工具以及他们的适用性知识
第二章 Web测试与传统测试的比较
1、Web系统域传统的客户/服务系统之间的区别
系统 |
传统客户/服务器系统 |
Web系统 |
客户端应用程序 |
客户端是平台专用的 |
应用程序不针对平台开发,平台专用的Web浏览器是Web浏览器唱上的责任 |
事件处理 |
在图形界面和事件驱动双模型中,测试事件驱动应用程序十分复杂 |
基于浏览器的应用程序对键盘事件的支持非常有限 |
应用程序实例和Windows处理 |
标准的基于事件的应用程序可以支持多个实例,在同一个实例中可能可以打开多个窗口 |
Web浏览器界面是单调的和非线性的,不支持多文档界面 |
用户界面控件 |
|
利用ActiveX控件、脚本、CSS和其他辅助性应用程序加入浏览器基本功能之外的特殊效果,也带来不同浏览器之间的兼容性问题。 |
2、Web系统体系结构
- 同一系统中不同的计算机可能使用不同操作系统、不同速度的CPU、总线、I/O接口
- 在最高层,Web系统可能包含各种操作系统、Web服务器、应用服务器、中间件、电子商务服务器、数据库服务器、主要的企业资源规划(ERP)组件、防火墙和浏览器。
- Web系统软件的组合可能包含以下几种:(1)多个操作系统(2)多个软件包(3)多个软件组件(4)多个服务器类型、品牌和模型(5)多个浏览器品牌和版本
3、服务器端应用
(1)服务器端应用不存在与系统最终用户相交互的用户界面:最终用户只是与客户端应用程序进行交互,客户端通过通信协议、应用编程接口和其它接口标准与服务器端应用进行交互以调用其功能和访问数据。
(2)服务器端应用是自动运行的。
- 对于测试人员来说,服务器端应用就是一个黑盒子。
- 一种用来提高错误重现能力的方法是记录事件日志。
4、分布式服务器配置
- 服务器软件可能分布在若干个物理服务器单元上,使测试更为复杂,应该详细列出所有可能组合的矩阵,并在每种配置上进行测试一确保应用的功能是完整的。
- 分布式服务器的配置包括:单单元模型、双单元模型、三单元模型。
5、程序错误的传播
- Web应用是由先前存在的对象或组件相互结合而构造出来的。因此,新创建的系统不仅继承了原有对象中的性能,也继承了原来对象中已有的错误。
- Web应用由于采用了基于组件的体系结构,Web应用特别容易出现错误共享。
- 从底层来看,这种问题对测试由两个主要的影响:
(1)已有对象或组件在被其它的应用或对象引用时必须经过了全面测试;
(2)必须进行过全面的回归测试。
6、后端数据库访问
- 数据库以表记录的形式存储数据,借助数据库引擎,应用通过获得记录集来访问数据,无需知道实际的数据文件位置和名称。
- Web系统在的数据经常是分布式的,使用关系型数据库以便对数据的高效访问和操纵。
- 采用关系型数据库的Web系统可以在应用服务器级、数据库服务器级、表级和基于用户的优先级上施加安全控制。
7、瘦客户机处理和胖客户机处理
- 瘦客户和胖客户端是指在哪儿存放和运行应用程序及组件。
- 瘦客户机中将处理集中在服务器端进行,消除了不兼容性问题。
- 胖客户端中客户端及运行应用程序的用户界面部分,也执行业务逻辑,需要考虑不兼容问题。
- 应用的测试问题应该围绕功能、兼容性和性能等几方面进行折中考虑。
8、互操作性问题
- 互操作性是指系统或系统中的组件与其它系统或组件相交互和无缝协作的能力。
- 一般通过某些应用编程接口、通信协议标准、接口转换技术(如CORBA和DCOM)等来实现。
9、测试注意事项
除了传统的测试之外,Web测试还包括以下几个方面:
(1)Web用户界面的实现;
(2)系统集成;
(3)服务器端和客户端安装;
(4)基于Web的帮助;
(5)配置和兼容性;
(6)数据库;
(7)安全性;
(8)性能、负载和强度。