一.方法简介
1、测试设计目的
站在用户的角度,以用户的使用逻辑及操作习惯为出发点,结合功能用例的设计方法,使用例设计更符合用户使用逻辑更具有可执行性,从而最大程度上覆盖用户需求。 2、测试用例设计方法
按照不同的规则可以将测试用例分为四个部分:场景用例(用户场景)、系统用例(用户场景的细化)、功能用例(基于业务规则、界面)、设计指标(基于环境、性能、安全等)。 ◆ 用户场景用例:按照用户的实际操作与业务逻辑设计用例,不必涉及很复杂的操作或逻辑,把用户最常用的、正常的操作流程作为一个场景设计测试用例
◆ 系统用例:是用户场景的细化,包含正常场景、分支场景和异常场景,是两个或多个有关联的功能组合而成的场景。 ◆ 功能用例:用于验证各功能点的业务规则,包括界面元素和各功能的业务规则验证。主要针对单个功能点。
◆ 设计指标:系统所需要达到的各级指标。主要包含环境、性能、安全等方面的指标。 第一步:用户场景用例(关键字:模拟用户实际操作) 描述用户的主要业务目标,包含完整的系统级场景和模拟用户实际操作的不同场景,几个功能点的组合也算是用户场景,这类的用例不宜过多。 第二步:系统各角色的系统用例
将系统划分多个角色,再将每个角色分解为多个任务,每个任务就是一个系统用例。系统用例分别正常流程、异常流程,分支流程,以场景的形式描述。 系统用例命名原则:正常(异常、分支)流程_描述 第三步:功能用例
描述单点功能的逻辑规则及页面元素,分层描述逻辑规则,对逻辑规则细化可直接作为用例的操作步骤描述。 第四步:设计指标
设计指标包含三种类型的用例:环境测试用例、性能测试用例、安全性用例。 环境测试用例可依照操作系统版本,浏览器版本不同划分为多个用例。每个用例下可直接调用已有的用户场景用例、系统用例、功能用例,可无须单独编写用例。 3、场景测试设计方法:
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,
同时使测试用例更容易理解和执行。
基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。
二.实战演习
2.1. 例子描述
下图所示是ATM例子的流程示意图。
2.2.场景设计:下表所示是生成的场景。
注:为方便起见,备选流3和6(场景3和7)内的循环以及循环组合未纳入上表。
3.用例设计
对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。
表3-9 测试用例表
4.数据设计
一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。
测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据,如表3-10所示。 表3-10 测试用例表
三.场景测试设计中性能设计
性能测试按照场景不同一般可以分为两大类,一类是为了测试目的而进行的场景测试,另外一类是基于用户实际情况而进行的场景测试。因此,性能测试用例的设计应该面向性能测试场景来进行。
实际上,由于开发环境硬件配置不高,基于用户的测试多在用户现场进行,而为了测试目的而进行的测试多在开发环境即开发团队内部进行,不过两者进行的场所没有严格的界限,例如也可以在开发团队内部模拟用户的环境进行性能测试。
“ 为了测试目的而设计的测试用例场景”主要根据测试设计人员的经验来进行,但是仍然要参考用户的实际场景,用户实际使用场景是设计所有测试用例的依据。例如一些业务
系统,虽然备份历史数据的周期为一年,但是设计大数据量测试用例时仍然包含了系统运行一个月、半年等的数据量模拟测试,因为这些均属于用户的典型场景。
综合上面可以看出,性能测试用例设计首先要分析出用户现实中的典型场景,然后参照典型场景进行设计。下面详细介绍一下常见的三类用户场景:
一天内不同时间段的使用场景。在同一天内,大多数系统的使用情况都会随着时间发生变化。例如对于新浪、网易等门户网站,在周一到周五早上刚一上班时,可能邮件系统用户比较多,而上班前或者中午休息时间则浏览新闻的用户较多;而对于一般的OA系统则早上阅读公告的较多,其他时间可能很多人没有使用系统或者仅有少量的秘书或领导在起草和审批公文。这类场景分析的任务是找出对系统产生压力较大的场景进行测试。
系统运行不同时期的场景。系统运行不同时期的场景是大数据量性能测试用例设计的依据。随着时间的推移,系统历史数据将会不断增加,这将对系统响应速度产生很大的影响。大数据量性能测试通常会模拟一个月、一季度、半年、一年、„„的数据量进行测试,其中数据量的上限是系统历史记录转移前可能产生的最大数据量,模拟的时间点是系统预计转移数据的某一时间。
不同业务模式下的场景。同一系统可能会处于不同的业务模式,例如很多电子商务系统在早上8点到10点以浏览模式为主,10点到下午3点以定购模式为主,而在下午3点以后可能以混合模式为主。因此需要分析哪些模式是典型的即压力较大的模式,进而对这些模式单独进行测试,这样做可以有效的对系统瓶颈进行隔离定位。与“一天内不同时间段的场景测试”不同,“不同业务模式下的场景测试”更专注于某一种模式的测试,而“一天内不同时间段的场景测试”则多数是不同模式的混合场景,更接近用户的实际使用情况。 上面只介绍了三种典型的场景,实际项目中分析场景一般不会孤立的分析某一特定类型场景,而是把两种或者几种类型场景结合起来进行分析设计,这样做主要是为了选择更典型的场景和节省一些测试成本。
有了上面的基础知识,下面开始逐一讨论各类测试用例设计的细节。在下面的讨论中,将以图2所示的某视频点播网站做为示例,图2显示了该视频点播网站的主要业务以及各个时间段使用场景。
图2网上视频点播系统使用情况图
3.1、 确定用户使用系统情况的方法
确定用户对系统的使用情况是设计用例具体数据的基础,后面并发用户数据设计、疲劳强度设计、以及各种场景设计都要依赖对用户使用系统情况的分析结果。分析用户使用情况经常采用现场调查和分析系统日志两种方法。 ● 用户现场调查
用户现场调查实际就是通过和用户进行沟通,进而确定用户的人员组成情况。这类方法适用于用户群体固定且目标测试系统没有投产前的情况。 ● 分析系统日志
很多时候,通过和用户沟通不能掌握其使用系统的详细情况,尤其是诸如图2的网站业务系统,因为目标用户使用系统的情况是不确定的。当用户比较分散、现场调查比较困难时,可以采用对系统日志进行分析的方法,以此作为对用户现场调查信息的补充。
大多数的系统都会对用户使用系统的情况进行日志管理,因此可以对日志进行分析,日志分析方法适用于已经投产或者试运行的系统。如果没有系统日志功能,可以和开发人员进行沟通,在测试过程中增加日志管理功能。通常分析系统日志可能要开发一些程序来对其进行统计分析。
在具体设计过程中,一般是两种方法结合使用。图2的网上视频点播系统就是通过两种方法得到的测试数据:通过和用户进行沟通得到全国各地维护人员使用系统的大概情况,然后通过对系统一个月的日志进行分析得出其它用户使用系统的情况,最后综合在一起就得到了系统的使用情况图。
也许有人会问:为什么不通过日志分析得出全部的用户使用情况?主要原因有两个:一是日志分析不一定能得出全部的使用情况,可能产生偏差,例如用户反复登陆系统、注册多个帐号都会影响统计结果;二是日志分析往往较用户调研成本大,因为多会涉及开发工作。
3.2、 并发用户数量设计
并发用户尤其是最大并发用户数量的设计一直是网上很多测试论坛津津乐道的话题。在
前面文章中,已经介绍了并发用户和并发用户数量两个概念,下面将在其基础上讨论一下如何在性能测试用例中设计并发用户数量。
在设计并发用户数量前,首先要了解确定系统最大并发用户数量的方法。下面介绍根据系统的最大使用人数或者最大在线数量来评估最大并发用户数量的方法(注:这里的最大并发用户数量不是指系统支持的最大并发用户数量,而是指系统在生存周期内可能达到的最大并发用户数量)。
● 极限法。取最大在线用户数作为最大并发数,这种方法适用于系统已经投产或者目标用户群体不确定的门户网站,可以通过分析日志来得出结果;也可以使用系统已经注册的用户数量做为系统的用户数量,然后按照经验公式来估算最大并发用户数量。
● 用户趋势分析。对软件生存周期内的用户未来走势进行分析,预测系统可能达到的最大使用用户数目,从而估计系统的最大并发用户数目,这种方法多用于系统用户数目逐渐增加的情况。
● 经验评估法。按照经验来评估系统可能的最大并发用户数,这种方法多用于系统的使用用户数目相对稳定且比较明确的系统。
因篇幅问题不能全部显示,请点此查看更多更全内容