《全面的系统测试理论方法介绍课件》由会员分享,可在线阅读,更多相关《全面的系统测试理论方法介绍课件(51页珍藏版)》请在金锄头文库上搜索。
1、系统测试系统测试 本章要点本章要点 系统测试的定义; 系统测试的组织与分工; 系统测试的类型; 系统测试的测试用例设计方法; 系统测试的案例分析。 本章目标本章目标 进一步理解系统测试和集成测试的区别;掌握系统测试的概念;熟悉主要的系统测试类型及其特点;了解系统测试的过程;重点理解如何把黑盒测试技术运用到系统测试中。系统测试概述系统测试概述 系统测试的根本任务就是要证明被测系统的功能和结构的稳定性;还要有一些非功能测试:性能测试、压力测试、可靠性测试等等。 最终目的是为了确保软件产品能够被用户或操作者接受。测试的主要目标不再是找出缺陷,而是证明其性能。 系统测试属于黑盒测试范畴,不再对软件的源
2、代码进行分析和测试。什么是系统测试 系统测试就是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。 系统测试的组织和分工系统测试的组织和分工 测试组组长:组织测试; 测试分析员:负责设计和实现测试脚本和测试用例; 测试者:负责执行测试脚本中记录的测试用例。 同时可以邀请客户代表参与系统测试,可以与客户建立一个
3、良好的平台,并且得到反馈信息。 过程:搭建好系统测试的软、硬件平台制定软件测试计划(与开发人员多多沟通)系统测试提交系统测试的大量输出的拷贝文档(包括测试结果记录表格、系统测试日志和全面的系统测试总结报告)。如何进行系统测试如何进行系统测试 系统测试过程要经历以下几个阶段: 制定系统测试计划、设计系统测试、实施系统测试、执行系统测试和评估系统测试。(如图-1所示)图-1系统测试过程 与之对应的是如下的几个阶段:一、计划阶段:制定测试计划 二、设计阶段:对系统进行详细的测试分析,然后设计一些典型的,满足测试需求的测试用例;同时给出系统测试的大致过程。三、实施阶段:使用当前的软件版本进行测试脚本的
4、录制工作,确定软件的基线。 四、执行阶段:根据系统测试计划和事先设计好的系统测试用例,以及一定测试规程进行测试脚本的回放。五、评估阶段:进行评估,以确定系统测试是否通过。 系统测试分析 测试人员在做系统测试分析时,不妨分别从用户层、应用层、功能层、子系统层、协议层等几个层次入手: 1)用户层 用户层的测试核心应该围绕用户界面的规范性、友好性、可操作性,系统对用户支持的情况,以及数据的安全性等方面展开; 还应该注意可维护性测试和安全性测试。 2)应用层 主要是针对产品工程应用或行业应用的测试。 从系统应用的角度:对系统的兼容性、可靠性、 性能等进行的测试。 对整个系统的应用层测试:包含并发性能测
5、试、负 载测试、压力测试、强度测试、破坏性测试。3)功能层 测试是否已经实现需求规格说明中定义的功能, 以及系统功能间是否存在类似共享资源访问冲突。 4)子系统层 针对产品内部结构性能的测试。关注子系统 内部的性能,子系统间接口的瓶颈。5)协议/指标层 针对系统所支持的协议,进行协议一致性测试 和协议互通测试。系统测试环境系统测试环境软件测试环境构建的是否合理、稳定和具有代表性,将直接影响到软件测试结果的真实性、可靠性和正确性, 现阶段,应该构件效率高、灵活性好、可复用性强的可“复用”的测试环境。 测试前要保证测试软件的可靠性;保证系统软件、数据库、应用软件的可靠性和安全性;并且尽量减少镜像文
6、件的大小。系统测试类型系统测试类型 介绍17类系统测试类型 。 一、功能测试(Functional Test) 功能测试属于黑盒测试技术范畴,是系统测试中要进行的最基本的测试,它不用考虑软件内部的具体实现过程。 主要是根据产品的需求规格说明书和测试需求列表,验证产品是否符合产品的需求规格。需求规格说明是功能测试的基本输入。因此先对需求规格进行分析,明确功能测试的重点。可按照如下步骤进行: 为所有的功能需求(其中包括隐含的功能需求)加以标识; 为所有可能出现的功能异常进行分类分析并加以标识; 对前面表示的功能需求确定优先级。 对每个功能进行测试分析,分析其是否可测、采用何种测试方法、测试的入口条
7、件、可能的输入、预期输出等等。 是否需要开发脚本或借助工具录制脚本。 确定要对哪些测试使用自动化测试,对哪些测试使用手工测试。 功能测试用例是功能测试工作的核心,常见的设计方法有如下几种: 规范导出法 等价类划分法 边界值分析法 因果图 判定表 正交实验设计 基于风险的测试 错误猜测法 经常进行的功能测试项目如下: 1.页面链接检查 2.相关性检查 3.检查按钮的功能是否正确 4.字符串长度检查 5.字符类型检查 6.标点符号检查 7.中文字符处理 8.检查带出信息的完整性 9.信息重复 10.检查删除功能 11.检查添加和修改是否一致 12.检查修改重名 13.重复提交表单 14.检查多次使
8、用back键的情况 15. search检查 16.输入信息位置 17.上传下载文件检查 18.必填项检查 19.快捷键检查 20.回车键检查二、协议一致性测试二、协议一致性测试(Protocol Conformance Testing) 分布式系统中,很多计算功能的完成需要由分布式系统内的多台计算机相互进行通信、交换信息、协调合作来完成的,必须遵循一定的规则(协议)。 所以要进行协议测试。通常包括如下几种类型的协议测试: 1、协议一致性测试:检查所实现的系统是否与标准协议符合; 2、协议性能测试:检查协议实体的各种性能指标(如:数据传输率、连接时间、执行速度); 3、协议互操作性测试:验证相
9、同协议在不同实现的环境中的相容性; 4、协议健壮性测试:用来考验系统在外界因素下抗干扰的能力,例如通信中止、人为破坏等等。 三、性能测试(三、性能测试(Performance TestPerformance Test) 性能测试在软件的质量保证中起着重要的作用。可从三个方面进行性能测试:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。 1 1、应用在客户端性能的测试、应用在客户端性能的测试 目的是考察客户端应用的性能,测试的入口是客户端。 它主要包括并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发性能测试是重点。 并发性能测试的过程是一个负载测试和压力测
10、试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。 并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能; 当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。 例如:在每月20日左右是电话交费的高峰期,几千个收费网点同时启动。收费过程一般分为两步,首先要根据用户提出的电话号码来
11、查询出其当月产生费用,然后收取现金并将此用户修改为已交费状态。一个用户看起来简单的两个步骤,但当成百上千的终端,同时执行这样的操作时,情况就大不一样了,如此众多的交易同时发生,对应用程序本身、操作系统、中心数据库服务器、中间件服务器、网络设备的承受力都是一个严峻的考验。这种问题在软件测试阶段就应该得到解决。 并发性能测试前的准备工作并发性能测试前的准备工作 测试环境; 测试工具:并发性能测试工具有QALoad、 LoadRunner、Benchmark Factory 和Webstress等; 测试数据; 并发性能测试的种类与指标并发性能测试的种类与指标 并发性能测试的种类取决于并发性能测试工
12、具监控的对象,以QALoad自动化负载测试工具为例。 软件针对各种测试目标提供了DB2、DCOM、ODBC、ORACLE、NETLoad、Corba、QARun、SAP、SQLServer、Sybase、Telnet、 TUXEDO、UNIFACE、WinSock、WWW、 Java Script等不同的 监控对象,支持Windows和UNIX测试环境。 主要的测试指标包括交易处理性能指标和UNIX资源监控。 疲劳强度与大数据量测试疲劳强度与大数据量测试 疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作
13、量强度性能的过程。 大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。 2 2、应用在网络上性能的测试、应用在网络上性能的测试 该测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能分析和网络预测。下面我们分别从三个方面来阐述。 网络应用性能分析 目的就是准确展示网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的。 网络应用性能监控 主要用来分析关键应用程序的性能,定位问题的根源是在客
14、户端、服务器、应用程序还是网络。 网络预测 从网络管理软件获取网络拓扑结构、从现有的流量监控软件获取流量信息,这样可以得到现有网络的基本结构,并进行流量分析和冲突检测。 3 3、应用在服务器上性能的测试、应用在服务器上性能的测试 采用工具监控资源使用情况。 实施测试的目的是实现服务器设备、服务器操作系统、数据库系统、应用在服务器上性能的全面监控,测试原理如图-2。图-2 应用服务器上的性能测试原理图 对于安装UNIX操作系统的服务器来说,有如下资源监控指标:平均负载: 系统正常状态下,最后60秒同步进程的平均个数冲突率: 在以太网上监测到的每秒冲突数进程/线程交换率: 进程和线程之间每秒交换次
15、数CPU利用率: CPU占用率()磁盘交换率: 磁盘交换速率接收包错误率: 接收以太网数据包时每秒错误数包输入率: 每秒输入的以太网数据包数目中断速率: CPU每秒处理的中断数输出包错误率: 发送以太网数据包时每秒错误数包输入率: 每秒输出的以太网数据包数目读入内存页速率: 物理内存中每秒读入内存页的数目写出内存页速率: 每秒从物理内存中写到页文件中的内存页数目或者从物理内存中删掉的内存页数目内存页交换速率: 每秒写入内存页和从物理内存中读出页的个数进程入交换率: 交换区输入的进程数目进程出交换率: 交换区输出的进程数目系统CPU利用率: 系统的CPU占用率()用户CPU利用率: 用户模式下的
16、CPU占用率()磁盘阻塞: 磁盘每秒阻塞的字节数四、压力测试四、压力测试 压力测试又称强度测试,是在各种资源超负荷情况下观察系统的运行情况。在压力测试过程中,测试人员主要关注的是非正常资源占用的情况下系统的处理时间。 注意:区分压力测试和容量测试五、容量测试五、容量测试 容量测试是面向数据的,在系统正常运行的范围内测试并确定系统能够处理的数据容量。也就是观察系统承受超额的数据容量的能力。六、安全性测试六、安全性测试 要验证系统内的保护机制能否抵御入侵者的攻击。 所谓的系统安全性就是让系统非法入侵者花费更多的时间、付出更大的代价来交换其所获得的系统信息,即让非法者获得的一切信息内容贬值。 评价标
17、准:有效性;生存性;精确性;出错反应时间;吞吐量 七、恢复性测试七、恢复性测试 恢复性测试的目标就是验证系统从软件或者硬件失败中恢复的能力。在测试过程中会采取各种人工干预方式使软件出错,而不能正常工作,进而检验系统的恢复能力。 在进行恢复性测试时,同样首先要进行恢复性测试分析,经常要考虑的主要问题有如下几个:1)恢复期间的安全性过程;2)恢复处理日志方面的能力;3)当出现供电问题时的恢复能力;4)恢复操作后系统性能是否下降。 八、备份测试八、备份测试 备份测试为了验证系统在软件或者硬件失败的事件中备份其数据的能力,它属于恢复性测试的一个部分。九、九、GUIGUI测试测试 GUI(Graphic
18、 User Interface)即图形化用户接口, GUI测试只是软件产品界面测试的一部分,GUI测试分为两个部分,一方面要能使得界面实现与最初设计的情况相符合;另一方面是要确认界面能够正确处理事件。 进行GUI测试的时候我们需要面对的主要问题是:测试中可能的状态集繁多。 不易模拟的事件驱动。 不容易区分被测系统的界面与功能。 容易受主观影响。 无恰当的专业测试工具。 解决方法:在设计阶段将界面与功能隔离。这样就要把一个GUI系统分为3个层次:界面层、界面与功能的接口层、功能层。GUI测试则忽略功能层,主要针对界面层和界面与功能接口层上。 十、十、 健壮性测试健壮性测试 健壮性测试又被称为容错
19、性测试。主要是测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。 十一、十一、 兼容性测试兼容性测试 目的就是检验被测应用对其他应用或者系统的兼容性,比如在对一个共享资源(数据、数据文件或者内存)进行操作时,检测两个或多个系统需求能否正常工作以及相互交互使用。 在做兼容性测试时,要主要关注如下几个问题:当前系统可能运行在哪些不同的操作系统环境下?当前系统可能与哪些不同类型的数据库进行数据交换?当前系统可能运行在哪些不同的硬件配置的环境上?当前系统可能需要与哪些软件系统协同工作?这些软件系统可能的版本有哪些?是否需要综合测试?十二、可用性测试十二、可用性测试 可用性测试是面向用户的系统
20、测试。 进行可用性测试时,测试人员应该关注如下几个 方面:系统中是否存在繁琐的功能以及指令;安装过程是否复杂;错误信息提示内容是否详细;GUI接口是否标准;登录是否方便;需要用户记住内容的多少;帮助文本是否详细;页面风格是否一致;是否会造成理解上的歧义。执行的操作是否与预期的功能相符,如点击保存按钮时记录是否存入数据库。 十三、可安装性测试十三、可安装性测试 可安装性测试的目的就是要验证成功安装系统的能力。安装系统处在一个开发项目的结束也是被测系统的开始。十四、文档测试十四、文档测试 文档测试是对系统提交给用户的文档进行验证,并不是一般性的审查活动。通过文档测试保证用户文档的正确性并使得操作手
21、册能够准确无误。 文档测试可以辅助系统的可用性测试、可靠性测试,亦可提高系统的可维护性和可安装性。十五、在线帮助测试十五、在线帮助测试 在线帮助测试给用户提供一种实时的咨询服务。 十六、数据转换测试十六、数据转换测试 主要是为了验证已存在的数据转换并载入一个新的数据库是否有效。 十七、验收测试十七、验收测试 验收测试是将程序与其最初的需求及最终用户当前的需要进行比较的过程。 系统测试用例设计系统测试用例设计 系统测试用例设计基本上都是用黑盒测试方法,也就是说测试人员在作系统测试时无需知道系统是由结构化程序设计语言还是面向对象程序设计语言来实现的。 生成系统测试用例很简单,关键问题是:如何确定和
22、选择测试用例才能保证对系统进行充分的测试? 一、基于有限状态机的系统级线索测试用例设计 几个基本概念:原子系统功能,源ASF和汇ASF,系统线索,有限状态机。 基于线索的系统测试用例设计步骤如下: 寻找线索:如果系统复杂,那么首先画出系统的顶层状态机,在这一层状态对应的阶段中,表示转移的事件可以用逻辑事件来表示;然后再对顶层状态机的宏状态进行细化。 制定线索测试的策略: 一般采用自底向上的组织线索策略。首先,确定能够遍历底层状态机的线索路径;然后,再依次上升到上一级有限状态机,遍历线索路径。 测试用例的确定和测试的度量:在遍历线索路径的过程中,可以参照节点与边覆盖指标来选取线索并度量所选取的测
23、试用例是否能够对系统进行充分的测试。节点覆盖指标要求所选择的线索必须覆盖有限状态机的所有状态;边覆盖要求要求所选择的线索必须覆盖所有的转移(状态转换)。二、基于UML的系统级线索测试用例设计 基于这种方法进行系统测试的前提条件是假设系统已经通过统一建模语言定义和细化。 1、明确软件系统的功能,至少要使用显示功能、隐藏功能和装饰功能对其进行标识; 2、勾画出系统界面草图,证明系统功能可以得到用户界面的支持; 3、通过系统功能的描述开发出高层用例,包括测试用例的名称、参与者、功能类型和功能描述等四项信息; 4、在高层用例中增加“参与者行动”和“系统响应”两项信息; 5、扩展基本用例:增加“前提”和
24、“结果”信息,以及有关替代事件序列信息,以及与过程早期表示的系统功能的交叉引用信息等。另外一种扩展就是添加新的测试用例; 6、导出真实用例:如用“在password文本框中输入数字123”这样的短语来代替“输入正确密码”; 7、选择和确定测试用例。 在选择和确定测试用例时,要考虑是否达到了相应的覆盖标准。第一个层次:列出扩展基本用例和系统功能的关联矩阵;然后,找出可以覆盖所有功能的一组扩展基本用例;最后,通过使用这些扩展基本用例导出真实用例以及系统测试用例。第二个层次:通过所有真实用例开发测试用例,这是系统测试所应该达到的最低限度的测试覆盖要求。第三个层次:通过有限状态机导出测试用例。第四个层
25、次:通过基于状态的事件表导出测试用例。 系统测试执行系统测试执行 系统测试的执行常常需要使用相应的测试工具,对于那些涉及到数据量很多的测试尤其如此,使用手工测试不但浪费时间,而且有时候也无法得到精确的测试结果。 为了能够把系统测试工作做好,可以参考下面几条原则:1、判断是否已经给出测试手段,若没有就要判断工作量、选择自动化工具。2、进行测试,保存好测试脚本、以及测试结果,对测试结果进行精确的分析,判断软件缺陷所在。3、若软件不是第一版本,要重新测试先前系统测试周期中发现的缺陷。4、在系统测试执行期间,必须把测试的结果添加到缺陷跟踪数据库中。 5、在系统测试的过程中,测试人员要注意一定要使 用具
26、有代表性并且接近真实的数据,因为这样可以保证测试的可靠性和真实性。 另一个要考虑因素是:决定由谁来进行测试?一般不能由程序员以及软件开发机构单独进行测试。系统测试案例研究系统测试案例研究 以两票系统的功能测试作为一个案例,使用基于有限状态机的系统级线索测试用例设计的方法,介绍进行系统测试的具体过程。 一、一、 测试计划测试计划 一份测试计划至少需要包括测试对象、测试目标、测试策略、测试终止准则、测试环境与测试工具、测试资源配置(人员与时间)几个方面的内容。 1)测试对象:两票管理系统的功能; 2)测试目标:验证两票编写和票据档案查询功能; 3)需求和设计阶段产生的相关文档及说明是功能测试需求的
27、首要来源,对我们的这个系统而言,在需求文档中对开具操作票功能有如下规定: 1、 可以普通用户和系统管理员的身份开票 2、 可以在多个部门的多个系统图上开票。3、 可以在两种系统图上同时开操作票。 在设计文档中,对于开票功能有更详细的定义:1、 密码输入错误时应给出错误提示信息。2、 操作票成功保存时应弹出保存成功对话框。 4)测试策略:描述对整个测试采取的方法,本次测试的测试策略规定,测试最少为2轮,每轮测试应该执行所有的测试用例至少一次。 5)测试终止准则:整个测试的终止准则是“所有待验证指标都达到”。 6)测试环境与测试工具:确定本测试需要使用的测试工具和定义需要使用的测试环境。在本系统的
28、测试中,要求服务器端必须配置JVM、web服务器、JDBC驱动程序、SQL Server数据库服务器,客户端安装JVM和IE5.0以上版本浏览器。 7)测试资源配置:描述执行本测试需要的人员和时间资源。 二、寻找线索并设计测试用例二、寻找线索并设计测试用例( (详见教材两票系统详见教材两票系统) ) 测试用例至少应该详细定义了用例执行的先决条件、测试输入和预期输出,以很直观的方式给出了测试用例的各个要素。图-4 “身份验证”有限状态机 为了便于表示线索,我们首先列出表示状态转移的端口事件,如表-1所示:端口输入事件端口输出事件未选择分厂显示系统登录界面分厂已选择显示系统登录界面,分厂列表显示分
29、厂名称未选择系统图显示系统登录界面系统图已选择显示系统登录界面,分厂列表显示系统图名称用户已选择显示身份验证界面密码输入正确显示系统主界面密码输入错误显示身份验证界面,给出错误提示信息退出显示系统登录界面表-1 身份验证有限状态机中的事件三、测试数据三、测试数据 四、四、 测试环境与测试工具测试环境与测试工具 1测试环境 由于该系统是基于B/S架构的系统,因此功能测试需要在一个网络环境中进行,可以先选择在一个单独的局域网中进行,然后使用了和生产环境类似的网络环境中进行。 2. 测试工具 本例中我们选取IBM Rational Functional Tester工具(在Java环境中工作的版本)
30、来执行测试。 五、测试实施五、测试实施六六. . 测试结果分析与测试报告测试结果分析与测试报告 需要丰富的经验;需要明确获取的每个数据的意义,然后根据数据测试目标,对数据进行详尽分析,分析的目的是用数据说明测试目标。 在测试报告中,主要包括以下几部分的内容:1、 测试环境描述 2、 测试准备工作描述3、 测试范围及内容 4、 测试结论 5、 建议与计划 6、 附件:将测试用例的执行情况和每轮测试执 行的详细记录。 系统测试经验总结系统测试经验总结适当的组织和实施能大大的提高测试效率;在做系统测试的过程中不断的积累测试经验;下面几点系统测试的经验:1、要多次和用户进行沟通2、要根据系统的特点和风
31、险分析等方法来确定测试实施的重点(测试的优先级)。3、不能盲目的使用自动化测试工具,一旦使用了自动化测试就要充分利用和掌握使用工具的技巧。4、在做系统测试计划时,时间上要留出冗余,防止意外情况发生影响测试的质量。5、保证测试环境安全,获得更为真实的测试数据。 本章小结本章小结系统测试是在一个完整的环境下对整个系统进行的测试,可以说它是软件提交给用户之前的最后一道质量屏障;系统测试类型有很多,其中最主要的两种测试就是功能测试和性能测试。大多数类型的系统测试用例设计都使用黑盒测试技术;对于一些无法使用手工实现的系统测试要借助于工具来实施,但不能盲目引入测试工具。习习 题题1、系统测试的主要类型有哪些?2、系统测试使用的主要技术是黑盒测试技术还是白盒测试技术?3、使用手工测试能够进行系统的性能测试分析吗?4、在做系统测试之前还需要和用户进行沟通吗?5、你认为系统测试和集成测试有哪些区别?6、使用黑盒测试技术,针对你所熟悉的软件系统设计一种类型的系统测试案例。