越来越觉得自己走测试这条路是对的,越来越觉得自己适合做测试,这么久以来兴趣一直在激发我前进,一直在寻找下一个站点,我相信测试路上我一定会走的很远,我的测试道路一定会很宽阔,努力就有收获,也希望还在测试路口迷惘的朋友,不要再犹豫了,因为你的犹豫不决,会使你错过很多~~~~~喜欢就去just do it ,因为只有尝试了才知道自己适不适合,喜不喜欢。如果一味的问别人,永远找不到最终的答案。因为每个人的感觉不一样,每个人的情况不一样,每个人的前提条件都不一样,你会得到不同的答案,这样只能会使你更迷茫~~~~

发布新日志

  • oracle Database 10g for Windows安装方法

    2010-06-11 17:06:00

    基本安装流程如下:
    一、安装
    1.运行setup.exe出现图1所示的“Oracle Database 10g安装”画面。
        选中“高级安装”,以便为SYS、SYSTEM设置不同的口令,并进行选择性配置。
    2.“下一步”进入“Oracle Universal Installer:指定文件位置”,见图2。
        设置源“路径”、“名称”和目的“路径”,见图3所示。
      “名称”对应ORACLE_HOME_NAME环境变量
      “路径”对应ORACLE_HOME环境变量
    3.“下一步” 进入“Oracle Universal Installer:选择安装类型”,见图4。

    4.保持默认值,下一步,进入“Oracle Universal Installer:选择数据库配置”,见图5。

    5.保持默认值,下一步,进入“Oracle Universal Installer:指定数据库配置选项”,见图6。

        指定“全局数据库名”和“SID”,对这两个参数的指定一般相同,例如:oralib。
        也可以将“全局数据库名”设置为域名。例如:lib.hunnu.edu.cn
        如果选择“创建带样本方案的数据库,OUI会在数据库中创建HR、OE、SH等范例方案(sample schema)
    6.下一步,进入“Oracle Universal Installer:选择数据库管理选项”,见图7。

    7.保持默认值,下一步,进入“Oracle Universal Installer:指定数据库文件存储选项”,见图8。

    8.保持默认值,下一步,进入“Oracle Universal Installer:指定备份和恢复选项”,见图9。

    9.保持默认值,单击“下一步”,进入“Oracle Universal Installer:指定数据库方案的口令”,如图10所示。
        对不同的帐户设置不同的口令。
    10.单击“下一步”,继续安装,进入“Oracle Universal Installer:概要”,如图11所示。

    12.单击“安装”,开始安装过程,大约半小时。

    13.数据库创建完成时,显示“Database Configuration Assistant”窗口,如图12所示。

    14.单击“口令管理”,进入“口令管理”窗口,如图13所示。

    15.解锁用户HR、OE和SCOTT,输入HR和OE的口令,SCOTT的默认口令为tiger。
    16.单击“确定”返回“Database Configuration Assistant”窗口。
    17.在图15所示窗口单击“确定”,进入“Oracle Universal Installer:安装 结束”窗口,如图14所示。
    18.检查,单击“退出”,完成安装。
    19.在自动打开的浏览器中以sys账户sysdba身份登录10g的企业管理器。

    第一次要接受license,单击Iagree,以后就不用了。

    二、查看安装情况
    1.目录结构
        默认ORACLE_BASE
        在Windows中,默认的ORACLE_BASE目录是:
    D:\oracle\product\10.1.0
        在UNIX中,默认的ORACLE_BASE目录是:
    /pm/app/oracle/10.1.0
    所有的ORACLE软件文件和数据库文件都位于ORACLE_BASE下面的子目录中。
        默认ORACLE_HOME
        在Windows中,默认的ORACLE_HOME目录是:
    D:\oracle\product\10.1.0\libdb
        在UNIX中,默认的ORACLE_HOME目录是:
    /pm/app/oracle/10.1.0/libdb
    orACLE_HOME是访问所有ORACLE软件的路径。
        Admin文件夹,存储初始化文件和日志文件
    2.查看“服务”管理器中相关的Oracle服务。

       oracleCSService服务在做10G RAC的時候才會有。CSS(Cluster Synchronization Service)

    3.注册表

        语言的设置
    名称                    数据
    NLS_LANG             SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    其中:SIMPLIFIED CHINESE表示简体中文
            CHINA表示中文日期格式
            ZHS16GBK表示编码

    NLS_LANG格式:NLS_LANG=language_territory.charset
    有三个组成部分(语言、地域和字符集),每个组成成分控制了NLS子集的特性。三个成分可以任意组合,例如:
    AMERICAN_AMERICA.US7SCII
    JPANESE_JAPAN.JA16EUC
    其中:language 指定服务器消息的语言。
    territory 指定服务器的日期和数字格式。
    Charset 指定字符集

    还有一些子集可以更明确定义NLS_LANG参数:
    NLS_DATE_FORMAT 缺省的日期格式
    NLS_DATE_LANGUAGE 缺省的语言
    NLS_NUMBERIC_CHARACTERS 小数字符和组分隔开
    NLS_CURRENCY 本地货币字符
    NLS_ISO_CURRENCY ISO货币字符
    NLS_SORT 字符排序序列

    如果使用英文,将NLS_LANG的值改为:
    AMERICAN_AMERICA.WE8ISO8859P1

    englishi_ America.US7SCII
    在SQL/PLUS中,运行下面的SQL语句,检查所连接数据库的字符集:
    SQL> select userenv('language') from dual;
      USERENV('LANGUAGE')
      ----------------------------------------------------
      SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    4.PATH环境变量
    D:\oracle\product\10.1.0\libdb\bin;D:\oracle\product\10.1.0\libdb\jre\1.4.2\bin\client;D:\oracle\product\10.1.0\libdb\jre\1.4.2\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

    5.开始 > 所有程序 中增加Oracle - oraDb10g_home文件夹

    6.oracle 10g 更改8080端口号(如果需要)
    在sqlplus下执行:
    call dbms_xdb.cfg_update(updateXML( dbms_xdb.cfg_get()
      , '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()'
      , 9000))
    /
    commit;

    三、测试安装好的Oracle 10g是否能正常运行
    在安装过程中,OUI会在 <ORACLE_HOME>\install下创建两个文件:
    readme.txt:记录各种Oracle应用程序的URL与端口。
    Portlist.ini:记录Oracle应用程序所使用的端口。
    1.登录Enterprise Manager 10g Database Control
    与以前的版本不同,Oracle企业管理器只有B/S模式。在Web浏览器中输入下列URL:
    http://<Oracle服务器名称>:5500/em
    例如:
    http://localhost:5500/em
    进入Enterprise Manager 10g登录窗口。用SYS帐户,以SYSDBA身份登录Oracle数据库。

    如果是第一次登录时,先进入Oracle 10g版权页。

    单击右下方的“I Agree”按钮,进入Enterprise Manager 10g。

    现在我们可以用来管理Oracle数据库了。

    2.使用iSQL*Pls登录Oracle数据库
    iSQL*Plus是B/S模式的客户端工具。在Web浏览器中输入下列URL:
    http://<Oracle服务器名称>:5560/isqlplus
    例如:
    http://localhost:5560/isqlplus
    进入iSQL*Plus登录窗口。用hr帐户登录Oracle数据库。

    注:如果不知道HR的口令,现用sys登录,修改HR的口令,例如,将HR的口令改为hr:alter user hr identified by hr;
    登录进入iSQL*Plus工作区后,可以在工作区输入SQL*Plus指令、SQL语句与PL/SQL语句。

    3.使用SQL*Plus登录Oracle数据库
    SQL*Plus是C/S模式的客户端工具程序。
        单击“开始” > “所有程序” > “Oracle – oracle10g_home” > “Application Development” > “SQL Plus”
        在登录窗口中输入hr帐号与口令

    4.使用命令行SQL*Plus登录Oracle数据库
    传统的SQL*Plus是一个命令行客户端程序。在命令窗口中输入图27中所示的命令进行测试。
     
  • Linux 常用命令

    2010-06-08 17:28:48

    系统
    # uname -a               # 查看内核/操作系统/CPU信息
    # head -n 1 /etc/issue   # 查看操作系统版本
    # cat /proc/cpuinfo      # 查看CPU信息
    # hostname               # 查看计算机名
    # lspci -tv              # 列出所有PCI设备
    # lsusb -tv              # 列出所有USB设备
    # lsmod                  # 列出加载的内核模块
    # env                    # 查看环境变量
    资源
    # free -m                # 查看内存使用量和交换区使用量
    # df -h                  # 查看各分区使用情况
    # du -sh <目录名>        # 查看指定目录的大小
    # grep MemTotal /proc/meminfo   # 查看内存总量
    # grep MemFree /proc/meminfo    # 查看空闲内存量
    # uptime                 # 查看系统运行时间、用户数、负载
    # cat /proc/loadavg      # 查看系统负载
    磁盘和分区
    # mount | column -t      # 查看挂接的分区状态
    # fdisk -l               # 查看所有分区
    # swapon -s              # 查看所有交换分区
    # hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
    # dmesg | grep IDE       # 查看启动时IDE设备检测状况
    网络
    # ifconfig               # 查看所有网络接口的属性
    # iptables -L            # 查看防火墙设置
    # route -n               # 查看路由表
    # netstat -lntp          # 查看所有监听端口
    # netstat -antp          # 查看所有已经建立的连接
    # netstat -s             # 查看网络统计信息
    进程
    # ps -ef                 # 查看所有进程
    # top                    # 实时显示进程状态
    用户
    # w                      # 查看活动用户
    # id <用户名>            # 查看指定用户信息
    # last                   # 查看用户登录日志
    # cut -d: -f1 /etc/passwd   # 查看系统所有用户
    # cut -d: -f1 /etc/group    # 查看系统所有组
    # crontab -l             # 查看当前用户的计划任务
    服务
    # chkconfig --list       # 列出所有系统服务
    # chkconfig --list | grep on    # 列出所有启动的系统服务
    程序
    # rpm -qa                # 查看所有安装的软件包
  • Oracle 10g for Windows 简体中文版的安装过程

    2010-06-08 10:12:11

    我的配置

        操作系统:Windows Server 2003 sp2

        内存:256M以上

        1.下载Oracle 10g 地址

         http://www.oracle.com/technology/global/cn/software/products/database/oracle10g/index.html

        2.解压缩后就可以安装了。执行SETUP.EXE ,在DOS下运行片刻进入ORACLE 10G

        3.安装-安装方法界面在这里你要指定自己的安装方法,ORACLE提供了两种安装方法:基本安装(I)和高级安装(A)

        基本安装(I):使用标准配置选项(需要输入的内容最少)执行完整的10g安装。

                             注意:此选项使用文件系统进行存储,并将一个口令用于所有数据库帐户(SYS、SYSTEM、SYSMAN、DBSNMP)。要设置安装的主目录、安装类型和创建启动数据库。

        高级安装(A):高级选项,为不同的帐户设置不同的口令,选择数据库语言,产品语言,自动备份,定制安装以及备用存储选项(自动存储管理)。

    基本安装

        2009-03-07_145705

    测试成功

    2009-03-07_150528

    安装信息

    2009-03-07_150557

    2009-03-07_150614

    配置数据库

    2009-03-07_153453

    安装结束,已安装产品

    2009-03-07_155720

        点击口令管理,可以设置用户口令,

    2009-03-07_155514        

    高级安装

    2009-03-07_203534

        选择安装类型:(企业版、标准版、个人版、定制)。这里选择企业版。下一步。

    2009-03-07_203621

        指定主目录详细信息:包括安装产品的名称及安装产品的完整路径。选择后下一步。

    2009-03-07_203638

        进入产品特定先决条件的检查界面:在这里要检查安装ORACLE所需的操作系统需求、物理内存需求、网络配置需求等等。检查后的结果就在该界面下边的下拉框中。可能个别的检查结果会失败,但不会影响安装。

    2009-03-07_203658

        如果本机上还安装了其他版本的数据库的话,可能会询问是否升级现有的数据库。选择否。下一步。

        选择配置选项(创建数据库、配置自动存储管理(ASM)、仅安装数据库软件)。

    2009-03-07_203807

        选择数据库配置即选择你要创建的数据库类型:(一般用途、事务处理、数据仓库、高级)。

    2009-03-07_203835

        指定数据库配置选项(数据库命名:全局数据库名和系统标示符SID、数据库字符集、数据库示例是否创建带样本的数据库)。

    2009-03-07_203901

        选择数据库管理选项:默认为使用database control管理数据库,是否启用电子邮件通知。

    2009-03-07_203914

        指定数据库存储选项:选定要创建数据库的存储机制(文件系统即你创建的数据库的文件的位置、自动存储管理、裸设备。)

    2009-03-07_203949

        指定备份和恢复选项:选择是否起用自动备份选项。

    2009-03-07_203958

        指定数据库方案的口令。包括SYS、SYSTEM、SYSMAN、DBSNMP的口令。注意口令的首字符为字母

    2009-03-07_204034

        最后生成ORACLE UNIVERSAL INSTALL的概要文件。仔细检查概要文件确定自己的选项,如果没有什么更改的了。

               2009-03-07_204058

    点安装就开始ORACLE 10g的安装了

    2009-03-07_204108

    配置数据库

    2009-03-07_211152

    2009-03-07_155720

    安装完成

    安装客户端

    解压Client软件包,运行Setup.exe 启动安装程序

    2009-03-08_103859

    安装类型-选择管理员

    2009-03-08_103937

    指定安装目录

    2009-03-08_103947

    环境检查

    2009-03-08_104003

    点击安装,开始安装

    2009-03-08_104026

    安装进度

    2009-03-08_104042

    选择执行典型配置,如果需要以后再通过Net Manager工具配置

    2009-03-08_105622

    下一步

    2009-03-08_105631

    安装完成

    2009-03-08_105645

    from : http://www.cnblogs.com/TerryFeng/archive/2009/03/08/1406147.html

  • B/S与B/C

    2010-06-03 16:38:39

    有些东西只是看个眼熟,觉的会就不会看了,其实真不能轻敌啊,我昨天去离我家只有十分钟不到的公司去面试,结果走反了方向,因为我觉的我知道,就在我家附近,所以没有去查个清楚,今天面对B/S结构竟一时想不起来是做啥的,光知道B/C了。晕不,写到书面上时傻了,这两件事充分说明了什么问题?哎要吸取教训啊。越是觉的容易的,离自己生活近的东西越不能小看,我是长记性啦。

    B/S架构

      B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。 B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。

      以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
      一、B/S模式的优点和缺点
      B/S结构的优点
      (1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
      (2)、业务扩展简单方便,通过增加网页即可增加服务器功能。
      (3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
      (4)、开发简单,共享性强
      B/S 模式的缺点
      (1)、个性化特点明显降低,无法实现具有个性化的功能要求。
      (2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
      (3)、页面动态刷新,响应速度明显降低。
      (4)、功能弱化,难以实现传统模式下的特殊功能要求。
       二、C/S 模式的优点和缺点
      C/S 模式的优点
      1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
      2.操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
      3.C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
      C/S 模式的缺点
      1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
      2.兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
      3.开发成本较高,需要具有一定专业水准的技术人员才能完成。
      三、B/S架构软件的优势与劣势
      (1)、维护和升级方式简单。目前,软件系统的改进和升级越来越频繁,C/S系统的各部分模块中有一部分改变,就要关联到其它模块的变动,使系统升级成本比较大。B/S与C/S处理模式相比,则大大简化了客户端,只要客户端机器能上网就可以。对于B/S而言,开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本。如果客户端的软件系统升级比较频繁,那么B/S架构的产品优势明显——所有的 升级操作只需要针对服务器进行,这对那些点多面广的应用是很有价值的,例如一些招聘网站就需要采用B/S模式,客户端分散,且应用简单,只需要进行简单的浏览和少量信息的录入。
      (2)、系统的性能
      在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发布的信息必须是以HTML格式为主,其它格式文件多半是以附件的形式存放。而HTML格式文件(也就是Web页面)不便于编辑修改,给文件管理带来了许多不便。比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。
      (3)、系统的开发
      C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术应是更成熟、更可靠的。

    四、B/S、C/S结构软件技术上的比较

      其实,无论是B/S还是C/S,他们都不新鲜。C/S(Client server,客户端/服务器)技术从上世纪90年代初出现至今已经相当成熟,并得到了非常广泛的应用,其结构经历了二层C/S、三层C/S的更迭。B/S(Browser rver,浏览器/服务器)技术则是伴随着Internet的普及而来的。有必要说明的是,B/S最早并不叫“B/S”,此类应用国外通常叫Web应用,是国内一些公司“创造”了“B/S”这个词。
      应该说,B/S和C/S各有千秋,他们都是当前非常重要的计算架构。在适用Internet、维护工作量等方面,B/S比C/S要强得多;但在运行速度、数据安全、人机交互等方面,B/S远不如C/S。综合起来可以发现,凡是C/S的强项,便是B/S的弱项,反之亦然。因此,问题也就因此而产生了,我们的ERP产品到底该用B/S还是C/S架构呢?一场关于C/S与B/S的口水战也由此在ERP业界拉开了序幕。在互联网泡沫盛行的2000年至2002年间,这场口水战达到了顶峰。但直到现在,人们也没有辩出谁是谁非。
      事实上,从上面的分析可以看出,这场口水战不可能有胜负出现,因为B/S与C/S具有不同的优势与特点,他们无法相互取代。例如,对于以浏览为主、录入简单的应用程序,B/S技术有很大的优势,现在全球铺天盖地的Web网站就是明证;而对于交互复杂的ERP等企业级应用,B/S则很难胜任,从全球范围看,成熟的ERP产品大多采用二层或三层C/S架构,B/S的ERP产品并不多见。
      “B/S还是C/S”也就由此成了ERP的技术之痛。难道这个痛就无药可救了吗?是否有可能将B/S与C/S的优势融合呢?答案是肯定的,在这几年的发展中将B/S与C/S的优势完美地结合起来,就是说该平台的应用系统能以B/S的方式发布运行,同时又具有C/S方式的极强的可操作性。这点从该平台生成的商品化的网络协同商务管理软件上得到充分的体现!
  • 测试环境搭建

    2010-06-01 09:54:59

    一般来说,配置测试环境可遵循下列原则:
       1、真实:尽量模拟用户的真实使用环境。这里需要提一点,关于项目软件与产品软件需要不同看待。项目软件由于只针对某一群体的用户,所以测试的环境比较单一。但产品软件针对的是广大群众,所以测试环境比较复杂,要多方面考虑。
       2、干净:测试环境中尽量不要安装与被测软件无关的软件。笔者就遇到这种事情,两台机器,针对一个功能,一台测试OK,另一台测试NG,最后根据调查发现,测试OK的机器上安装了客户根本不会安装的VC++开发环境,测试NG的机器正因为没有安装VC,所以测试出了这个bug:软件中缺少必要的动态链接库支持。但这个干净也不是必须的,有时还要刻意去测试某个软件去其他软件并存时的兼容性问题。
       3、无毒,这个应该不必多说了,测试工作应该确保在无毒的环境中进行。
       4、独立:测试环境与开发环境相互独立。就是说开发环境和测试环境最好分开,即测试人员和开发人员分别用不同的服务器(数据库、后台服务器等),避免造成相互干扰。
  • CMMI评估流程

    2010-05-28 16:38:32

    SCAMPI概述 (Overview)
    CMMI评估方法简称为SCAMPI(Standard CMMI Appraisal Method for Process Improvement),全称为用于过程改进的CMMI标准评估方法。作为CMMI产品系列的一个重要组成部分,SCAMPI是CMMI实践检查工具,用于内部过程改进评估、供应商选取评估、及过程审计评估。
    目前在中国,SCAMPI主要用于乙方内部过程改进的检查及等级评定,作为乙方工程管理提升及市场竞争的工具。随着CMMI 采购模型(CMMI-ACQ V1.2)的正式发布,越来越多的甲方开始效法国外企业进行采购的管理和控制,并使用SCAMPI作为供应商选取的工具。同时,对于大中型项目,甲方也将使用SCAMPI作为项目过程审计的工具,以评估项目绩效,作为项目奖惩评定及合同付款的依据。
    SCAMPI评估方法,按级别可分为A、B、C三级,其中A级最为严格,是能进行CMMI等级评定的唯一正式评估方法。SCAMPI B主要用于预评估/阶段评估,总体要求和A类似,通常适于过程改进进行一段时间后的检查。而SCAMPI C则主要用于第一次评估,特别是企业没有CMM/CMMI过程改进经验时。SCAMPI评估必须由SEI授权的主任评估师领导进行。
     

    SCAMPI A
    评估流程 (Appraisal Process)
    从SCAMPI A评估的角度,评估包括评估准备和评估实施两个部分。其中评估准备通常需要1-3个月,评估实施一般需要5-10天,具体现场评估时间和被评估单位的规模、地理分布、待评估级别有关。主任评估师负责和管理者或其代表沟通制定并完善评估计划、培训评估小组成员和组织实施评估就绪检查(包括数据就绪、评估组就绪和后勤保障就绪三个部分)并领导评估组完成正式评估,提交评估结果。实施流程见如下图所示:
     
      
  • [论坛] [我和51Testing]前进的道路上与你长相伴

    2010-04-27 11:05:32

    时间飞快,今天所做的事让人来不及回味就成为往事,转眼间离开校门己经三年,而这三年的时间有两年多都是与51testing息息相关的,可以这么说除了休息日,我的工作日总是有它相伴的。
        记得08年的3月,我疯狂的在百度上搜软件测试,哪时候我很笨,不知道有哪么多测试网,就是一个偶然的机会,我右手的中指一不小点了下鼠标的左键,从此我就掉进了51testing这个论坛。哪个时候我知道了有这么多人做测试,还有这么专业的测试论坛,就想测试一定是个很好的职业,于是更加增强了我做测试的决心。看了很多天书看不懂,就开始泡新手上路,一个个的贴子点开看,当时最有收获的是回贴的内容吧,不敢发贴,怕自己的问题引来别人的嘲笑,因为哪个时候总觉的自己问的问题在别人眼里很白,就这样我在新手上路区潜水着,电脑里的有关测试的资料也越来越多,在看别人的贴子里也解决了不少自己的疑惑,就这样充实着,索取着。。。。。直到七月份到了上海开始找测试方面的工作时,投出去的简历全沉入大海,偶尔收到的面试通知也是有关网页设计方面的,这个我并不奇怪,因为为了更快的找到工作,我职业锁定了两个:网页设计与软件测试。而前者又在经验方面优胜于后者,所以对测试的冷淡我并不奇怪。然而我放弃了一个又一个网页设计的面试,执着的盯着软件测试。日子一天天过去,十多天过去了,仅得到一个测试方面的面试,可是哪个公司是招的实习生,待遇是没工资,只有交通补助800块钱,后来面试我的哪个男面试官跟我说,你的条件完全符合,而你以前的经验也会帮我们其它组里解决点问题,但是我怕你接受不了待遇,800块钱真的不能让我在上海生存,迫不得己我放弃了这个仅有的一个测试职位。不过信心也增加了一点,至少是我选择的放弃,于是我抛开设计完全找测试方面的职位,又过了四五天焦急等待找工作的心真的是按耐不住了,于是在论坛上发了个求助贴,并给“狗蜡笔粉丝”发了个求助消息,是他给了我鼓励,还有哥哥的安慰,让我坚持下去,我边投边学习,终于没过几天收接到了现在公司的电话,面试过程中,我没有编造任何经验,实事求事,但是理论回答的很好,也少少加了自己的见解,但是整个过程在很紧张中渡过,原以为不会录取,没想到四天后接到电话通知我下周一去复试。就这样我得到了现在的公司,踏入了测试的行例。
        从入职的哪天起,我的51testing天天开着,我很少看其它网页,网易新闻,环球新闻,可可听力,测试论坛是我工作之外必不可少的作业。真正工作中我遇到困惑,我找51testing,我遇到不懂的我还是找51testing,慢慢的我开始去“测试用例设计”区找找学习的资料,刚入职的头两个月,公司没有学习资料,我几乎整天就是泡51testing。也就是哪两个月,我以前看的不懂的哪些东西,开始懂了,我在测试上开始有了新的认识。入职第三个月,我开始接手公司的工作了,大概是新人,所以工作的难度很低,我上手也容易了很多。接下来的日子我除了忙工作就是泡论坛,我也不知道怎么有哪么多东西要看。说实话我觉的08年之前的贴子很多都很好,很值得看。工作一年多的时候,我开始懂得了报恩,于是我把我的经历,我的资料发贴分享。大概写的很普通,写着大多人共有的经历,所以哪篇“写给新朋友的,我的经历”一下子引起了众多坛友的共鸣。于是我的名字竟然就这样在论坛里有了声音。再后来我做了新手上路的斑竹,我想为新来的朋友提供点帮助,尽点力。因为我是从51论坛上出来的,所以我也想回赠我得到的东西。我在测试路上的成长的确是显而易见的,我们部门的经理也多次表扬我,说我进步很快,而这一切真的都来源于51论坛。我希望准备做测试的朋友,不要迷惑,不要总是发问,我建议你们能真正的做下来,读读论坛的贴子,每个区都有几个置顶的贴子,哪都是各个斑竹精心整理的贴子,为了不让大家错过好贴,分类整理,我觉得我们没有理由不看看。哪是对自己水平的提升,也是对辛勤工作的斑竹们的尊重。
        要说的太多,我与51testing有着说不完的故事,但是时间关系,只能回忆到这里,我祝51生日快乐,你永远是我们测试人的精神家园,是测试论坛行例中最耀眼的一个。我也希望准备进入测试行业的学弟学妹,不要盲目的学习,更不要非要等把所有东西全撑握了再有信心去找工作,因为测试永远有学不完的知识,你只要撑握其精髓,懂得其方法,就可以找单位去实践,在工作中拓展自己,提高自己,才是硬道理。行动吧,向前冲,只要用心,每个人的路都会走很远。。。。。切记做测试这一行,一定要心态好,有耐心,遇事不能乱,工作之余多提高自己,经常充充电,就算现在岗位用不上,总有一天你拥有的东西会为你带来很多。
  • 软件测试工程师笔试试题

    2010-04-19 16:48:14

    一、判断题(每题1分,12 分,正确的√,错误的╳) 
    1.软件测试的目的是尽可能多的找出软件的缺陷。() 
    2.Beta 测试是验收测试的一种。() 
    3.验收测试是由最终用户来实施的。() 
    4.项目立项前测试人员不需要提交任何工件。() 
    5.单元测试能发现约80%的软件缺陷。() 
    6.代码评审是检查源代码是否达到模块设计的要求。() 
    7.自底向上集成需要测试员编写驱动程序。() 
    8.负载测试是验证要检验的系统的能力最高能达到什么程度。() 
    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。() 
    10.代码评审员一般由测试员担任。() 
    11.我们可以人为的使得软件不存在配置问题。() 
    12.集成测试计划在需求分析阶段末提交。() 
    二、不定项选择题(每题2 分,10分) 
    1.软件验收测试的合格通过准则是:() 
    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。 
    B. 所有测试项没有残余一级、二级和三级错误。 
    C. 立项审批表、需求分析文档、设计文档和编码实现一致。 
    D. 验收测试工件齐全。 
    2.软件测试计划评审会需要哪些人员参加?() 
    A.项目经理 
    B.SQA 负责人 
    C.配置负责人 
    D.测试组 
    3.下列关于alpha 测试的描述中正确的是:() 
    A.alpha 测试需要用户代表参加 
    B.alpha 测试不需要用户代表参加 
    C.alpha 测试是系统测试的一种 
    D.alpha 测试是验收测试的一种 
    4.测试设计员的职责有:() 
    A.制定测试计划 
    B.设计测试用例 
    C.设计测试过程、脚本 
    D.评估测试活动 
    5.软件实施活动的进入准则是:() 
    A.需求工件已经被基线化 
    B.详细设计工件已经被基线化 
    C.构架工件已经被基线化 
    D.项目阶段成果已经被基线化 
    三、填空题(每空1分,24 分) 
    1.软件验收测试包括、、三种类型。 
    2.系统测试的策略有功能测试、、、、易用性测 
    试、、、、、、、、 
    、、等15 种方法。 
    3.设计系统测试计划需要参考的项目文档有、和迭代计划。 
    4.对面向过程的系统采用的集成策略有、两种。 
    5.通过画因果图来写测试用例的步骤为、、、及把因果图转 
    换为状态图共五个步骤。 

    四、简答题(共37分) 
    1. 阶段评审与同行评审的区别。(4 分) 
    2 . 什么是软件测试。(3 分) 
    3 . 简述集成测试的过程。(5 分) 
    4 . 怎样做好文档测试?(4 分) 
    5. 白盒测试有那几种方法?(6 分) 
    6. 系统测试计划是否需要同行评审,为什么?(4 分) 
    7. Alpha 测试与beta 测试的区别。(4 分) 
    8 . 比较负载测试、容量测试和强度测试的区别。(6 分) 
    9 . 测试结束的标准是什么?(3 分) 
    五、 设计题(共15分) 
    对下面给出的程序控制图,分别以各种不同的测试方法写出最少的测试用例。 

    测试人员_考试试卷(考试时间100分钟,满分100分) 
    姓名:__________部门:__________员工号:__________ 
    一、填空题:(每一空格2分,共60分) 
    1、 软件实施活动的输出工件有 、 、 、 。 
    2、 代码评审主要做 工作。 
    3、 软件实施活动中集成员的职责是 。 
    4、 验证与确认软件实施活动主要有 、代码评审、 、 、 、SQA 
    验证。 
    5、 表明测试已经结束。 
    6、 软件测试的目的是 。 
    7、 软件测试主要分为 、 、 、 四类测试。 
    8、 软件测试活动有制定测试计划、 、 、 、 、 、测 
    试评估、测试结束八个步骤。 
    9、 软件测试活动的输出工件有_ 、 、 、 、 。 
    10、软件测试角色有 、 、 、 。 
    二、不定项选择题:(每题3 分,共15分) 
    1、 软件实施活动的进入准则是() 
    A、 需求工件已经被基线化 
    B、 详细设计工件已经被基线化 
    C、 构架工件已经被基线化 
    D、 项目阶段成果已经被基线化 
    2、 下面角色不属于集成计划评审的是() 
    A、 配置经理 
    B、 项目经理 
    C、 测试员 
    D、 编码员 
    3、软件测试设计活动主要有()

    A、 工作量分析 
    B、 确定并说明测试用例 
    C、 确立并结构化测试过程 
    D、 复审并评估测试覆盖 
    4、不属于集成测试步骤的是() 
    A、 制定集成计划 
    B、 执行集成测试 
    C、 记录集成测试结果 
    D、 回归测试 
    5、属于软件测试活动的输入工件的是() 
    A、 软件工作版本 
    B、 可测试性报告 
    C、 软件需求工件 
    D、 软件项目计划 
    三、问答题:(共25 分) 
    1、 项目的集中管理在软件公司的哪一个层面?(2 分) 
    2、 请描述软件测试活动的生命周期。(8 分) 
    3、 什么是测试评估,测试评估的范围是什么?(5 分) 
    4、 阐述工作版本的定义。(2 分) 
    5 、 请画出软件测试活动的流程图。(8 分) 


    测试人员考试试卷(考试时间90分钟,满分100分) 
    姓名:__________部门:__________员工号:__________ 
    一、 判断题(每题2分,正确的“√”,错误的“╳”) 
    1 、 好的测试员不懈追求完美。( ) 
    2、 测试程序仅仅按预期方式运行就行了。( ) 
    3、 不存在质量很高但可靠性很差的产品。( ) 
    4、 软件测试员可以对产品说明书进行白盒测试。( ) 
    5、 静态白盒测试可以找出遗漏之处和问题。( ) 
    6、 总是首先设计白盒测试用例。( ) 
    7、 可以发布具有配置缺陷的软件产品。( ) 
    8、 所有软件必须进行某种程度的兼容性测试。( ) 
    9、 所有软件都有一个用户界面,因此必须测试易用性。( ) 
    10、 测试组负责软件质量。( ) 
    二、 简答题 
    1、 软件的缺陷等级应如何划分?(3 分) 
    2、 如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?(5 分) 
    3、 你认为一个优秀的测试工程师应该具备哪些素质?(3 分) 
    4、 产品测试到什么时候就算是足够了?(2 分) 
    5、 测试计划的目的是什么?(2 分) 
    6、 为什么要进行软件测试?软件测试的目的是什么? (5 分) 
    7、 软件测试应该划分几个阶段?简述各个阶段应重点测试的点?各个阶段的含义?(5 分) 
    8、 如何做一名合格的测试人员?(3 分) 
    9、 针对缺陷采取怎样的管理措施?(5 分) 
    三、 专业词语解释(每题2 分) 
    α测试: 
    β测试: 
    驱动模块: 
    桩模块: 
    白盒测试: 
    静态测试: 
    四、 选择题(每题2分) 
    1.下面哪些属于动态分析( ) 
    A. 代码覆盖率 
    B. 模块功能检查 
    C. 系统压力测试 
    D. 程序数据流分析 
    2.下面哪些属于静态分析( ) 
    A、 代码规则检查 
    B、 序结构分析 
    C、 序复杂度分析 
    D、 内存泄漏 
    五、 设计题(10分) 
    在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误,可构成三角 
    形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”。画出程 
    序流程图、控制流程图、找出基本测试路径 ,对此设计一个测试用例。 
    六、 论述题 
    1、 试叙述对一个软件项目测试的全过程。(10 分) 
    2、 简述你对测试工作的认识过程、在以后的工作的一些建议。(6 分) 
    3 、 述静态测试和动态测试的区别?(5 分) 

    测试人员_考试试卷(考试时间100分钟,每题10 分,满分100分) 
    姓名:__________部门:__________员工号:__________ 
    1. 什么是软件测试,以及软件测试的意义? 
    2. 什么是软件测试静态分析,软件测试动态分析, 
    3. 下面那些属于静态分析() 
    A、 编码规则检查 
    B、 程序结构分析 
    C、 程序复杂度分析 
    D、 内存泄漏 
    4. 下面那些属于动态分析() 
    A、 代码覆盖率 
    B、 模块功能检查 
    C、 系统压力测试 
    D、 程序数据流分析 
    5. 从测试技术角度,正确的选择是(),给出各自的含义? 
    A、 静态测试 
    B、 黑盒测试 
    C、 动态测试 
    D、 白盒测试 
    6. 从测试阶段角度,测试正确的顺序是(),同时给出所选择的正确策略含义和被测对象是什么? 
    A、 单元测试 
    B、 集成测试 
    C、 系统测试 
    D、 确认测试 
    7. 针对缺陷采取怎样的管理措施? 
    8. 在测试生命周期,测试过程分为几个阶段,以及各个阶段的含义? 
    9. 简要写出自己在理解的基础质上所认为引入测试管理的意义 
    10. 在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误, 
    可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等 

    边三角形”。画出程序流程图、控制流程图、计算圈复杂度V(g),找出基本测试路径

    软件测试笔试题
    判断题1.软件测试的目的是尽可能多的找出软件的缺陷。(Y)

    2.Beta 测试是验收测试的一种。(Y)

    3.验收测试是由最终用户来实施的。(N)

    4.项目立项前测试人员不需要提交任何工件。(Y)

    5.单元测试能发现约80%的软件缺陷。(Y)

    6.代码评审是检查源代码是否达到模块设计的要求。(N)

    7.自底向上集成需要测试员编写驱动程序。(Y)

    8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N)

    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)

    10.代码评审员一般由测试员担任。(N)

    11.我们可以人为的使得软件不存在配置问题。(N)

    12.集成测试计划在需求分析阶段末提交。(N)


    二、选折

    1.软件验收测试的合格通过准则是:(ABCD)

    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

    B. 所有测试项没有残余一级、二级和三级错误。

    C. 立项审批表、需求分析文档、设计文档和编码实现一致。

    D. 验收测试工件齐全。

    2.软件测试计划评审会需要哪些人员参加?(ABCD)

    A.项目经理

    B.SQA 负责人

    C.配置负责人

    D.测试组

    3.下列关于alpha 测试的描述中正确的是:(AD)

    A.alpha 测试需要用户代表参加

    B.alpha 测试不需要用户代表参加

    C.alpha 测试是系统测试的一种

    D.alpha 测试是验收测试的一种

    4.测试设计员的职责有:(BC)

    A.制定测试计划

    B.设计测试用例

    C.设计测试过程、脚本

    D.评估测试活动

    5.软件实施活动的进入准则是:(ABC)

    A.需求工件已经被基线化

    B.详细设计工件已经被基线化

    C.构架工件已经被基线化

    D.项目阶段成果已经被基线化

    三、添空

    1.软件验收测试包括:正式验收测试,alpha测试,beta测试。

    2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)

    3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。

    4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。

    5.(这题出的有问题哦,详细的5步骤为~~)通过画因果图来写测试用例的步骤为:

    (1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

    (2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。

    (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。

    (4)把因果图转换成判定表。

    (5)把判定表的每一列拿出来作为依据,设计测试用例。


    四、简答(资料是搜集整理的,感谢前辈的解题)无

    1.区别阶段评审的与同行评审

    同行评审目的:发现小规模工作产品的错误,只要是找错误;

    阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

    同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导

    阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

    同行评审内容:内容小 一般文档 < 40页, 代码 < 500行
    阶段评审内容: 内容多,主要看重点

    同行评审时间:一小部分工作产品完成

    阶段评审时间: 通常是设置在关键路径的时间点上!


    2.什么是软件测试

    为了发现程序中的错误而执行程序的过程


    3简述集成测试的过程

    系统集成测试主要包括以下过程:

    1. 构建的确认过程。

    2. 补丁的确认过程。

    3. 系统集成测试测试组提交过程。

    4. 测试用例设计过程。

    5. 测试代码编写过程。

    6. Bug的报告过程。

    7. 每周/每两周的构建过程。

    8. 点对点的测试过程。

    9. 组内培训过程。


    4 怎么做好文档测试

    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142

    检查文档的编写是否满足文档编写的目的

    内容是否齐全,正确

    内容是否完善

    标记是否正确



    5 白盒测试有几种方法

    总体上分为静态方法和动态方法两大类。

    静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义

    动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。


    6系统测试计划是否需要同行审批,为什么

    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。


    7Alpha测试与beta的区别

    Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。


    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。


    8比较负载测试,容量测试和强度测试的区别

    负载测试:在一定的工作负荷下,系统的负荷及响应时间。

    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

    容量测试:容量测试目的是通过测试预先分 析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。


    9测试结束的标准是什么?

    用例全部测试。
    覆盖率达到标准。
    缺陷率达到标准。
    其他指标达到质量标准


    10描述软件测试活动的生命周期?

    测试周期分为计划、设计、实现、执行、总结。其中:

    计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
    设计:完成测试方案,从技术层面上对测试进行规划;
    实现:进行测试用例和测试规程设计;
    执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。

    总结:记录测试结果,进行测试分析,完成测试报告。


    11软件的缺陷等级应如何划分?

    A类—严重错误,包括以下各种错误: 1.由于程序所引起的死机,非法退出 2. 死循环 3. 数据库发生死锁 4. 因错误操作导致的程序中断 5. 功能错误 6.与数据库连接错误 7. 数据通讯错误


    B类—较严重错误,包括以下各种错误: 1. 程序错误 2. 程序接口错误 3. 数据库的表、业务规则、缺省值未加完整性等约束条件

    C类—一般性错误,包括以下各种错误: 1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2. 打印内容、格式错误 3. 简单的输入限制未放在前台进行控制 4.删除操作未给出提示 5. 数据库表中有过多的空字段

    D类—较小错误,包括以下各种错误: 1.界面不规范 2. 辅助说明描述不清楚 3. 输入输出不规范 4. 长操作未给用户提示 5. 提示窗口文字未采用行业术语 6.可输入区域和只读区域没有明显的区分标志


    E类—测试建议

  • 纪念一下

    2010-04-16 17:10:37

    最近比较忙,一直没有去5E,今天去转了转,看到两篇译文己经发表了,真开心,这是和Jenvee一起努力的成果,嘻嘻,觉的对自己来说还是很值得纪念的事,发贴纪念,需要的朋友可以下载,发现不足之处可以帮我提出来,谢谢


    http://download.5etesting.com/answer.php?qid=297

    http://download.5etesting.com/answer.php?qid=343

  • 备战

    2010-04-16 11:44:22

    昨天一个朋友打电话说他们公司司招人,问我有没有意向,有呀,我说太有了,正想找工呢,于是让我准备一下,高兴之后,是痛苦呀,编程与英语面试。本身就没有几次面试经验,现场写程序与接受全英面试是我从来未遇到过的场面,英语听没问题就怕说。编程更是好久有看过了,哎,没办法,很好的机会,我要硬着头皮上,大不了就是一死吗,至少我还得到了失败的经验,呵呵,备战中
  • PPT制作十大绝招

    2010-03-23 15:35:52

    绝招一:文字是用来瞟的,不是读的

          我们时不时听到这样的言论:“PPT很简单,就是把Word里的文字复制、粘贴呗。”这其实是对PPT的一种无知与亵渎。如果直接把文字复制粘贴就能达到演示的效果,PPT根本就没有存在的必要了。
          PPT的本质在于可视化,就是要把原来看不见、摸不着、晦涩难懂的抽象文字转化为由图表、图片、动画及声音所构成的生动场景,以求通俗易懂、栩栩如生。

    形象,至少能给你带来三方面的感受:
        一是便于理解。
          文字总是高度抽象的,人们需要默读、需要转换成自己的语言、需要上下联想、需要寻找其中的逻辑关系;但人们看电影就轻松许多,只需要跟着故事的发展顺理成章地享受其情节、体味其寓意就行了。PPT就是要把这些文字变得像电影一样生动。
        二是放松身心。
          如果把一本小说贴在墙上,相信你看半个小时就会腰酸背痛;如果把小说拍成电视剧,也许你看上一天也不觉得疲惫。就是这个道理。
        三是容易记忆。
          传统的PPT,你需要观众记住的是文字,这个难度太大了,即使记住了也很容易忘记;而形象化PPT,可以让观众轻松记住其中的图形、逻辑或结论,也许三五年后,人们仍然能够记忆犹新。
          改变那种“复制、粘贴”的做法吧!把那些无关紧要的内容大胆删除,把长篇大论的文字尽量提炼,也许刚开始你不习惯,也许你做得还很粗糙,别放弃,总有一天你会让观众赞不绝口的。
          有的领导会问:“如果PPT没有文字,你让我讲什么?”的确,演示习惯的改变不是一朝一夕的事情,这依赖于演示者对内容的熟悉程度和演示技巧的掌握程度,但有一点,带着观众读文字是演示的大忌,杜绝这一条,演示效果会逐步得到提升。
    所以,提出了两个观点:
    1、文字是用来瞟的,凡是瞟一眼看不清的地方,就要放大,放大还看不清的,删!
    2、文字是PPT的天敌。能减则减,能少则少,能转图片转图片,能转图表转图表。

    绝招二:20分钟是快乐的极限

          传统上,我们总是认为,讲得越多,时间越长,越体现出演示者的重视。这是计划经济时代的标准。现在,无论我们的领导、客户还是普通的受众,时间都极为宝贵,没有人愿意阅读动辄数百页的研究报告,也没有人去听你的长篇大论。浓缩的才是精品!
        演示的核心内容是什么?观点!
          在此基础上把观众容易困惑的地方、你认为重要的地方作一些说明。永远不要担心你的演示过短,如果花费20分钟就能够把一天才能了解的内容讲清楚,你实际上为观众节省了7小时40分,在时间就是金钱的年代,观众当然求之不得。
          简短的另一个好处是意犹未尽。如果你的演示足够精彩,会给观众留下更多的期待和回味,甚至会有人要求把你的PPT拷回去好好研究几遍呢。
          简短,也对PPT提高了要求。你需要了解哪些内容是观众最关心的,哪些内容是非讲不可的,哪些内容是能带来震撼的,据此,该合并的合并,该删减的删减。也许,这是一个反复的过程,但标准只有一个:不要让观众有打哈欠的时间。

    绝招三:清晰比什么都重要

    PPT有一个致命的弱点——观众容易迷失思路。
    为什么?
    一、PPT毕竟不是电影,其逻辑结构是抽象的,难以把握;
    二、PPT是一页页翻下去的,一次只能看一页内容,前面看过的只能依靠记忆。
    解决的办法有两个:
    一是事先给每位观众发一份演说纲要;
    二是给你的PPT建立清晰的导航系统。
    导航系统主要包括
    一、从片头动画、封面、前言、目录,到切换页、正文页、结尾页等一套完整的PPT架构(本书第3章将详细介绍);
    二、每页都有标题栏(除了标明整个PPT的标题,更重要的是标明本章节的标题、本页的主题);
    三、页码,如果方便的话也尽可能加上。

    绝招四:没有设计就等于垃圾

          传统上,我们把PPT归结为办公处理之类的工具,认为只要简单排版就可以满足需求。
          随着整个社会审美标准的提升,这一观点正被越来越多的人抛弃。PPT,特别是对外PPT,正成为公司形象识别系统的重要组成部分,代表着一个公司的脸面;设计,正成为PPT的核心技能之一,也是PPT水准高低的基本标准。
          无论是汇报、宣传还是比赛、竞标,一个设计精美的PPT最少可以起到以下作用:
    (1)让观众赏心悦目:美女养眼,精美的PPT养神。
    (2)让观众产生好感:爱美之心人皆有之,漂亮的PPT自然能让观众多看几眼。
    (3)赢得观众的信任:人总是有偏见的,精美的设计给人专业、认真、可靠的感觉,内容的含金量也自然得到提升。
    (4)赢得成功的机会:在职场上,美女与帅哥有更多成功的机,PPT演示也是如此。
          内容的好坏难以评价,但形式的优劣却显而易见,喜欢而又信任的方案自然是领导和客户的首选。
    设计非一日之功,但我们可以找到捷径:
    (1)善用专业素材:专业的PPT模板让你的PPT拥有外在美;专业的PPT图表让你的PPT
    具备内在美;专业的PPT图片(包括JPG、PNG、AI等格式)让你的PPT充满生机。
    (2)掌握排版的基本原则:每个人的审美标准是不同的,但总有一些规律是相通的,掌握并遵守这些规则,将使你的PPT设计得到大多数人的认可。这些规则包括:一个中心、合理对齐、画面统一、强烈对比、层次分明等,本书第6章将详细讲述。
    (3)多看精美案例:PPT诞生以来的十多年里,整个社会的设计水准都在迅速提高,三人行,必有我师,在平面设计、动画领域,处处都有值得我们学习的案例。

    绝招五:炫不是动画的根本

    自PPT诞生以来,动画就一直是最大的争议。
    一 种观点认为,PPT就是幻灯片,就是一页一页翻过的图片加文字,在商务PPT应用领域,根本不需要动画或者最多只需简单的页面切换动画; 相反,有无数的仁人志士对PPT动画矢志不渝,用自己的创意和努力一次次创作动画的传奇,也得到众多PPT爱好者的欢呼雀跃。
    近年来,锐普PPT把PPT动画成功应用到商务领域,并得到客户的广泛认同。
    动画,不仅仅让PPT变得生动,更能让PPT表现效果数倍提升。
    (1)片头动画
    让 你的PPT一把抓住观众眼球。电影有片头、游戏有片头、网站有片头,PPT演示也需要片头。演示开始时,观众往往会需要一个适应期,也许 还在想着刚才没有处理完的工作,也许还在跟邻座侃侃而谈,也许还在抱怨着观看演示的辛苦,这时候,你需要立即把观众的视线聚焦到你的演示中来,精美和创意 的片头能立即给观众带来震撼,让观众目不转睛。
    (2)逻辑动画
    一幅静止的画面,观众会 自上而下全面浏览,缺乏逻辑的引导,观众难以把握重点,看完之后还要思考其中的逻辑关系,实际上浪费了精力和注意 力;如果给这幅画面加上清晰的逻辑动画,就把观众自己找线索变成了帮观众理线索。演示者可以控制对象出现的先后顺序、主次顺序、位置改变、出现和退出等, 引导观众按照自己的思路理解PPT内容。
    片头动画让对外宣传的PPT尽显企业的专业与实力。一束光闪过,该公司的logo由轮廓逐渐变得靓丽十足,让人记忆深刻;紧跟的4张动画页面从不同角度展现了上海及该公司的风貌,同时配以连续抽象的文字和动画效果,消除了页面之间的分割感。
    (3)强调动画
    以 往我们只是用颜色的深浅、形状的大小以及字体的不同来突出某些重要内容,这有一个很大的弊端,就是要强调的内容会一直处于强调地位,当我 们讲述别的内容时,它会分散观众的视线;强调动画,通过对象的放大、缩小、闪烁、变色等动作实现强调效果,并能够让演示者自如控制,强调过后自动回复到初 始状态。
    (4)片尾动画
    与那些戛然而止的PPT相比,加一个简单的片尾动画将收到意想不到的效果:
    一是作为礼貌,提醒大家演示结束,并给人一定的缓冲时间,准备接下来的活动;
    二是与片头动画相呼应,做到有始有终,避免给人虎头蛇尾的印象;
    三是通过贯穿始终的形式,提醒观众回忆内容,强化记忆。
    (5)情景动画
    也许你讲述的就是一个故事,故事总是有情节、有过程的,而要用一张静止的画面去表达一个完整的过程,几乎不可能。相反,一套连续的动画,则能把这些过程表现得栩栩如生。以往,我们用Flash、视频来表现这些效果,PPT其实也能够实现。

    绝招六:图表是PPT的筋脉

          商业演示的基本内容就是数据,于是图表变得必不可少。最早出现的是柱图、饼图、线图、雷达图等;咨询公司把数据图表转移到对逻辑关系的表达 上,于是出现了并列、包含、扩散、综合、层进等各类关系图表,从此,文字也可以不再抽象、乏味了;以ThemeGallery为代表的韩国公司、以 PresentationLoad为代表的欧美公司以及以锐普PPT为代表的中国公司等设计公司,则进一步把这一趋势发挥到极致——加入了设计的概念,从 此,文字可以变得像图画一样精美、形象、栩栩如生。
          同样,PowerPoint软件就像天生为图表而生的,强大的像Illustrator一样的绘图功能,加上清晰的操作界面、简单的操作模式,让人人都能轻而易举地掌握。很快,PPT图表就风靡全球,与图片配合使用,让演示如虎添翼。
          如果你的PPT还在受大段文字的困扰,还在为逻辑混乱而发愁,那就赶快学习PPT图表吧。

    绝招七:没有策划就没有精品

          好的PPT是策划出来的,就像宏伟的建筑是规划出来的。
          所有的PPT设计师者首先是策划师,有的是无意识为之,有的是用心去做的,但没有策划的PPT必定是失败的作品。不同的演示目的、不同的演示风格、不同的受众对象、不同的使用环境,决定了不同的PPT结构、色彩、节奏、动画效果等,PPT的人介于观众、领导、演示者等多重标准的审视。
    一个好的PPT作品基于对以上要求的准确把握。
          我们曾经有一些卓越的设计师,出来的作品很美、很耐看,但却一直得不到客户的认可,为什么?就是缺乏准确的策划。美,不是PPT的唯一标准;经验、用心、设身处地为观众着想,即使画面有瑕疵,也往往能赢得演示者的认同和观众的喝彩。

    绝招八:PPT可以当主角

          西方有一种观点开始在中国流行:演讲者永远是主角,PPT不过是陪衬。
          其实这完全是站在西方立场上的一种观点,未必适应中国国情。西方人大多喜欢张扬,擅长演说,甚至在很多人看来演说已经是一种享受,当然不愿意被PPT抢了风头;但中国文化更强调内秀,不愿意抛头露面,擅长演说者更是寥寥,甚至连一些领导在众人面前也不愿张扬,何况一般人?所以,我们常常把自 己作为的一员,是我们代表演说,我们不过是一种符号,低调再低调,宁可把PPT作为众人瞩目的焦点。
    从另一个角度讲:我们是为了演示而演示吗?是为了表现自我吗?
    当然不是!每次我们都是抱着一定的目的进行演示的,或者为了让观众了解我们的工作,
    或者为了让观众选择我们的产品,或者为了沟通一些信息,或者纯粹为了博得大伙一乐……能找到必须让我们成为主角的理由吗?
    没有!
    效果为王,只要能达到目的,不要在乎谁是主角、谁是配角。
    如果你是一位表现欲极强的演说大师,如果这是一个需要你展示自我的舞台,那你就勇敢地站出来,做主角吧!
    如果你是一位稍微内敛的工作者,为了工作才进行这次演示,或者这是一个需要低调的场合,那就不必拘泥于大师们的说教,即使你是配角,也能得到最热烈的喝彩。

    绝招九: PPT不是哑巴

    在很多人眼中,PPT是多媒体的代名词。但这个多媒体,却一直因为无声而名不副实。
    细分析,无声原因有三:
    一是PPT的商务特点限制了声音的应用,毕竟在商务会议场所,人们需要集中精力思考,无论是背景音乐还是动画声音都会给人们带来干扰;
    二是PPT软件设计的功能限制了声音的应用,PPT软件生下来就没有为声音的应用做好充分准备,仅仅了这一功能,对声音的编辑、优化等功能,PowerPoint还无心顾及;
    三 是PPT人群实在太广,经理、文员、老师、销售代表、老总、领导、甚至一些小学生都成了PPT技术员,大家相关的知识储备远不够,缺乏声 音素材、缺乏声音感觉、缺乏声音编辑的技术,但不知不觉中,有人还是尝试起来,结果声音应用不专业,特别有些动作声音常常引来观众一阵哗然。于是,有人总 结了,PPT勿用声音。
    果真这么绝对吗?
    形势正在悄悄变化,PPT有声时代正在来临。
    (1)PPT早已不再限于汇报演示,企业宣传、婚庆礼仪、休闲娱乐等正成为PPT应用的热点领域,声音是不可或缺的元素。
    (2)平面设计、flash、视频等时刻冲击着人们的视觉,人们正经受着最严重的审美疲劳,单纯靠画面给人的刺激已经大大降低,声音是增强画面冲击力的绝佳武器。
    (3)PPT设计公司的崛起,让PPT声音的处理专业化,声音素材库搭建起来,各类声音编辑软件应用自如,配音设备逐步完善,PPT中声音运用的规律也已经把握到位。

    绝招十:退“三”进“七”

    要让PPT高人一等有很多方法,率先使用PowerPoint 2007,无疑是最有效的捷径。
    从PPT专业应用角度看,PowerPoint的以下特点都是我们极为推崇的。
    (1)操作界面更美观、更人性化
    ● 全新的vista般操作界面,让人赏心悦目;
    ● 对文件整体管理的功能集中到左上角的offi ce按钮里,为操作区留出更大空间;
    ● 操作区域更开阔、归类更合理,操作熟练后一目了然;
    ● 自定义按钮非常个性化,把常用的功能放在这里调用更快捷;
    ● 选择窗格与Photoshop 窗格类似,“层出不穷”成为现实,使PPT各项功能全面提升;
    ● 放大/缩小按钮与视图模式按钮同时放置于右下角,更适应一般人的操作习惯。
    (2)绘图和设计功能更强大
    (3)丰富而实用的功能集群
    这些功能包括:
    ● SmartArt图表,可以把文字轻松转化为图表。(只是目前所的图表种类较少,质感过于单调,从设计的角度并不主张过多应用。)
    ● 为PPT文件减肥,2007版的PPTX格式的文件比2003版的PPT格式文件小了很多。
    ● PPT可以直接转为pdf、xps、jpg等格式,并可把其中的部分PPT页面发布出来,供各类场合使用。
    ● 有效防止文档崩溃,在2003版里一旦文档出错,没有保存的数据都会丢失;2007版则能够尽力恢复程序关闭前的状态。
    但2007版也存在一些明显的遗憾:
    其一是对电脑硬件要求较高。不少学员反映,500MHz以下的处理器、256MB以下的内存的电脑用起来都较吃力。
    其 二是与2003版的兼容性不够。PPTX文档一般要转化成PPT文档或者安装插件才能在2003版的PowerPoint中读取。用 2007版所作的立体艺术文字、艺术图形在2003版中是无法编辑的,部分颜色渐变效果、阴影效果、文字效果,甚至一些动画在2003版里会发生变形,需 要在2007版里对照编辑。
    但这些缺陷改变不了2007版快速普及的趋势,要想实现超人一等的PPT表现效果,PowerPoint 2007无疑是最佳的选择。

    文章中观点来源于《PPT演义》一书中的总结,文章内容转载自且行资源

  • PPT高手的制作思路

    2010-03-23 15:34:22


    PPT高手的制作思路

    制作PPT需要思考的东西很多:思路,架构,版面,色调,详略,图片等等。即便是做了8、9年PPT的高手每次在做新PPT之前,还是会很头痛!

          网络PPT高手根据经验,总结了一些做PPT的流程,非常感谢分享:

    1、最开始什么都不要想,不要去查资料,也不要接触电脑,而是用笔在纸上写出提纲,当然,能简单的划出逻辑结构图最好了.越细越好.

    2、打开PPT,不要用任何模板,将你的提纲按一个标题一页整出来.(过去我就总是追求完美,首先搞摸板,花掉半个多小时,做的过程中不满意又修改,做完后又修改,甚至最后完全推翻—-伤神费力耗时!!)

    3、有了整篇结构性的PPT(底版/内容都是空白的,只是每页有一个标题而已),就可以开始去查资料了,将适合标题表达的内容写出来或从网上拷贝进来,稍 微修整一下文字,每页的内容做成带”项目编号”的要点.当然在查阅资料的过程中,可能会发现新的资料,非常有用,却不在你的提纲范围中,则可以进行调整, 在合适的位置增加新的页面.

    4、看看PPT中的内容哪些是可以做成图的,如其中中带有数字、流程、因果关系、障碍、趋势、时间、并列、顺序等等内容的,全都考虑用图画的方式来表现。 如果有时候内容过多或实在是用图无法表现的时候,就用“表格”来表现。实在实在是不行了,才用文字说明。所以,最好的表现顺序是:图–表–字。这个过 程中图是否漂亮不要在意,“糙”点没关系,关键是你用的图是否准确。

    5、选用合适的母版,根据你的PPT呈现出的情绪选用不同的色彩搭配,如果觉得office自带的母版不合适,自己在母版视图中进行调整,自己加背景图、 Logo、装饰图等。其实关于母版颜色的选择,这么多年,我也一直没有研究透彻,据说不同的颜色会给人带来不同的感情冲击,专业的书讲的都是些狗屁理论, 不就是情绪吗?我就按自己的情绪来定了。当然,如果是有公司自己的标准模版,就不用费这些工夫了,直接用之。

    6、在母版视图中调整标题、文字的大小和自体,以及合适的位置。

    7、根据母版的色调,将图进行美化,调整颜色、阴影、立体、线条,美化表格、突出文字等。注意在此过程中,把握整个PPT的颜色不要超过3个色系!否则你的PPT就显得特别乱而且“土”!

    8、美化页面,看看哪里应该放个装饰图,图片可以从网上找,建议用GOOGLE的图片搜索(用英文最好),装饰图的使用原则是“符合当页主题,大小、颜色不能喧宾夺主!”

    9、最后在放映状态下,自己通读一遍,哪里不合适或不满意就调整一下,修改错别字!

    10、你以为这就完了吗??没有!注意错别字!(上一步你已改过了,但不够!你自己做自己查的正确率并不高),你知道吃饭的时候,饭里有只苍蝇是什么感觉 吗?就是看PPT时看到错别字时的感觉!而且读者一般是老板或客户,会非常怀疑的专业精神和工作态度,前面99%的工作已经做的非常不错了,但你的给读者 印象却可能毁于这1%的失误上!因此,将PPT给你的同事或者朋友检查一下,如果文件很重要,建议给2-3个同事检查。

    密技真言:

    尽量用1种字体,最好不要超过3种
    PPT的灵魂—-“逻辑!”
    PPT的恶心—-“错别字等于苍蝇”
    3色原则:“不要超过3种色系”
    6字解码:“大化小,小化图”—-提纲时,用逻辑树尽量将大问题分解成小问题,小问题用图表现。
    12字真言:“能用图,不用表;能用表,不用字”
    只要掌握如上原则,PPT肯定不会很“糙”或“土”,而且具有专业精神!

  • 测试用例标准

    2010-02-09 15:12:37

    1. 接口测试用例
    接口A的函数原型 

    输入/动作

    期望的输出/相应

    实际情况

    典型值…   
    边界值…   
    异常值…   
         
        
    2. 路径测试的检查表

    检查项

    结论

    数据类型问题

    (1)变量的数据类型有错误吗?

    (2)存在不同数据类型的赋值吗?

    (3)存在不同数据类型的比较吗?

     
    变量值问题

    (1)变量的初始化或缺省值有错误吗?

    (2)变量发生上溢或下溢吗?

    (3)变量的精度不够吗?

     
    逻辑判断问题

    (1)由于精度原因导致比较无效吗?

    (2)表达式中的优先级有误吗?

    (3)逻辑判断结果颠倒吗?

     
    循环问题

    (1)循环终止条件不正确吗?

    (2)无法正常终止(死循环)吗?

    (3)错误地修改循环变量吗?

    (4)存在误差累积吗?

     
    内存问题

    (1)内存没有被正确地初始化却被使用吗?

    (2)内存被释放后却继续被使用吗?

    (3)内存泄漏吗?

    (4)内存越界吗?

    (5)出现野指针吗?

     
    文件I/O问题

    (1)对不存在的或者错误的文件进行操作吗?

    (2)文件以不正确的方式打开吗?

    (3)文件结束判断不正确吗?

    (4)没有正确地关闭文件吗?

     
    错误处理问题

    (1)忘记进行错误处理吗?

    (2)错误处理程序块一直没有机会被运行?

    (3)错误处理程序块本身就有毛病吗?如报告的错误与实际错误不一致,处理方式不正确等等。

    (4)错误处理程序块是“马后炮”吗?如在被它被调用之前软件已经出错。

     
     
    3. 功能测试用例
    功能A描述 
    用例目的 
    前提条件 

    输入/动作

    期望的输出/相应

    实际情况

    示例:典型值…   
    示例:边界值…   
    示例:异常值…   
        
    4.   容错能力/回复能力测试用例

    异常输入/动作

    容错能力/恢复能力

    造成的危害、损失

    示例:错误的数据类型…   
    示例:定义域外的值…   
    示例:错误的操作顺序…   
    示例:异常中断通信…   
    示例:异常关闭某个功能…   
    示例:负荷超出了极限…   
    5. 性能测试用例
    性能A描述 
    用例目的 
    前提条件 

    输入数据

    期望的性能(平均值)

    实际性能(平均值)

         
         
        
    6. 用户界面测试的检查表

    检查项

    测试人员的类别及其评价

    窗口切换、移动、改变大小时正常吗?

     

    各种界面元素的文字正确吗?(如标题、提示等)

     

    各种界面元素的状态正确吗?(如有效、无效、选中等状态)

     

    各种界面元素支持键盘操作吗?

     

    各种界面元素支持鼠标操作吗?

     

    对话框中的缺省焦点正确吗?

     

    数据项能正确回显吗?

     

    对于常用的功能,用户能否不必阅读手册就能使用?

     

    执行有风险的操作时,有“确认”、“放弃”等提示吗?

     

    操作顺序合理吗?

     

    有联机帮助吗?

     

    各种界面元素的布局合理吗?美观吗?

     

    各种界面元素的颜色协调吗?

     

    各种界面元素的形状美观吗?

     

    字体美观吗?

     

    图标直观吗?

     

     

     

     

     

    7. 信息安全测试

    假想目标A

     

    前提条件

     

    非法入侵手段

    是否实现目标

    代价-利益分析

    ……   
         
        
    8. 压力测试用例

    极限名称A

    例如“最大并发用户数量”

    前提条件

     

    输入/动作

    输出/响应

    是否能正常运行

    例如10个用户并发操作   
    例如20个用户并发操作   
       
        
    9. 可靠性测试用例

    任务A描述

     

    连续运行时间

     

    故障发生的时刻

    故障描述

       
       
    …… 

    统计分析

    任务A无故障运行的平均时间间隔

    (CPU小时)

    任务A无故障运行的最小时间间隔

    (CPU小时)

    任务A无故障运行的最大时间间隔

    (CPU小时)

    10.    安装/反安装测试用例

    配置说明

     

     

    安装选项

    描述是否正常

    使用难易程度

    全部   
    部分   
    升级   
    其它   

    反安装选项

    描述是否正常

    使用难易程度

         
         
  • 读书笔记二 ----------(测试过程)

    2010-02-03 10:11:45

    Ø按照开发阶段划分:单元测试、集成测试、系统测试、确认测试。
    Ø按照测试实施组织划分:开发方测试、用户测试(β测试)、第三方测试。
    Ø按照测试技术划分:白盒测试、黑盒测试、灰盒测试。
    Ø软件测试方法和技术的分类与软件开发过程相关联,它贯穿了整个软件生命周期。
    Ø走查、单元测试、集成测试、系统测试用于整个开发过程中的不同阶段。
    u开发文档和源程序可应用走查的方法;
    u单元测试可应用白盒测试方法;
    u集成测试应用近似灰盒测试方法;
    u系统测试和确认测试应用黑盒测试方法。

    ØV模型是最具有代表意义的测试模型
    ØV模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关
    Ø从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系
    Ø箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。
    ØV模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后的一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段的隐藏的问题一直到后期的验收测试才被发现。
    ØV模型中增加软件各开发阶段应同步进行的测试,被演化为一种W模型。
    Ø开发是V,测试也是与此相重叠的V
    ØW模型体现了尽早地和不断地进行软件测试的原则。
    Ø岗位及职责
    u部门主管:负责审计测试报告,决定软件是否能够对外发布。
    u项目组负责人:负责需求分解、讲解和澄清,评审测试方案和测试样例。负责单元和集成测试并保证提交的产品质量达到系统测试的要求。组织研究组成员根据系统测试中提交的Bug进行修改并发布新版本。
    u测试负责人:负责组织测试团队,编写测试计划、测试大纲,按计划进行测试。
    u测试人员:负责编写测试样例、执行测试、发布测试报告等。
    u质量保证人员:负责审计系统测试过程和测试报告。
    u配置管理员:负责配置审计和检入、检出控制,为缺陷管理提供支持。


    Ø总体流程(参见流程图)
    u需求阶段
    u设计阶段
    u编码阶段
    u集成测试阶段
    u系统测试阶段
    u测试报告的确认

    Ø需求阶段
    在需求阶段,测试人员需要了解需求,根据需求编写测试用例。
    u测试人员必须参加研究组的需求培训和参加主要的需求讨论、分析会议。需求和原型的讨论结果也应发与测试人员。
    u测试人员应参加需求的评审会议,对于需求的可测性进行确认,协助确定需求的验收标准。
    u如果有原型的讨论会议,测试人员也应参加。
    u需求文档评审通过后研究组指定负责人编写系统测试方案。系统测试方案要经过评审后才可使用。
    u测试负责人根据需求文档和项目开发进度计划编写系统测试进度计划。系统测试进度计划可以与项目进度计划写在一起,但要给出编写系统测试样例和每轮测试的时间及资源。
    u测试人员根据需求说明书和业务流程图开始设计系统测试样例中的测试功能点和业务测试流程(包括正常业务测试流程和异常的业务测试流程)。
    u测试人员根据SCCB的需求变更修改系统测试样例。
    Ø设计阶段
    在设计阶段,测试人员需要了解设计,细化测试用例。
    u测试人员必须参与结构设计和详细设计的评审会议。
    u测试人员根据开发组的结构设计和详细设计精化测试样例,明确出测试步骤、分类的测试数据(正常数据、异常数据和边缘数据)和具体的期望值等。
    u测试人员根据设计变更修改系统测试样例。
    Ø编码阶段
    在编码阶段,测试人员完成系统测试样例,并提交评审。
    u开发人员根据结构设计和详细设计,确定相互间接口的参数和服务是否描述清晰、匹配。对于可能出现的问题要在编码前提出避免的方法。
    u开发人员在代码编写完成后进行代码自查和互查和单元测试。
    u测试人员完成系统测试样例(或者大纲)并提交评审。
    Ø系统测试阶段
    系统测试指根据需求对最终软件进行测试,以便发现软件中的缺陷,验证软件满足预先定义的需求。一般采用黑盒测试方法。
    u进入系统测试阶段的三个前提条件:
    送系统测试的产品经过了开发组内的集成测试,保证在系统测试时大体业务流程不会出现堵塞现象。
    测试人员得到开发人员的邮件通知。
    测试人员可以从静态配置库得到安装包或升级包,并确定包中的内容符合要求。
    u系统测试过程
    测试人员根据测试进度计划按照测试方案中的测试类型进行测试。
     对于功能测试,测试人员要进行自由测试和严格按照测试样例测试两种方式。
    测试人员可以根据测试进度进行回归测试。测试人员不用每轮都做完全回归测试只做部分回归测试即可,但发布现场的版本必须要进行完全回归测试。
    测试人员还必须对用户安装手册、使用手册、维护手册和升级安装手册进行测试。
    自由测试:自由测试就是测试人员不按照测试样例只是根据自己对业务和系统的理解进行测试,可以走任意的测试流程和输入任意的数据进行测试。这样有可能测试出测试样例发现不了的缺陷。
    完全回归测试:对以前已经测试过的工作产品全部地进行复测。回归测试主要是为了验证在添加新功能或修复功能后,工作产品是否还能够达到预期的标准。
    部分回归测试:对以前已经测试过的工作产品的重要部分进行复测。
    Ø质量记录
    u《系统测试计划》
    u《系统测试大纲》
    u《系统测试报告》
    Ø验证
    u评审人员评审《系统测试计划》、《系统测试大纲》。
    u部门主管、项目负责人、质量保证人员审计、确认《系统测试报告》。
    u质量保证人员对整体测试过程进行审核。
    功能测试
    用户界面测试
    性能测试
    配置测试
    安装卸载测试
    安全性和访问控制测试
    数据和数据库完整性测试
    故障转移和恢复测试
    文档测试
    <
  • 用户接受测试需求的基本属性

    2010-02-03 09:56:59


    (1)测试需求的名称

    为了便于对测试需求进行规范管理,方便查询和统计分析,用来唯一标识一个测试需求。

    (2)测试需求的编号

    “需求编号”采用“REQ-A-B-C”四段编号,其中“REQ”代表需求,“A”代表系统名称,“B”代表模块名称,“C”代表三位的功能点顺序编号,从“001”编起。

    如“REQ-CCI-外呼-001”,表示CCI系统“外呼”功能模块的第一个功能点。

    (3)上级需求的编号

    为了对某测试需求进行详细划分,请将该测试需求作层状显示。如下所示:
          需求1
              需求11
                        需求111
                    ……
                需求12
                        需求121
                  ……
            需求2
              需求21
                        需求211
                    ……  
                需求22
                        需求221
                  ……

    “上级需求名称”,即为该需求的父需求名称。若为空,表示该需求为第一级需求。

    (4)所属子系统名称

        例如:
     BIS:银行保险系统
     CCBSS:证券系统
     CCI:呼叫中心整合系统
     CMIS:信贷管理信息系统
     DCC:数据集中系统
     EAIH:总行企业级应用整合平台
     ECIF:企业级客户信息平台
     ECTIP:企业级渠道交易整合平台
     IPSS:综合产品服务系统
     OCRM:操作型客户关系管理
     UDI:数据交换池
     SRF:Server Farm(基础实施项目组)
     ICS:国际卡系统

    (5)评审状态

    为了便于需求跟踪,需要设置该需求的评审状态。

    “评审状态”有“创建”、“变更”、“评审”三个状态。

    (6)重要性

    测试需求的“重要性”用来度量该测试需求对应的“业务需求”在整个系统业务功能中的重要程度,其来源一般依据“软件需求”的重要性指标。

    “重要性”指标的取值有“核心”、“重要”、“一般”和“可选”四个值。

    (7)优先级

    测试需求的“优先级”指标用来表明测试需求实施的优先次序。

    优先级的取值有“高”、“中”和“低”三个值。

    优先级取值的设定由测试经理综合考虑测试需求的“重要性”、“稳定度”和“工作量”三个值来设定。

    (8)稳定度

    测试需求的“稳定度”指标用来表明该测试需求在测试实施过程中可能发生变更的可能性程度。

    测试需求的“稳定度”指标有“高”“中”“低”三个取值。

    影响测试需求稳定度的因素有业务需求的变更、业务需求的不正确理解等原因。

    需求的稳定度由测试经理根据相应的业务需求的稳定度和其它因素进行设置。

    (9)工作量

    测试需求的“工作量”指标用来标明在后续的测试实施过程中,为完全覆盖该测试需求而需要的工作量。

    该数值由测试经理根据该测试需求对应的业务需求的复杂程度及其业务流程的繁简程度进行设置。

    该值是一个权重值,采用百分制。

    工作量最大的为100,最小的为10,以10为增量进制。

    需求的工作量由测试经理进行设置。

    据此对测试人员的工作量进行量化考核。

    (10)版本

    需求版本用来记录该测试需求对应的测试版本号。

    (11)创建人

    记录该测试需求的创建人。

    (12)创建日期

    记录该测试需求的创建日期。  

    (13)功能点描述

    “功能点描述”是对该测试需求对应的业务功能进行详细的描述。

    每个测试需求只对应一个功能点,这一点一定注意。

    (14)业务规则描述

    “业务规则描述”指对与该测试需求相对应业务功能的逻辑约束的描述。

    业务规则一定要采用R1:到R9:进行编号。

    http://www.uml.org.cn/Test/200907175.asp

  • 突然而来的感想

    2010-02-02 15:03:38

    刚刚忙完,上来溜溜,最近很少QQ了,工作忙也是近两天才有的事,哪么这么长的空档期我在干吗了?呵呵,

    http://www.uml.org.cn/Test/test.asp

       就是在这个网站上泡了。呵呵,在读文章的时候,读到一句话“中国有句老话“养兵千日,用在一时”。这句话往往是在临战的时候将军(测试负责人)对战士(普通测试人员)说的。中国古代还有一个方法叫做“战时兵闲时农”的策略,即我们广大的劳动人民在没有战争的时候安心种我们的地,一旦战争爆发或者国家需要的时候我们就披上盔甲去作战。这两句话给我们一个提示:我们应该培养我们的测试人员或者说我们的测试队伍”

        我突然觉的好像我哦,呵呵,平时不忙,都在利用空档来充电。现在我完全可以在忙的时候立即投入忙的状态,并且把工作做的有条不乱。闲的时候,我又能在与看新闻看技术文章中来回穿梭 “打发”时间,把学的知识备用。也许这一年我没有技术性的提高,但在心境上与思想上还是有所提高的,我要求不高,每年都有进步就知足了。我能够在充电时得到的启发与知识点运用到当下的工作中去,己经是收获了。知足常乐。不贪不懒。足以

  • 权威《测试工作规范》文档

    2010-02-01 14:58:18

    来源:网络

    测试工作规范

    版本记录:

    文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改当前版本:****
    作    者:*******
    完成日期:****.**.**
    签 收 人: 
    签收日期: 

    目录

    目录... 1

    1.编写目的... 2

    2.测试团队构成... 2

    2.1职责... 2

    2.2角色划分... 2

    3.1计划与设计阶段... 2

    3.1.1成立测试团队... 2

    3.1.3召开测试启动会议... 3

    3.1.4编写测试计划文档... 3

    3.1.5设计测试用例... 4

    3.2实施测试阶段... 4

    3.2.1实施测试用例... 4 3.2.2提交报告... 4

    3.2.3回归测试... 5

    3.3总结阶段... 5

    3.3.1编写测试报告... 5

    3.3.2测试工作总结... 6

    3.3.3测试验收... 6 3.3.4测试归档... 6

    3.4缺陷跟踪... 7

    4缺陷类型定义... 7

    5测试标准... 8

    6问题争议处理... 8

    7测试标准文档... 8 

    1.编写目的

    本文档是测试团队的日常工作规范,主要侧重测试工作流程的控制,明确软件工程的各阶段测试团队应完成的工作。测试技术和策略等问题不在本文档描述范围内。

    2.测试团队构成

    2.1职责

    测试是软件开发过程中的重要组成部分,肩负着如下责任:         

    A、在项目的前景、需求文档确立基线前对文档进行测试,从用户体验和测试的角度提出自己的看法。         

    B、编写合理的测试计划,并与项目整体计划有机地整合在一起。         

    C、编写覆盖率高的测试用例。         

    D、针对测试需求进行相关测试技术的研究。         

    E、认真仔细地实施测试工作,并提交测试报告以供项目组参考。         

    F、进行缺陷跟踪与分析。

    2.2角色划分

    在人力资源有限的情况下,一个团队成员可能会同时承担多个角色。

    角色名称相关主要责任
    测试负责人         组建测试组
             协调测试组内部的沟通          代表测试组与其它角色组进行沟通         编写测试计划q          测试报告分析
    测试用例设计工程师         编写测试用例{可以由测试负责人兼任}
    测试实施工程师         实施测试用例,执行测试
    技术支持工程师         为测试工作提供技术支持

    3.工作流程及规范

    3.1计划与设计阶段

    3.1.1成立测试团队 在项目组成立的同时,测试组也将同时成立。团队成立的工作与责任如下:

    过程要点详细说明
    输入条件项目组成立(参与《项目计划书》的评审)
    工作内容为测试组任命一名测试负责人,同时确定测试组的构成人选。
    退出标准测试组成立
    责任人测试负责人

    图表 1

    3.1.2测试预通知

    在正式测试任务下达前,开发团队应提前一周左右向测试团队下达预通知,告之较为确切的测试日期,提供当前最新的相关资料。测试负责人可视具体情况决定是否需要调整人力。测试人员可预先熟悉必要的背景资料,协助测试负责人编写《测试计划》初稿。

            过程要点详细说明
    输入条件项目进入软件实现阶段(编码)
    工作内容项目/产品经理邮件通知测试负责人正式测试交接时间,测试规模预估等
    退出标准预先通知得到测试负责人确认,并提交《测试计划》初稿
    责任人产品经理,测试负责人

    图表 2

    3.1.3召开测试启动会议

    过程要点详细说明
    输入条件测试负责人完成测试计划初稿
    工作内容开发团队与测试团队交接测试内容,对测试目标达成一致,商讨测试计划初稿的可行性,统一项目组的目标和测试的工作重点。
    退出标准明确测试内容与重点,项目方提交《测试任务书》,测试方提交《测试计划》正稿。
    责任人产品经理,测试负责人

    图表 3

    3.1.4编写测试计划文档

    需求分析文档确立后,测试组需要编写测试计划文档,为后续的测试工作提供直接的指导

    过程要点详细说明
    输入条件项目需求文档建立
    工作内容根据项目的需求文档,按照测试计划文档模板编写测试计划。测试计划中应该至少包括以下关键内容: a .测试需求——需要测试组测试的范围,估算出测试所花费的人力资源和各个测试需求的测试优先级 b.测试方案——整体测试的测试方法和每个测试需求的测试方法 c.测试资源——本次测试所需要用到的人力、硬件、软件、技术的资源 d.测试组角色——明确测试组内各个成员的角色和相关责任 e.里程碑——明确标准项目过程中测试组该关注的里程碑 a.可交付工件——在测试组的工作中必须向项目组提交的产物,包括测试计划、测试报告等等 b.风险管理——列举出测试工作所可能出现的风险 测试计划编写完毕后,必须提交给项目组全体成员,并由项目组组中各个角色组联合评审。
    退出标准a.测试计划由项目组评审通过. b.在项目开发过程中,要适时的对测试计划进行跟踪,以供评估此次计划的完整性、可行性,在项目结束时还要最后评估一下测试计划的质量
    责任人测试负责人

    图表 4

    3.1.5设计测试用例

    在需求分析文档确立基线以后,测试组需要针对项目的测试需求编写测试用例,在实际的测试中,测试用例将是唯一实施标准。在用例的编写过程中,具体的任务和责任人如下:

    过程要点详细说明
    输入条件测试需求明确,测试计划明确
    工作内容根据每一步测试计划编写全部的测试用例
    退出标准测试用例需要覆盖所有的测试需求
    责任人测试用例设计工程师(可由测试实施工程师或测试负责人兼做)

    图表 5

    3.2实施测试阶段

    3.2.1实施测试用例

    实施测试用例将花费测试组绝大部分时间,这些工作都是建立在前期很多计划工作的基础上。

    过程要点详细描述
    输入条件测试负责人之前一个工作日定出当日的测试计划,确定可用的测试用例。
    工作内容测试实施工程师根据测试计划中分配给自己的测试任务和提供的测试用例,实施相应的测试用例,并将记录实施用例的结果
    退出标准测试用例中的所有任务被执行,结果被记录。
    责任人测试实施工程师

    图表 6

    3.2.2提交报告

    在约定的测试周期完成之后,测试负责人需要总结此次测试的结果,编写测试报告

    过程要点详细描述
    输入条件测试组完成了预定周期的测试任务
    工作内容测试负责人根据此轮测试的结果,编写测试报告,主要应包含以下内容: a.测试报告的版本 b.测试的人员和时间 c.测试所覆盖的缺陷——测试组在这轮测试中所有处理的缺陷,报告了测试负责人处理的缺陷和实施工程师验证的缺陷。不仅要写出覆盖缺陷的总数,还要写明这些缺陷的去向 d.测试新发现的缺陷数量 e.上一版本活动缺陷的数量 f.经过此轮测试,所有活动缺陷的数量及其状态分类 g.测试评估——写明在这一版本中,那些功能被实现了,那些还没有实现,这里只需写明和上一版本不同之处即可 h.急待解决的问题——写明当前项目组中面临的最优先的问题,可以重复提出
    退出标准在每轮测试结束之后应尽快将符合标准的测试报告发给全项目组
    责任人测试负责人

    图表7

    3.2.3回归测试

    在每轮测试结束之后,由测试组重新拷贝修改后的最新版本,进行回归测试。

    过程要点详细描述
    输入条件在每轮测试中,按照现有的测试用例没有新的缺陷被发现,测试报告中全部的活动缺陷都被解决。
    工作内容测试组将按照测试计划中对于回归测试的策略对产品进行回归测试,回归测试的用例属于测试用例的一部分或者是全部测试用例,但不能超出原先预定的测试用例的范围。
    退出标准回归测试所运行的用例全部通过。
    责任人测试实施工程师 (可由测试实施工程师或测试负责人兼做)

    图表 2

    3.3总结阶段

    测试工作结束或即将结束时,测试组就要开始着手准备进行总结的工作。

    3.3.1编写测试报告

    在回归测试结束之后,测试负责人将要编写测试总结报告,对测试进行总结,并且提交给全体项目组,为产品的后续工作提供重要的信息支持。

    过程要点详细描述
    输入条件测试组完成了所有的测试实施工作
    工作内容测试负责人根据测试的结果,按照测试报告的文档模板编写测试报告,测试报告必须包含以下重要内容: a.测试资源概述——多少人、多长时间 b.测试结果摘要——分别描述各个测试需求的测试结果,产品实现了哪些功能点,哪些还没有实现 c.缺陷分析——按照缺陷的属性分类进行分析 d.测试需求覆盖率——原先列举的测试需求的测试覆盖率,可能一部分测试需求因为资源和优先级的因素没有进行测试,那么在这里要进行说明 e.测试评估——从总体对项目质量进行评估 f.测试组建议——从测试组的角度为项目组提出工作建议
    退出标准测试负责人完成了符合标准的测试报告,发送给全项目组。
    责任人测试负责人

    3.3.2测试工作总结

    测试总结工作是在以上的工作全部结束以后,它的目的是评估本次测试工作,总结经验,使下一次的工作做得更好。

    过程要点详细描述
    输入条件测试负责人完成了符合标准的测试报告,发送给全项目组
    工作内容测试负责人根据测试的结果,按照测试总结的文档模板编写测试总结,
    退出标准测试负责人完成了符合标准的测试总结,发送给全测试组。
    责任人测试负责人

    3.3.3测试验收

    测试验收工作是在以上工作全部结束后,对测试的过程,效果进行验收,宣布测试结束。

    过程要点详细描述
    输入条件测试组完成了所有的测试实施工作,测试负责人完成符合标准的测试总结文档
    工作内容由测试发起会上约定的验收组成员,对本测试进行验收,验收内容包括: a.测试效果验收——测试是否达到预期目的 b.测试文档验收——测试过程文档是否齐全,可信,符合标准 c.测试评估——从总体对测试的质量进行评估 d.测试建议——对本次测试工作指出不足,需要在以后工作中改进的地方 e.宣布测试结束——测试验收组成员签字宣布本次测试结束
    退出标准签发测试验收报告
    责任人产品经理

    3.3.4测试归档    

    测试归档是在测试验收结束宣布测试有效,结束测试后,对测试过程中涉及到各种标准文档进行归类,存档。

    过程要点详细描述
    输入条件测试验收通过
    工作内容归类,存档测试过程涉及到的文档,主要包括以下文档(必须) a.测试任务 b.测试计划 c.测试用例 d.测试报告 e.测试总结报告 f.测试验收报告
    退出标准全部文档归类完毕,版本号封存
    责任人测试负责人

    3.4缺陷跟踪

    测试验收结束后,跟踪产品在试运行阶段暴露出来的新缺陷,以及已提交的缺陷是否再次发生。

    过程要点详细描述
    输入条件测试组完成了所有的测试实施工作,测试验收通过,产品试运行、运行。
    工作内容a.已发现缺陷是否再次发生 b.是否有新发现的在测试中未发现的缺陷 c.是否有新发现的在测试中已发现但未修改的缺陷 定义: A类:新发现的缺陷 B类:已发现的缺陷 C类:已发现未修改的缺陷
    退出标准缺陷跟踪报告
    责任人产品经理、项目实施经理

    4.缺陷类型定义

    本规范定义以下五类缺陷

    A类——严重错误,包括:

    1.       由于程序所引起的死机,非法退出

    2.       死循环

    3.       导致数据库发生死锁

    4.       数据通讯错误

    5        严重的数值计算错误

    B类——较严重错误,包括:

    1.       功能不符

    2.       数据流错误

    3.       程序接口错误

    4.       轻微的数值计算错误

    C类——一般性错误,包括:

    1.       界面错误(详细文档)

    2.       打印内容、格式错误

    3.       简单的输入限制未放在前台进行控制

    4.       删除操作未给出提示

    D类——较小错误,包括:

    1.       辅助说明描述不清楚

    2.       显示格式不规范

    3.       长时间操作未给用户进度提示

    4.       提示窗口文字未采用行业术语

    5.       可输入区域和只读区域没有明显的区分标志

    6.       系统处理未优化 E类——测试建议(非缺陷)

    5.测试标准

    软件测试合格须符合以下标准。

    A类错误B类错误C类错误D类错误E类建议
    ≤2%≤4%暂不作要求

    以上比例为错误占总测试模块的比例。软件产品未经测试合格,不允许投运。

    6.问题争议处理

    如开发团队对测试结论有争议,由PM和成员会议协调解决。测试团队和开发团队应无条件服从仲裁结果。

    7.测试标准文档

    1.       《测试任务说明书》

    2.       《测试计划》

    3.       《测试用例》

    4.       《测试报告》

    5.       《测试总结报告》

    6.       《测试验收报告》

    7.       《缺陷跟踪报告》

  • HttpUnit

    2010-02-01 14:47:28

    HttpUnit是一个集成测试工具,主要关注Web应用的测试,提供的帮助类让测试者可以通过Java类和服务器进行交互,并且将服务器端的响应当作文本或者DOM对象进行处理。HttpUnit还提供了一个模拟Servlet容器,让你可以不需要发布Servlet,就可以对Servlet的内部代码进行测试。本文中作者将详细的介绍如何使用HttpUnit提供的类完成集成测试。

    1. 如何使用httpunit处理页面的内容

    • WebConversation类是HttpUnit框架中最重要的类,它用于模拟浏览器的行为
    • WebRequest类,模仿客户请求,通过它可以向服务器发送信息
    • WebResponse类,模拟浏览器获取服务器端的响应信息

    1.1 获取指定页面的内容
       1.1.1 直接获取页面内容

    java 代码
    1. System.out.println("直接获取网页内容:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //向指定的URL发出请求,获取响应   
    5. WebResponse wr = wc.getResponse( "http://localhost:6888/HelloWorld.html" );   
    6. //用getText方法获取相应的全部内容   
    7. //用System.out.println将获取的内容打印在控制台上   
    8. System.out.println( wr.getText() );  

     1.1.2 通过Get方法访问页面并且加入参数

    java 代码
    1. System.out.println("向服务器发送数据,然后获取网页内容:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //向指定的URL发出请求   
    5. WebRequest req = new GetMethodWebRequest"http://localhost:6888/HelloWorld.jsp" );   
    6. //给请求加上参数     
    7. req.setParameter("username","姓名");   
    8. //获取响应对象   
    9. WebResponse resp = wc.getResponse( req );   
    10. //用getText方法获取相应的全部内容   
    11. //用System.out.println将获取的内容打印在控制台上   
    12. System.out.println( resp.getText() );  

    1.1.3 通过Post方法访问页面并且加入参数

    java 代码
    1. System.out.println("使用Post方式向服务器发送数据,然后获取网页内容:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //向指定的URL发出请求   
    5. WebRequest req = new PostMethodWebRequest"http://localhost:6888/HelloWorld.jsp" );   
    6. //给请求加上参数     
    7. req.setParameter("username","姓名");   
    8. //获取响应对象   
    9. WebResponse resp = wc.getResponse( req );   
    10.   
    11. //用getText方法获取相应的全部内容   
    12. //用System.out.println将获取的内容打印在控制台上   
    13. System.out.println( resp.getText() );  

    大家关注一下上面代码中打了下划线的两处内容,应该可以看到,使用Get、Post方法访问页面的区别就是使用的请求对象不同。

    1.2 处理页面中的链接
    这里的演示是找到页面中的某一个链接,然后模拟用户的单机行为,获得它指向文件的内容。比如在我的页面HelloWorld.html中有一个链接,它显示的内容是TestLink,它指向我另一个页面TestLink.htm. TestLink.htm里面只显示TestLink.html几个字符。
    下面是处理代码:

    java 代码
    1. System.out.println("获取页面中链接指向页面的内容:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //获取响应对象   
    5. WebResponse resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );   
    6. //获得页面链接对象   
    7. WebLink link = resp.getLinkWith( "TestLink" );   
    8. //模拟用户单击事件    
    9. link.click();   
    10. //获得当前的响应对象   
    11. WebResponse  nextLink = wc.getCurrentPage();   
    12.   
    13. //用getText方法获取相应的全部内容   
    14. //用System.out.println将获取的内容打印在控制台上   
    15. System.out.println( nextLink.getText() );  

    1.3 处理页面中的表格
    表格是用来控制页面显示的常规对象,在HttpUnit中使用数组来处理页面中的多个表格,你可以用resp.getTables()方法获取页面所有的表格对象。他们依照出现在页面中的顺序保存在一个数组里面。

    [注意] Java中数组下标是从0开始的,所以取第一个表格应该是resp.getTables()[0],其他以此类推。

    下面的例子演示如何从页面中取出第一个表格的内容并且将他们循环显示出来:

    java 代码
    1. System.out.println("获取页面中表格的内容;");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //获取响应对象   
    5. WebResponse   resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );   
    6. //获得对应的表格对象   
    7. WebTable webTable = resp.getTables()[0];   
    8. //将表格对象的内容传递给字符串数组   
    9. String[][] datas = webTable.asText();   
    10. //循环显示表格内容   
    11. int i = 0 ,j = 0;   
    12. int m = datas[0].length;   
    13. int n = datas.length;   
    14. while (i
    15.   j=0;   
    16.   while(j
    17.     System.out.println("表格中第"+(i+1)+"行第"+   
    18.  (j+1)+"列的内容是:"+datas[i][j]);   
    19.     ++j;   
    20.   }   
    21.   ++i;   
    22. }  

    1.4 处理页面中的表单
    表单是用来接受用户输入,也可以向用户显示用户已输入信息(如需要用户修改数据时,通常会显示他以前输入过的信息),在HttpUnit中使用数组来处理页面中的多个表单,你可以用resp.getForms()方法获取页面所有的表单对象。他们依照出现在页面中的顺序保存在一个数组里面。

    [注意] Java中数组下标是从0开始的,所以取第一个表单应该是resp.getForms()[0],其他以此类推。

    下面的例子演示如何从页面中取出第一个表单的内容并且将他们循环显示出来:

    java 代码
    1. System.out.println("获取页面中表单的内容:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //获取响应对象   
    5. WebResponse resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );   
    6. //获得对应的表单对象   
    7. WebForm webForm = resp.getForms()[0];   
    8. //获得表单中所有控件的名字   
    9. String[] pNames = webForm.getParameterNames();   
    10. int i = 0;   
    11. int m = pNames.length;   
    12. //循环显示表单中所有控件的内容   
    13. while(i
    14.    System.out.println("第"+(i+1)+"个控件的名字是"+pNames[i]+   
    15.    ",里面的内容是"+webForm.getParameterValue(pNames[i]));   
    16.    ++i;   
    17. }  

    2. 如何使用httpunit进行测试
    2.1 对页面内容进行测试
    httpunit中的这部分测试完全采用了JUnit的测试方法,即直接将你期望的结果和页面中的输出内容进行比较。不过这里的测试就简单多了,只是字符串和字符串的比较。

    比如你期望中的页面显示是中有一个表格,它是页面中的第一个表格,而且他的第一行第一列的数据应该是显示username,那么你可以使用下面的代码进行自动化测试:

    java 代码
    1. System.out.println("获取页面中表格的内容并且进行测试:");   
    2. //建立一个WebConversation实例   
    3. WebConversation wc = new WebConversation();   
    4. //获取响应对象   
    5. WebResponse resp = wc.getResponse( "http://localhost:6888/TableTest.html" );   
    6. //获得对应的表格对象   
    7. WebTable webTable = resp.getTables()[0];   
    8. //将表格对象的内容传递给字符串数组   
    9. String[][] datas = webTable.asText();   
    10. //对表格内容进行测试   
    11. String expect = "中文";   
    12. Assert.assertEquals(expect,datas[0][0]);  

    2.2 对Servlet进行测试
    除了对页面内容进行测试外,有时候(比如开发复杂的Servlets的时候),你需要对Servlet本身的代码块进行测试,这时候你可以选择HttpUnit,它可以提供一个模拟的Servlet容器,让你的Servlet代码不需要发布到Servlet容器(如tomcat)就可以直接测试。

    2.2.1 原理简介
    使用httpunit测试Servlet时,请创建一个ServletRunner的实例,他负责模拟Servlet容器环境。如果你只是测试一个Servlet,你可以直接使用registerServlet方法注册这个Servlet,如果需要配置多个Servlet,你可以编写自己的web.xml,然后在初始化ServletRunner的时候将它的位置作为参数传给ServletRunner的构造器。

    在测试Servlet时,应该记得使用ServletUnitClient类作为客户端,他和前面用过的WebConversation差不多,都继承自WebClient,所以他们的调用方式基本一致。要注意的差别是,在使用ServletUnitClient时,他会忽略URL中的主机地址信息,而是直接指向他的ServletRunner实现的模拟环境。

    2.2.2 简单测试
    本实例只是演示如何简单的访问Servlet并且获取他的输出信息,例子中的Servlet在接到用户请求的时候只是返回一串简单的字符串:Hello World!.

    1. Servlet的代码如下:

    java 代码
    1. package janier.servlet;   
    2.   
    3. import java.io.IOException;   
    4. import java.io.PrintWriter;   
    5.   
    6. import javax.servlet.http.HttpServlet;   
    7. import javax.servlet.http.HttpServletRequest;   
    8. import javax.servlet.http.HttpServletResponse;   
    9.   
    10. /**  
    11.  * @author Janier  
    12.  *  
    13.  */  
    14. public class HelloWorld extends HttpServlet {   
    15.      /**  
    16.      *   
    17.      */  
    18.     private static final long serialVersionUID = 7242188527423883719L;   
    19.   
    20.     public void service(HttpServletRequest req, HttpServletResponse resp)   
    21.      throws IOException   
    22.      {   
    23.       PrintWriter out = resp.getWriter();   
    24.       //向浏览器中写一个字符串Hello World!   
    25.       out.println("Hello World!");   
    26.       out.close();   
    27.      }   
    28. }  

     2. 测试的调用代码如下:

    java 代码
    1. package test.servlet;   
    2.   
    3. import janier.servlet.HelloWorld;   
    4.   
    5. import com.meterware.httpunit.GetMethodWebRequest;   
    6. import com.meterware.httpunit.WebRequest;   
    7. import com.meterware.httpunit.WebResponse;   
    8. import com.meterware.servletunit.ServletRunner;   
    9. import com.meterware.servletunit.ServletUnitClient;   
    10.   
    11. import junit.framework.TestCase;   
    12.   
    13. /**  
    14.  * @author Janier  
    15.  *  
    16.  */  
    17. public class HttpUnitTestHelloWorld extends TestCase{   
    18.        
    19.     protected void setUp() throws Exception {   
    20.           super.setUp();   
    21.          }   
    22.             
    23.          protected void tearDown() throws Exception {   
    24.           super.tearDown();   
    25.          }   
    26.             
    27.          public void testHelloWorld() {   
    28.              
    29.           try {   
    30.               //创建Servlet的运行环境   
    31.               ServletRunner sr = new ServletRunner();   
    32.               //向环境中注册Servlet   
    33.               sr.registerServlet( "HelloWorld", HelloWorld.class.getName() );   
    34.               //创建访问Servlet的客户端   
    35.               ServletUnitClient sc = sr.newClient();   
    36.               //发送请求   
    37.               WebRequest request = new GetMethodWebRequest( "http://localhost/HelloWorld" );   
    38.               //获得模拟服务器的信息   
    39.               WebResponse response = sc.getResponse( request );   
    40.               //将获得的结果打印到控制台上   
    41.               System.out.println(response.getText());   
    42.           } catch (Exception e) {   
    43.            e.printStackTrace();   
    44.            }   
    45.           }   
    46. }  

    2.2 测试Servlet的内部行为
    下面的代码演示了如何使用HttpUnit模拟Servlet容器,并且通过InvocationContext对象,测试Servlet内部行为的大部分工作,比如控制request、session、response等。

    1.测试代码

    java 代码
    1. package test.servlet;   
    2.   
    3. import janier.servlet.HelloWorld;   
    4.   
    5. import com.meterware.httpunit.GetMethodWebRequest;   
    6. import com.meterware.httpunit.WebRequest;   
    7. import com.meterware.httpunit.WebResponse;   
    8. import com.meterware.servletunit.InvocationContext;   
    9. import com.meterware.servletunit.ServletRunner;   
    10. import com.meterware.servletunit.ServletUnitClient;   
    11.   
    12. import junit.framework.Assert;   
    13. import junit.framework.TestCase;   
    14.   
    15. /**  
    16.  * @author Janier  
    17.  *  
    18.  */  
    19. public class HttpUnitTestHelloWorld extends TestCase{   
    20.        
    21.     protected void setUp() throws Exception {   
    22.           super.setUp();   
    23.          }   
    24.             
    25.          protected void tearDown() throws Exception {   
    26.           super.tearDown();   
    27.          }   
    28.             
    29.          public void testHelloWorld() {   
    30.              
    31.           try {   
    32.               // 创建Servlet的运行环境   
    33.               ServletRunner sr = new ServletRunner();   
    34.               //向环境中注册Servlet   
    35.               sr.registerServlet( "HelloWorld", HelloWorld.class.getName() );   
    36.               //创建访问Servlet的客户端   
    37.               ServletUnitClient sc = sr.newClient();   
    38.               //发送请求   
    39.               WebRequest request = new GetMethodWebRequest( "http://localhost/HelloWorld" );   
    40.               request.setParameter("username","testuser");   
    41.               //获得该请求的上下文环境   
    42.               InvocationContext ic = sc.newInvocation( request );         
    43.               //调用Servlet的非服务方法   
    44.               HelloWorld is = (HelloWorld)ic.getServlet();   
    45.               //测试servlet的某个方法   
    46.                Assert.assertTrue(is.authenticate());   
    47.               //直接通过上下文获得request对象   
    48.               System.out.println("request中获取的内容:"+ic.getRequest().getParameter("username"));   
    49.               //直接通过上下文获得response对象,并且向客户端输出信息   
    50.               ic.getResponse().getWriter().write("haha");   
    51.               //直接通过上下文获得session对象,控制session对象,给session赋值   
    52.               ic.getRequest().getSession().setAttribute("username","timeson");   
    53.               //获取session的值   
    54.               System.out.println("session中的值:"+ic.getRequest().getSession().getAttribute("username"));   
    55.               //使用客户端获取返回信息,并且打印出来   
    56.               WebResponse response = ic.getServletResponse();   
    57.               System.out.println(response.getText());   
    58.           } catch (Exception e) {   
    59.            e.printStackTrace();   
    60.            }   
    61.           }   
    62. }  

    2.调用代码

    java 代码
    1. package janier.servlet;   
    2.   
    3. import java.io.IOException;   
    4.   
    5. import javax.servlet.http.HttpServlet;   
    6. import javax.servlet.http.HttpServletRequest;   
    7. import javax.servlet.http.HttpServletResponse;   
    8.   
    9. /**  
    10.  * @author Janier  
    11.  *  
    12.  */  
    13. public class HelloWorld extends HttpServlet {   
    14. public void saveToSession(HttpServletRequest request) {   
    15.         request.getSession().setAttribute("testAttribute",request.getParameter("testparam"));   
    16.         }   
    17.     public void doGet(HttpServletRequest request,   
    18.         HttpServletResponse response) throws IOException{   
    19.         String username=request.getParameter("username");   
    20.         response.getWriter().write(username+":Hello World!");   
    21.         }   
    22.     public boolean authenticate(){   
    23.        return true;   
    24.        }   
    25. }  

    对于开发者来说,仅仅测试请求和返回信息是不够的,所以HttpUnit提供的ServletRunner模拟器可以让你对被调用Servlet内部的行为进行测试。和简单测试中不同,这里使用了InvocationContext获得该Servlet的环境,然后你可以通过InvocationContext对象针对request、response等对象或者是该Servlet的内部行为(非服务方法)进行操作。

    上述例子其实是junit的一个测试例子,在其中使用了httpunit模拟的servlet环境,使用上述方法测试servlet可以脱离容器,容易把该测试写入ant或maven脚本,让测试进行。httpunit网址:http://httpunit.sourceforge.net/
    使用该种方法测试的弱点就是:如果要使用request(response)的setCharercterEncoding方法时,测试会出现一些问题,而且httpunit在测试servlet行为时,采用的是完全模拟浏览器,有时测试比较难写。

    [注意]在测试Servlet的之前,你必须通过InvocationContext完成Servlet中的service方法中完成的工作,因为通过newInvocation方法获取InvocationContext实例的时候该方法并没有被调用。

    3. Httpunit测试小总结

    1. 模拟用户行为向服务器发送请求,传递参数
    2. 模拟用户接受服务器的响应信息,并且通过辅助类分析这些响应信息,结合JUnit框架进行测试
    3. 使用HttpUnit提供的模拟Servler容器,测试开发中的Servlet的内部行为

    Mock objects方法的最大优点就是,执行测试时不需要运行的容器。可以很快就建立起测试,而且测试运行速度也很快用mock objects来对J2EE组件进行单元测试的缺点是:

    • 它们没有测试容器和组件的交互;
    • 它们没有测试组件的部署部分;
    •  需要熟悉被调用的API,这样才能模拟它,而这个要求可能太高了(尤其对于外部库而言);
    • 无法让你确信代码会在目标容器中正常运行
  • 读书笔记一

    2010-02-01 10:12:48

    http://www.uml.org.cn/Test/test.asp

    测试计划中有关计划的相关主题:

    • 测试结束标准
    • 一些相关约定,部分模板中添加入“术语”一栏
    • 测试工作中产生的文档及定义(测试用例文档,缺陷报告文档等)
    • 测试工作个团队之前的协调工作,主要包括开发组需要对测试组提供的相关帮助
    • 测试的范围
    • 测试的时间安排(时间进度表)
    • 测试的策略
    • 测试过程中的资源要求
    • 测试人员的任务分派
    • 测试中可能遇到的风险等问题
    • 测试工作的度量和统计
    • 测试工具相关的计划

    等等。

    以上这些主题都是常见且有助于我们做好计划工作的内容,至于测试费用等的计划,笔者认为适当估计但不要过分追求,因为在实际的操作过程中,测试工作延期、测试工具购置、人员流动造成的培训费用等会打乱这个计划,并且在测试计划中列出的费用是不会跟财务直接挂钩的,具体费用还得依照公司专用流程,因此“测试费用”这类主题在笔者计划测试的过程中不会考虑太多。

    也就是5W1H定义:
    > WHY:为什么要写测试计划;
    > WHAT:测试什么;
    > WHEN:测试不同阶段的起止时间;
    > WHERE:文档放哪;
    > WHO:哪些人去做;
    > HOW:怎么测试;


    中国有句老话“养兵千日,用在一时”。这句话往往是在临战的时候将军(测试负责人)对战士(普通测试人员)说的。中国古代还有一个方法叫做“战时兵闲时农”的策略,即我们广大的劳动人民在没有战争的时候安心种我们的地,一旦战争爆发或者国家需要的时候我们就披上盔甲去作战。这两句话给我们一个提示:我们应该培养我们的测试人员或者说我们的测试队伍。

    者   先拿“养兵千日用在一时”来讲,正如我上面提到的,往往在临战的时候大家才想起这句话,可是我们不妨倒过来想一想,一时的用是需要千日的积累的。这也是在提示我们,一支优秀的测试队伍的每个人都应该是优秀的并且我们需要在“用一时”之前好好“养千日”。这种积累不是一天两天可以形成的,正所谓冰冻三尺非一日之寒。为什么要在谈论计划测试的时候谈论这个问题呢?原因在于“巧妇难为无米之炊”,我们在做计划的时候如果发现没有一个可用之才,那我们的计划怕是做不下去了,或者我们只有准备另外招新人到行伍中间来,亦或者只能外包测试给专业队伍,这无疑又增加了项目的风险,因为新人或者其他队伍使我们不了解的,他们会做成什么样子只有老天知道,当我们把命运交给老天的时候,这相当于在玩火。我们需要把“养千日兵”拉到我们的计划中来,从更加长远的角度来计划一下我们的测试工作,测试方向等等。对于人才的培养,一般使用的是人尽其才的分工制度,即某一个或者一些人熟练掌握某一些测试技能,并对其他技能有所了解,最理想的情况下,我们在测试的方向(或者说是本公司主要的开发方向相关联的各个测试技术方面)都有“专家”,这样才可以保证一个测试队伍可以应付不可预知的测试任务。

        

    我们的学习方向,笔者大概归纳一下:

    > 测试理论(包括测试基本概念,流程,管理等等内容。对于测试来讲,这才是基本)

    > 测试文档 (虽然网络上的文档中的内容对于目前的你来说不可能完全有用,但是知道一份专业或者说完整的文档是怎么写的也是必要的)

    > 测试工具(对于刚起步的测试人员,如果你不是开发大牛,建议你还是先使用别人已经写好的工具)

    > 开发知识 (有则加之,无则添之,总是是要学,因为这一点是为将来打算,这些知识有助于我们更好地测试)

    对于一般外包项目来讲,对于测试要求相对较低,而时间是固定的。对于这种项目的测试工作来讲,一般是标准的段段式的,即计划测试,测试用例设计,测试用例执行及bug管理,测试报告提交等等阶段。这就好弄多了,根据经验(如果一点经验都没有,那还有直觉)我们把这几个阶段换算成比例,然后把测试总时间瓜分了,需要提醒大家的就是记得在瓜分之后留点“缓冲时间”来,否则到时候出了点意外就麻烦了,记住是在每段时间之后加上一个缓冲期,而不是最后加上一次。

    对于产品来讲,测试要求会比较高,时间当然也是需要考虑的,套用IT界最常被引用的一句话,“在这个瞬息万变的时代”,把握时机对于一个产品来讲无疑是很重要的。这个时候我们还是先将测试分段,对于这种项目,我们首先站在测试质量的角度,实事求是按照功能点数目、难度,测试经验等来估计测试时间,然后将总时间加起来,如果时间充裕,我们考虑加入更多测试面,如果时间紧迫,我们考虑是否删除部分非核心功能,以降低开发和测试的时间成本,从而为测试质量保驾护航


    测试标准应该包含的内容:
    》有效测试用例(功能)执行率达到X%?
    》单元测试代码行覆盖率达到X%?
    》单元测试用例通过率X%?
    》单元测试用例设计通过评审
    》核心模块(A,;B,D等模块)测试覆盖
    》所发现缺陷均纳入缺陷管理系统
    》优先级最高的bug全部修复
    》其他bug全部被处理(修复,延迟并报告等处理方式)
    》功能测试用例模块,功能点覆盖率达到?

    按照测试类型来的测试停止标准:
    比如单元测试活动在满足以下所有条件之后可停止:
    》核心模块代码100% 经过Code Review
    》单元测试用例设计通过评审
    》测试用例执行率100%
    》最新版本的单元测试通过率为100%
    》单元测试全局代码行覆盖率不低于80%
    》单元测试单个模块代码行覆盖率不低于70%
    》单元测试中被测单元发现的bug产生率不低于3个/千行代码
    》所有发现缺陷都纳入缺陷追踪系统
    》优先级1类bug全部被修复
    》优先级2,3类bug全部被处理(修复或者不处理并明确在测试报告指出且获得通过)
    》完成了单元测试报告并通过评审
    ……

    实际工作中会出现的停止“标准”
    测试活动在满足下列条件之一时需要暂停或者终止:
    》新的需求变更过大,测试活动应暂停,待需求定义稳定后继续;
    》测试超过了预定时间,且测试时间不可能继续增加的情况下应停止测试;
    》测试成本增高(Bug发现率低于1个/周,此时所发现缺陷低于预定义的上限);
    》若开发暂停,则相应测试也应暂停,并备份暂停点数据;
    》软件系统通过验收测试;
    》软件项目在其开发生命周期内出现重大估算和进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份暂停或终止点数据;
    》项目负责人申明停止项目;
    》团队集体(开发,管理,测试,市场,销售人员)同意停止项目(因市场及利益等原因);
    ……

  • 初学UML之-------用例图

    2010-01-22 10:50:43

    转自网络

    一.UML简介

    UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。其实简单的理解,也是个人的理解,UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。

    二.用例建模简介

    用例建模是UML建模的一部分,它也是UML里最基础的部分。用例建模的最主要功能就是用来表达系统的功能性需求或行为。依我的理解用例建模可分为用例图和用例描述。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。用例描述用来详细描述用例图中每个用例,用文本文档来完成。

    1. 用例图

    参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。

    用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是 UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。

    系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

    箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。

    2. 用例描述

    用例图只是简单地用图描述了一下系统,但对于每个用例,我们还需要有详细的说明,这样就可以让别人对这个系统有一个更加详细的了解,这时我们就需要写用例描述。

    对于用例描述的内容,一般没有硬性规定的格式,但一些必须或者重要的内容还是必须要写进用例描述里面的。用例描述一般包括:简要描述(说明)、前置(前提)条件、基本事件流、其他事件流、异常事件流、后置(事后)条件等等。下面说说各个部分的意思:

    简要描述:对用例的角色、目的的简要描述;

    前置条件:执行用例之前系统必须要处于的状态,或者要满足的条件;

    基本事件流:描述该用例的基本流程,指每个流程都“正常”运作时所发生的事情,没有任何备选流和异常流,而只有最有可能发生的事件流;

    其他事件流:表示这个行为或流程是可选的或备选的,并不是总要总要执行它们;

    异常事件流:表示发生了某些非正常的事情所要执行的流程;

    后置条件:用例一旦执行后系统所处的状态;

    三. 用例图和用例描述设计实例

    这里用我开发的一个家教网站来简单的分析用例图的画法和用例描述的写法。这个网站我用UML完整的分析一下,以下我提取了用例图和用例描述的部分。这个家教网站分为前台客户系统和后台管理系统。

    前台客户系统的用例图如下:


    后台管理系统用例图如下:


    感谢:http://www.51cto.com 2006-01-13 10:10 出处:51CTO.com整理



    补充:

    用例之间也可以存在包含、扩展和泛化等关系:

      (1)包含关系:用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分,这被称作包含关系。

      (2)扩展关系:扩展关系是从扩展用例到基本用例的关系,它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。在以下几种情况下,可使用扩展用例:

      a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开);

      b.表明只在特定条件(如例外条件)下才执行的分支流;

      c.表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。

      图2.3给出了一个扩展关系的例子,在还书的过程中,只有在例外条件(读者遗失书籍)的情况下,才会执行赔偿遗失书籍的分支流。


    (3)泛化关系:用例可以被特别列举为一个或多个子用例,这被称做用例泛化。当父用例能够被使用时,任何子用例也可以被使用。如在图2.4中,订票是电话订票和网上订票的抽象。


    ------------------------------------------------------------

    泛化、包含和扩展

    泛化Generalization)在面向对象的技术中无处不在,它的另一个名字也许更为著名,就是“继承”。下图给出了一个使用泛化的用例图:


    可知,在用例图中,角色和用例都能够泛化。角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。

    扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例。如下图:

    对于用例描述,篇幅有限,我在这里只列了后台管理系统中的网站公告发布这个用例的描述。如下:

    四. 总结

    其实用例建模并不是这么简单,它涉及到的知识还有很多,这里只是简单的介绍一下。
1843/10<12345678910>
Open Toolbar