发布新日志

  • 测试用例制定的原则

    2009-02-13 11:30:23

      测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。测试数据应该选用少量、高效的测试数据进行尽可能完备的测试;基本目标是:设计一组发现某个错误或某类错误的测试数据,测试用例应覆盖方面:

      1、 正确性测试:输入用户实际数据以验证系统是满足需求规格说明书的要求;测试用 例中的测试点应首先保证要至少覆盖需求规格说明书中的各项功能,并且正常。

      2、 容错性(健壮性)测试:程序能够接收正确数据输入并且产生正确(预期)的输出, 输入非法数据(非法类型、不符合要求的数据、溢出数据等),程序应能给出提示 并进行相应处理。把自己想象成一名对产品操作一点也不懂的客户,在进行任意操作。

      3、 完整(安全)性测试:对未经授权的人使用软件系统或数据的企图,系统能够控制的程度,程序的数据处理能够保持外部信息(数据库或文件)的完整。

      4、 接口间测试:测试各个模块相互间的协调和通信情况,数据输入输出的一致性和正确性。

      5、 数据库测试:依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行测试。

      6、 边界值分析法:确定边界情况(刚好等于、稍小于和稍大于和刚刚大于等价类边界值),针对我们的系统在测试过程中主要输入一些合法数据/非法数据,主要在边界值附近选取。

      7、 压力测试:输入10条记录运行各个功能,输入30条记录运行,输入50条记录运行。。。进行测试。

      8、等价划分:将所有可能的输入数据(有效的和无效的)划分成若干个等价类。

      9、错误推测:主要是根据测试经验和直觉,参照以往的软件系统出现错误之处。

      10、效率:完成预定的功能,系统的运行时间(主要是针对数据库而言)。

      11、可理解(操作)性:理解和使用该系统的难易程度(界面友好性)。

      12、可移植性:在不同操作系统及硬件配置情况下的运行性。

      13、回归测试:按照测试用例将所有的测试点测试完毕,测试中发现的问题开发人员 已经解决,进行下一轮的测试。

      14、比较测试:将已经发版的类似产品或原有的老产品与测试的产品同时运行比较,或与已往的测试结果比较 。

      说明:针对不同的测试类型和测试阶段,测试用例编写的侧重点有所不同。

      1、 其中第1、2、6、8、9、13项为模块(组件、控件)测试、组合(集成)测试、系统测试都涉及并重点测试的方面。

      2、 单元(模块)测试(组件、控件)测试:重点测试第5项。

      3、 组合(集成)测试:重点进行接口间数据输入及逻辑的测试,即第4项。

      4、 系统测试:重点测试第3、7、10、11、12、14项。

      5、 其中压力测试和可移植性测试如果是公司的系列产品,可以选用其中有代表性的产品进行一次代表性测试即可。

      6、 GMPS基础测试用例设计完成后,其他的测试项目只编写设计与之不同部分的测试用例。

      7、 对于每个测试项目测试的测试用例不是一成不变的,随着测试经验的积累或在测试其他项目发现有测试不充分的测试点时,可以不断的补充完善测试项目的测试用例。

  • 如何测试一个U盘

    2009-02-11 14:27:38

    功能测试

      1 在windows xp比较流行的操作系统上是否可以识别(装了驱动后是否可以)

      2 在电脑上显示的盘符是否正确

      3 总空间,可用空间,已用空间是否显示正确

      4 u盘中是否可以拷入各种格式的各类文件(图片,视频,文档,网页...)

      5 是否可以拷入拷出大文件

      6 正常操作拷入的文档等是否显示乱码

      7 拷文件的过程中是否可以取消

      8 拷文件的过程中拔掉u盘后,u盘是否损坏

      9 拷文件的过程中电脑关机后,u盘是否损坏

      10 u盘的开关是否起作用

      12 正常操作,拷入的文件是否会丢失

      13 空间已满是否有提示信息

      14 是否支持格式化

      15 u盘在各个状态时是否有相应的led灯提醒

      兼容性测试:

      1 在windows 98,windows 2000,windows me,windows 2000 server,windows 2003 server,windows xp,windows vista...是否可以识别

      2 在usb1.0,usb2.0上是否能够识别

      3 在笔记本上,台式电脑,服务器上是否可以识别

      性能测试

      1 一次性拷贝删除多个文件,u盘是否正常

      2 u盘连续使用比较长的时间,u盘是否正常

      3 u盘摔地上多次后,是否正常

       4 传输速度测试

      界面测试:

      1 设计是否美观大方

      2 图案,log是否正确显示

  • 编写测试用例的必要性

    2008-10-27 10:24:20

     

    本文出自chaotiancaitl的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?32224

      我知道的有关测试用例的情况:

      听一个在微软工作的朋友说,他们每天写完的代码,在晚上下班之前都要check到一起,执行一遍用例,当然都是自动执行的,那个地方出现了错误会红灯提示,所以这个用例一定是事先写好的。

      听一个在比较大的公司(1000多人)的朋友说,他们公司经常后补用例的。

      我一直在百十人的小公司工作,领导心绪来潮的时候要求写用例,可是多数情况是可写可不写的,而且对质量,形势也没有什么要求。

      对于写用例的认识,我经历了这样一个过程,一开始是很形式化的,质量也很一般,回想一下跟现在的新人写的一样,所以觉得毫无用途,所以后来就不怎么写了。可是面对新项目的时候,问题出现了,无论在测试之前你多么的了解需求,业务,在提交测试的时候,很是会有覆盖不全的情况,我们的大脑毕竟不是电脑,我们在测试一个新系统的时候,不可能在到脑中勾画出每一个小功能,甚至每一个表单的所有分支,所以我开始写用例了,对任何一个小功能都是以流程的方式,每一步有多少个分支都清晰的列出来,我觉得效果非常好,按照这个测试完成之后,晚上睡觉都安稳多了,这是自己给自己的保证。这个用例可以说是一个很详细的用例了,只适合新项目的新版本测试,回归的时候就没有这个必要了,这样不符合性价比。那时候,我们的回归都是凭着大脑测试的,没有感觉到任何问题,只是在牵涉到流程性比较强的项目时才写一些流程用例(包括正常流程和常见异常流程)。可是现在,我在新的公司工作一年多了,问题出现了,项目特别多,差不多有十几二十个,由于测试的人少,每个项目都要测试,所以在回归测试的时候经常会搞不清状况,记不清业务要求等(也许是我老了,记忆力不好了:()而且公司客户是比较强硬的那种,公司领导是认为测试过的东西就不应该有问题的那种,所以搞得自己经常提心吊胆,生怕给客户的东西出现问题。这时候,我发现了回归测试用例的重要性,以前没有写过,有个大概的概念就是写个简单的流程,回归的时候执行一下就行了,在一开始的实施过程中发现了问题,写的过于简单还是让我在回归的时候无从下手,在思考与实践中,我自认为自己找到了一种不错的编写方式:为了保证质量,回归在功能上要覆盖所有的功能按钮,这部分在写用例的时候要每个操作写一个用例(简单说excel的一行),操作结果中记录该操作应该返回的界面,一定要一个操作对应一个结果,这样才具有可操作性。在每条用例的后面设置“通过”和“不通过”的按钮,这样回归的时候就轻松了,过一个勾一个,在测试几乎没有改动的地方时,简直是休息,哈哈。当然也不要忽视业务流程,权限等方面的测试,可以另起文档,以自己比较喜欢的方式编辑就ok了!

  • 测试思想与测试工具孰重孰轻

    2008-02-13 10:59:24

     
    来源:网络转载 2007年11月29日 

        测试工具近来在测试人员间刮起了一阵旋风,在我们群内也不可避免地掀起了一阵工具热。我不是支持无工具测试者,因为这是一种愚蠢行为。但对当前出现的厚此薄彼思想,说说我对测试基础与测试工具的认知。在此诚邀各路英雄过来参与讨论与拍砖。最理想的目的是让我们对正确测试有一个不会偏离得太远的认知。

      有不少测试员目前把测试工具与测试思想的学习分为两个相反方向,重视工具的使用学习而忽略了测试思想的煅练。这不利于测试能力的提升,提高我们的测试技能,如仅仅是工具的使用,就好巧妇难为无米之炊,而这“米”指的是测试思想。

      测试工具只是一个辅助工具,帮助我们进行一些手工测试不能完成的测试内容,但它不能替代测试思维。该测什么,要怎么测还是要以测试思想为基础,然后才是借用工具帮我们实现。就算我们精通Rational、Mercury等一系列的工具,如果心中没有测试用例,我们也不知对着一个需要测试的软件,要对它进行怎样的测试项,作为一个测试人员,我们不应当只是一个执行者,更应该是一个设计者,怎样设计一个合理有效的用例去完成对产品质量的控制,在这个基础上才是怎样去达到对这个产品质量的检验。而测试用例,是测试思想的集中体现。先煅练思想再在此基础上进行使用辅助工具的提升,我们的测试才能做得更好。这也不是说一定要有了测试思想再学习工具,因为思维与工具都是测试的技能点,最好是一并重视,把测试思维的学习与测试工具的学习调至一个方向。

      如果把测试比喻成树的话,那么测试基础是主干,工具是支干和叶子,支干和叶子的茂盛使树显得更强盛,但如果少了主干的支撑,支干也就无扬展的空间

      后来想想,新接触测试的许多同行比较工具的学习,很多是由于现在招聘企业的对测试工具要求比对测试思维要求更多对测试行业产生的误导。

      测试员本身对测试基础与测试工具的偏重度问题,希望能分层次讨论测试所有知识与技术,此举是希望能给新接触这个行业并且不太了解这个行业的同行们一个循序渐进的讨论主题,利于测试发展。

      另外测试技能的煅练不仅仅是思维与工具,还包括行业知识,因为大多数测试员从事的都是针对某一行业的产品,对所属行业有了了解,我们的测试才更有针对性

      下面是我当时的回复

      从必要性上来看,如果有测试工具是不是所有的软件都能测试?反过来如果有测试思想是不是能进行所有软件测试?从覆盖率来看,相信有测试思想的测试范围要广些。

      举个例子,比如做手术,你会各种工具的使用,一定就知道什么时候该用哪种工具吗?呵呵, 想来都是思想来指导我们行动的。

      实际软件测试中比如测试photoshop这款软件,想来用工具的机会就不大,很多都是业务应用和逻辑思维方面的测试,测试时候是跟开发基本同步的,出一版本就进行测试,同时对上一版本进行返测。界面、功能不断变化,使用工具的机会真的很少。

      另外具备行业知识和操作技能的非常受重视,促使我们去学习和研究。但是这些知识和经验不是单单在IT领域所能获得的,那么我们要接触的社会将需要更加全面和立体(相对开发人员),希望不要陷入为测试而测试的境界。

  • 测试生命周期-SQA测试过程

    2007-05-22 14:05:36

    测试生命周期

    测试计划 → 测试设计 → 测试开发 → 测试执行 → 测试评估   

    测试计划就是定义一个测试项目的过程,以便能够正确的度量和控制测试。

    第一部分:测试计划
    测试计划的问题:
      1、测试计划经常是等到开发周期后期才开始实行,使得没有时间有效的执行计划;
      2、测试计划的组织者可能缺乏Client/Server测试经验;
      3、测试的量度和复杂性可能太大,没有自动化工具,很难计划和控制。
    测试策略:
      测试策略描述测试工程的总体方法和目标。描述目前在进行哪一阶段的测试(单元测试、集成测试、系统测试)以及每个阶段内在进行的测试种类(功能测试、性能测试、压力测试等)。
      测试策略包括
      1、要使用的测试技术和工具;
      2、测试完成标准;
      3、影响资源分配的特殊考虑例如测试与外部接口或者模拟物理损坏、安全性威胁。
      测试计划最关键的一步就是将软件分解成单元,写成测试需求。
      测试需求有很多分类方法,最普通的一种就是按照商业功能分类。把软件分解成单元元件有几个好处:
      1、测试需求是测试设计和开发测试用例的基础,分成单元可以更好地进行设计;
      2、详细的测试需求是用来衡量测试覆盖率的重要指标;
      3、测试需求包括各种测试实际和开发以及所需资源。
    怎样估计测试工作量:
      1、效率假设:即测试队伍的工作效率。对于功能测试,这主要依赖于应用的复杂度,窗口的个数,每个窗口中的动作数目。对容量测试,主要依赖于建立测试所需数据的工作量大小。
      2、测试假设:为了验证一个测试需求所需测试动作数目。
      3、应用的维数:应用的复杂度指标。例如要加入一个记录,测试需求的维数就是这个记录中域的数目。
      4、所处测试周期的阶段:有些阶段主要工作都在设计,有些阶段主要是测试执行。
    测试资源:
      1、人力资源
      测试经理
      为测试项目提供总体方向。开发测试计划、征集并监督测试人员、申请系统资源、监视并汇报工作进程、测试评估、测试需求的分解。
      测试工程师 ---- 设计和开发
      设计:对被测软件的详细了解、分解测试需求的技能、选择在C/S环境下用来验证测试需求的技术。
      开发:熟悉SQA、VB、和脚本语言。
      测试工程师 ---- 执行
      负责测试执行和记录结果。需要能够安装系统,网络知识,初始化数据库和其他初始条件。重要的是诊断能力。
      测试系统管理者
      每个测试项目必须指定一个专人负责管理SQA Suite。包括在服务器上安装存储库,安装打印机连接,执行备份,以及其他维护工作。管理者必须高度熟悉SQA,网络工作经验。
      2、系统资源
      安装SQA Suite的硬件和软件环境
      数据库服务器
      该服务器必须专用于 测试工作,能够重置某些初始值,包括系统日期和时间等。
    写测试计划的步骤:
      1、确定工程
      收集下列信息
    文档 已创建(是/否) 版本/日期 需求详述     功能详述     项目计划     设计详述     原型     用户手册      定义新的工程,Adminà New Project。
      确定软件的结构,用Assetsà Software Structure选项定义软件结构。
      2、定义测试策略
    测试策略项 例子 测试阶段 系统测试 测试类型 功能测试 测试技术 75%用SQA Suite自动测试,25%手工测试 完成标准 95%测试用例通过并且最高级缺陷全部解决 特殊考虑 测试必须在上午进行  3、分解软件,写测试需求
      分析各种信息
      反复检查并理解各种信息,和用户交流,理解他们的要求。可以按照以下步骤执行:
      1、确定软件提供的主要商业任务
      2、对每个商业任务,确定完成该任务所要进行的交易。
      3、确定从数据库信息引出的计算结果。
      4、对于对时间有要求的交易,确定所要的时间和条件。这些条件包括数据库大小、机器配置、交易量、以及网络拥挤情况。

     5、确定会产生重大意外的压力测试,包括:内存、硬盘空间、高的交易率
      6、确定应用需要处理的数据量。
      7、确定需要的软件和硬件配置。通常情况下,不可能对所有可能的配置都测试到,因此要选择最有可能产生问题的情况进行测试,包括:最低性能的硬件、几个有兼容性问题的软件并存、客户端机器通过最慢的LAN/WANF连接访问服务器。
      8、确定其他与应用软件没有直接关系的商业交易。包括:
        管理功能,如启动和推出程序
        配置功能,如设置打印机
        操作员的爱好,如字体、颜色
        应用功能,如访问email或者显示时间和日期。
      9、确定安装过程,包括定置从哪安装、定制安装、升级安装。
      10、确定没有隐含在功能测试中的户界面要求。大多界面都在功能测试时被测试到。还有写没有测到,如:操作与显示的一致性,如使用快捷键等;界面遵从合理标准,如按钮大小,标签等。
      把需求组织成层次图
      4、估计测试工作量
      ∑(每个测试的时间*每个需求的测试的数目*测试需求的的数目)
      (测试设计、开发、….)
      5、确定资源
      人力资源
    职位 姓名 特殊责任/说明 测试经理     测试工程师
    设计/开发(可以多人)     测试工程师
    测试执行(可以多人)     测试系统管理员      系统资源
    系统 名称/类型 数据库服务器 网络/子网
    服务器名称
    数据库名称
            SQA 测试存储库 网络/子网
    服务器名称
          客户测试机 包括专门的配置需求
    列表   测试开发的PC机 列表  6、创建工程调度表
    任务 相关工作量(天) 整个SQA过程 38 测试计划 12 确定项目 1 定义测试策略   决定测试需求   估计工作量   确定资源   调度测试活动   生成测试计划文档   测试设计 7 分析测试需求   指定测试过程   指定测试用例   查看测试需求的覆盖率   测试开发 12 建立测试开发环境   录制和回放原型过程   开发测试过程   测试和调试测试过程   修改测试过程   建立外部数据集合   重新测试并调试测试过程   测试执行 6 设置测试系统   执行测试   验证测试结果   调查突发结果(unexpected result)   生成缺陷日记   测试评估 1 回顾测试日记   评估测试需求的覆盖率   评估缺陷   决定是否达到测试完成的标准    7、书写测试计划
      1、介绍
        目的
        背景
        测试范围
        项目文件列表
      2、测试需求
      3、测试策略
        测试类型
        1、功能测试
        2、用户界面测试
        3、性能测试
        4、压力测试
        5、容量测试
        6、配置测试
        7、安装测试
        工具
      4、资源
        人力资源
        系统资源
      5、调度
      6、文档
        软件元件
        测试特性(Assets)
        测试日记
        缺陷报告
    第二部分:测试设计
    测试设计的问题
      1、不做测试设计,测试过程也是胡乱建立的。
      2、测试设计不详细,不是基于可量度的测试策略,例如测试计划覆盖一个集合或者测试需求的一个子集。
      3、测试过程没有采用最好的技术来检验Windows C/S结构的测试需求
    测试用例的选择规则
      1、选择与测试需求的实质部分最相关的测试用例。
      2、选择的测试用例应该不容易应用程序的改变的影响。
      下面是选择测试用例的几点具体规则:
      1、商业函数
      商业函数一般与数据库有关,要测试数据库的变化,有几种方法:
      1、如果数据库的的改变会反映在一个列表框中,那么就要选择验证列表框内容的测试用例。
      2、还可以检查交易完成后的确认对话框。可以检查对话框的标题。图象比较也可以检查确认对话框,但图象比较容易受其他因素影响。
      3、修改脚本,SQA Basic提供了强大的数据库支持。
      2、域的验证

      各种不同的域选择相应的测试用例。
      3、用户界面测试
      对象状态测试用例
      4、性能标准
      等待状态测试用例
      5、压力下的操作
      6、访问控制
      Object state test case
      7、配置测试
      不能选择图象测试用例(也分辨率有关)和文件测试用例(与驱动器有关)
      8、安装选项和验证
      对象状态用例和窗口存在用例,文件存在用例。
    书写测试设计的步骤
        生成测试需求报告
           ↓
         指定测试过程
           ↓
       指定测试用例(可选)
           ↓
        回顾测试覆盖率
    第三部分:测试开发
    输入:被测软件、基于测试需求的测试设计
    输出:测试过程和测试用例
    目标:
      1、创建可以重用的测试过程和测试用例
      2、维护测试过程、测试用例与相关测试需求的一一对应。
    测试开发的问题:
      1、测试开发很乱,与测试需求或测试策略没有对应性
      2、测试过程不可重复或不可重用
      3、测试过程被作为一个编程任务来执行,导致脚本太长,不能满足软件移植性的要求。
    错误处理
      当测试过程发生错误时,有几种解决办法:
      1、跳转到别的测试过程
      2、调用一个能够清除错误的过程
      3、退出过程,启动另一个
      4、退出过程和应用程序,重新启动启动Windows,在失败的地方重新开始测试
    测试开发的步骤
      1、设立开发环境
        SQA Suite
        连接到SQA存储库
        启动SQA Baisc或VB
        被测软件
        等等
      2、录制和回放原型过程
      原型过程指出所有未知窗口控制,使得他们都能象标准窗口那样动作或者没有特别的动作,把他们都划归为Generic类型。通过这个过程,SQA Robot就知道该怎样处理应用中的特殊控制。
      1、把recording option 中的Define Unknown Object as Type Generic选项设置为off
      2、使用的过程标识符要可以被覆盖,或者能被删掉。因为这只是个原型,用来教SQA Robot 录制的过程
      3、录制测试过程和测试用例
      1、录制模块测试过程和与测试需求最低层对应的测试用例;
      2、录制初始化过程;
      3、录制导航过程,把前面的过程串起来;
      4、测试和调试测试过程
      5、修改测试过程(可选)
      6、建立外部数据集合
      如果测试过程是用来循环一套输入和输出数据,就需要建立数据集合。
      7、重复测试和调试测试过程,回到4
    第四部分:测试执行
    测试执行的问题
      1、自动化测试没有有效的利用,使得手工测试太多。
      2、测试结果的捕获没有系统性,而且没有查看或调查
      3、缺陷报告必须用手工加入缺陷跟踪系统
    错误分类
      1、测试用例失败
        正常错误
      2、脚本命令失败
        当测试过程不能不能执行录制过程中的某个功能时,回产生这种错误,如鼠标单击按钮或选择菜单项等。它也能指示是缺陷还是测试过程的设计问题。
      3、致命错误
        导致测试停止,这种情况最好重起Windows。
    具体步骤:
      1、建立测试系统
      2、准备测试过程
      3、运行初始化过程
      4、执行测试
      5、从终止的测试恢复
      6、验证预期结果
      7、调查突发结果
      8、记录缺陷日记
    第五部分:测试评估
    测试评估的目标
      1、量化测试进程
      2、生成缺陷和测试覆盖率的总结报告
    测试评估的问题
      1、没有把测试覆盖率作为报告测试进程的根据,使得不知测试是否结束;
      2、没有做缺陷评估,缺陷评估是量度软件可行性的重要指标;
      3、不使用专门的软件工具进行数据输入任务和相应的评估活动,使得这些任务变得繁重累人。
    测试覆盖率
      评估测试完成多少的标准
    缺陷评估
      评估软件质量的重要指标,通常评估模型假设缺陷的发现是呈泊松分布的;严格的缺陷评估要考察在测试过程中发现缺陷的间隔时间长短。评估要估计软件当前的可靠性并预测随着测试的继续进行,软件可靠性会怎样提高。

      SQA Suite 提供四种形式进行缺陷评估:
      1、缺陷分布报告可以生成缺陷数量与缺陷属性的函数。如测试需求和状态。
      2、缺陷趋势报告可以看出缺陷增长和减少的趋势;
      3、缺陷年龄报告展示一个缺陷处于某种状态的时间长短
      4、测试结果进度报告展示测试过程在被测应用的几个版本中的执行结果以及测试周期。
    具体步骤
      1、回顾测试日记
      2、评估测试需求的覆盖率
      3、分析缺陷
      4、决定是否达到完成测试的标准,没有满足标准时
        1、再测试
        2、降低标准
        3、确定软件的一个满足标准的子集,看是否可以发布。

  • 如何制定成功的测试计划

    2007-05-22 13:55:00

       “工欲善其事,必先利其器”。专业的测试必须以一个好的测试计划作为基础。尽管测试的每一个步骤都是独立的,但是必定要有一个起到框架结构作用的测试计划。测试的计划应该作为测试的起始步骤和重要环节。一个测试计划应包括:产品基本情况调研、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等等。

       产品基本情况调研:

      这部分应包括产品的一些基本情况介绍,例如:产品的运行平台和应用的领域,产品的特点和主要的功能模块,产品的特点等。对于大的测试项目,还要包括测试的目的和侧重点。

      具体的要点有:

      目的:重点描述如何使测试建立在客观的基础上,定义测试的策略,测试的配置, 粗略的估计测试大致需要的周期和最终测试报告递交的时间。

      变更:说明有可能会导致测试计划变更的事件。包括测试工具改进了,测试的环境改变了,或者是添加了新的功能。

      技术结构:可以借助画图,将要测试的软件划分成几个组成部分,规划成一个适用于测试的完整的系统,包括数据是如何存储的,如何传递的(数据流图),每一个部分的测试是要达到什么样的目的。每一个部分是怎么实现数据更新的。还有就是常规性的技术要求,比如运行平台、需要什么样的数据库等等。

      产品规格:就是制造商和产品版本号的说明。

      测试范围:简单的描述如何搭建测试平台以及测试的潜在的风险。

      项目信息:说明要测试的项目的相关资料,如:用户文档,产品描述,主要功能的举例说明。

      测试需求说明:

      这一部分要列出所有要测试的功能项。凡是没有出现在这个清单里的功能项都排除在测试的范围之外。万一有一天你在一个没有测试的部分里发现了一个问题,你应该很高兴你有这个记录在案的文档,可以证明你测了什么没测什么。具体要点有:

      功能的测试:理论上是测试是要覆盖所有的功能项,例如:在数据库中添加、编辑、删除记录等等,这会是一个浩大的工程,但是有利于测试的完整性。

      设计的测试:对于一些用户界面、菜单的结构还有窗体的设计是否合理等的测试。

      整体考虑:这部分测试需求要考虑到数据流从软件中的一个模块流到另一个模块的过程中的正确性。

      测试的策略和记录:

      这是整个测试计划的重点所在,要描述如何公正客观地开展测试,要考虑:模块、功能、整体、系统、版本、压力、性能、配置和安装等各个因素的影响。要尽可能的考虑到细节,越详细越好,并制作测试记录文档的模板,为即将开始的测试做准备,测试记录重要包括的部分具体说明如下:

      公正性声明:要对测试的公正性、遵照的标准做一个说明,证明测试是客观的,整体上,软件功能要满足需求,实现正确,和用户文档的描述保持一致。

      测试案例:描述测试案例是什么样的,采用了什么工具,工具的来源是什么,如何执行的,用了什么样的数据。测试的记录中要为将来的回归测试留有余地,当然,也要考虑同时安装的别的软件对正在测试的软件会造成的影响。

      特殊考虑:有的时候,针对一些外界环境的影响,要对软件进行一些特殊方面的测试。

      经验判断:对以往的测试中,经常出现的问题加以考虑。

      设想:采取一些发散性的思维,往往能帮助你找的测试的新途径。

      测试资源配置:

      项目资源计划:制定一个项目资源计划,包含的是每一个阶段的任务、所需要的资源,当发生类似到了使用期限或者资源共享的事情的时候,要更新这个计划。

      计划表:

      测试的计划表可以做成一个多个项目通用的形式,根据大致的时间估计来制作,操作流程要以软件测试的常规周期作为参考,也可以是根据什么时候应该测试哪一个模块来制定。

      问题跟踪报告:

      在测试的计划阶段,我们应该明确如何准备去做一个问题报告以及如何去界定一个问题的性质,问题报告要包括问题的发现者和修改者、问题发生的频率、用了什么样的测试案例测出该问题的,以及明确问题产生时的测试环境。

      问题描述尽可能是定量的,分门别类的列举,问题有几种:

      1、严重问题:严重问题意味着功能不可用,或者是权限限制方面的失误等等,也可能是某个地方的改变造成了别的地方的问题。

      2、一般问题:功能没有按设计要求实现或者是一些界面交互的实现不正确。

      3、建议问题:功能运行得不象要求的那么快,或者不符合某些约定俗成的习惯,但不影响系统的性能,界面先是错误,格式不对,含义模糊混淆的提示信息等等。

      测试计划的评审:

      又叫测试规范的评审,在测试真正实施开展之前必须要认真负责的检查一遍,获得整个测试部门人员的认同,包括部门的负责人的同意和签字。

      结果:

      计划并不是到这里就结束了,在最后测试结果的评审中,必须要严格验证计划和实际的执行是不是有偏差,体现在最终报告的内容是否和测试的计划保持一致,然后,就可以开始着手制作下一个测试计划了。

  • 如何制定成功的测试计划

    2007-05-22 09:57:07Digest 1

    摘要: 软件测试用例是为了有效发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。


     

    在实际软件项目测试过程中,由于对软件测试用例的作用和设计方法的理解不同,测试人员(特别是刚从事软件测试的新人)对软件测试用例存在不少错误的认识,给实际软件测试带来了负面影响,本文对这些认识误区进行列举和剖析。

    误区之一:测试输入数据设计方法等同于测试用例设计方法

    现在一些测试书籍和文章中讲到软件测试用例的设计方法,经常有这样的表述:测试用例的设计方法包括:等价类、边界值、因果图、错误推测法、场景设计法等。这种表述是很片面的,这些方法只是软件功能测试用例设计中如何确定测试输入数据的方法,而不是测试用例设计的全部内容。

    这种认识的不良影响可能会使不少人认为测试用例设计就是如何确定测试的输入数据,从而掩盖了测试用例设计内容的丰富性和技术的复杂性。如果测试用例设计人员把这种认识拿来要求自己,则害了自己;拿来教人,则害了别人;拿来指导测试,则害了测试团队。听起来似乎是“小题大做”,但是绝不是“危言耸听”。

    无疑,对于软件功能测试和性能测试,确定测试的输入数据很重要,它决定了测试的有效性和测试的效率。但是,测试用例中输入数据的确定方法只是测试用例设计方法的一个子集,除了确定测试输入数据之外,测试用例的设计还包括如何根据测试需求、设计规格说明等文档确定测试用例的设计策略、设计用例的表示方法和组织管理形式等问题。

    在设计测试用例时,需要综合考虑被测软件的功能、特性、组成元素、开发阶段(里程碑)、测试用例组织方法(是否采用测试用例的数据库管理)等内容。具体到设计每个测试用例而言,可以根据被测模块的最小目标,确定测试用例的测试目标;根据用户使用环境确定测试环境;根据被测软件的复杂程度和测试用例执行人员的技能确定测试用例的步骤;根据软件需求文档和设计规格说明确定期望的测试用例执行结果。

    误区之二:强调测试用例设计得越详细越好

    在确定测试用例设计目标时,一些项目管理人员强调测试用例“越详细越好”。具体表现在两个方面:尽可能设计足够多的设计用例,测试用例的数量阅读越好;测试用例尽可能包括测试执行的详细步骤,达到“任何一个人都可以根据测试用例执行测试”,追求测试用例越详细越好。

    这种做法和观点最大的危害就是耗费了很多的测试用例设计时间和资源,可能等到测试用例设计、评审完成后,留给实际执行测试的时间所剩无几了。因为当前软件公司的项目团队在规划测试阶段,分配给测试的时间和人力资源是有限的,而软件项目的成功要坚持“质量、时间、成本”的最佳平衡,没有足够多的测试执行时间,就无法发现更多的软件缺陷,测试质量更无从谈起了。

    编写测试用例的根本目的是有效地找出软件可能存在的缺陷,为了达到这个目的,需要分析被测试软件的特征,运用有效的测试用例设计方法,尽量使用较少的测试用例,同时满足合理的测试需求覆盖,从而达到“少花时间多办事”的效果。

    测试用例中的测试步骤需要详细到什么程度,主要取决于测试用例的“最终用户”(即执行这些测试用例的人员),以及测试用例执行人员的技能和产品熟悉程度。如果编写测试用例的人员也是测试用例执行人员,或者测试用例的执行人员深刻了解被测软件,测试用例就没有必要太详细。而如果是测试新人执行测试用例,或者软件测试外包给独立的第三方公司,那么测试用例的执行步骤最好足够详细。

    误区之三:追求测试用例设计“一步到位”

    现在软件公司都意识到了测试用例设计的重要性了,但是一些人认为设计测试用例是一次性投入,测试用例设计一次就“万事大吉”了,片面追求测试设计的“一步到位”。

    这种认识造成的危害性使设计出的测试用例缺乏实用性,或者误导测试用例执行人员,误报很多不是软件缺陷的“Bug”,这样的测试用例在测试执行过程中“形同虚设”,难免沦为“垃圾文档”的地步。

    “唯一不变的是变化”。任何软件项目的开发过程都处于不断变化过程中,用户可能对软件的功能提出新需求,设计规格说明相应地更新,软件代码不断细化。设计软件测试用例与软件开发设计并行进行,必须根据软件设计的变化,对软件测试用例进行内容的调整,数量的增减,增加一些针对软件新增功能的测试用例,删除一些不再适用的测试用例,修改那些模块代码更新了的测试用例。

    软件测试用例设计只是测试用例管理的一个过程,除此之外,还要对其进行评审、更新、维护,以便提高测试用例的“新鲜度”,保证“可用性”。因此,软件测试用例也要坚持“与时俱进”的原则。

    误区之四:让测试新人设计测试用例

    在与测试同行交流的过程中,不少刚参加测试工作的测试新人经常询问的一个问题是:“怎么才能设计好测试用例?”。因为他(她)们以前从来没有设计过测试用例,面对大型的被测试软件感到“老虎吃天,无从下口”。

    让测试新人设计测试用例是一种高风险的测试组织方式,它带来的不利后果是设计出的测试用例对软件功能和特性的测试覆盖性不高,编写效率低,审查和修改时间长,可重用性差。

    软件测试用例设计是软件测试的中高级技能,不是每个人(尤其是测试新人)都可以编写的,测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构都有比较透彻的理解。

    因此,实际测试过程中,通常安排经验丰富的测试人员进行测试用例设计,测试新人可以从执行测试用例开始,随着项目进度的不断进展,测试人员的测试技术和对被测软件的不断熟悉,可以积累测试用例的设计经验,编写测试用例。

    来源:http://sd.csdn.net/n/20060720/92826.html

Open Toolbar