发布新日志

  • 字体变化

    2007-12-20 11:29:49

    <scrīpt language="javascrīpt">
    window.defaultStatus="最棒的网上学习网站";

     


    </scrīpt>
    <body>
    <a href="http://www.baidu.com" ōnmouseover="status='内容很充实的';return true">摆渡学习</a>
    </body>

  • 状态栏显示字体

    2007-12-20 11:13:17

    <scrīpt language="javascrīpt">
    var str="这是一个在线的网上书店,欢迎大家常常光临";
    var seq=0;
    function scroll(){
    msg=str.substring(0,seq);
    window.status=msg;
    seq++;
    if(seq>=str.length)
    seq=0;

     

    }


    </scrīpt>
    </head>

    <body ōnload="setInterval('scroll()',100)">

    </body>
    </html>

  • 测试用例题目总结

    2007-11-29 16:19:51

    软件介绍:
    SysReturn V3.0是一款硬盘数据保护软件,安装时选择要保护的分区。安装后,用户对所保护的分区数据所做的修改都将被记录下来,通过保存还原点,保存下来。以后,用户可以选择还原到不同还原点,将硬盘数据恢复到不同状态(对非保护的分区的修改不会被记录下来,不能被还原)。此软件最多同时有三个点:起始点和两个动态点。起始点是动态点的基础点,在保存两个动态点后,如果再保存第三个动态点,那么时间最早的动态点数据将被此次保存的还原点数据覆盖。。
    测试要求:
    针对SysReturnV3.0这款软件,编写测试用例报告,要求尽可能覆盖用户的各种操作,同时需考虑到软件的健壮性、兼容性等方面的测试用例。
    答案:

    功能测试:
    1.保存初始点、还原到初始点
    2.保存第1个动态点、还原到动态点1
    3.保存第2个动态点、还原到动态点2
    4.保存第3个动态点、覆盖第1个、原第2个动态点变成第1个、还原到第1个动态点、还原到第2个动态点
    5.保存第4个动态点、覆盖第1个、原第2个动态点变成第1个、还原到第1个动态点、还原到第2个动态点
    也就是说测试被覆盖的永远是相对最早的
    6.不保存初始点、无法还原
    7.不保护的分区在还原时不受影响
    8.不保护的分区无法作保存点保存点


    兼容性测试:
    1.不同操作系统下测试功能
    2.使用不同工具保存文件、看看是否能还原。比如用记事本、word、photoshop、ppt等工具创建文件保存后,创建动态点,看还原后这些文件

    能否正常打开
    3.不同格式文件,比如.rm .doc .txt .jpg .bmp .mp3等格式的还原状况
    4.不同硬盘的情况测试功能
    5.同时安装其他还原工具、比如一键还原,看看与他们的兼容性。比如有保存点的时候系统被一键还原了,会出现啥情况?崩溃...
    6.c盘还原了对其他盘的影响...比如有应用程序安装在d盘、部分文件在c盘、恰好d盘不受保护、那么还原c盘后、d盘的应用程序是否还能用?

    安装卸载测试:
    1.在有保存点的情况下卸载软件,能卸载么?
    2.在有保存点的情况下卸载软件,会出现什么状况?估计丢失不少文件吧...
    3.软件本身安装在不受保护和受保护的磁盘上、进行卸载...会怎样呢?崩溃...

  • TestLink

    2007-11-26 11:57:02

    以下属于本人摘录内容:

    使用 TestLink 进行测试管理

    developerWorks
     

    将此页作为电子邮件发送



    TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。

    TestLink 是sourceforge的开放源代码项目之一。作为基于web的测试管理系统,TestLink的主要功能包括:

    • 测试需求管理
    • 测试用例管理
    • 测试用例对测试需求的覆盖管理
    • 测试计划的制定
    • 测试用例的执行
    • 大量测试数据的度量和统计功能。

    TestLink的最新版本是1.6.2。在本文接下来的部分里,作者将详细地介绍使用TestLink1.6.0来进行测试管理的完整过程。

    一、安装启动

    1、 在安装TestLink1.6.0前,需要完成以下安装运行所需要的环境:Webserver、php4和MySQL。笔者推荐的安装环境如下:

    • Apache HTTP Server 2.0.59
    • Php 4.4.1
    • Mysql 4.1.21

    2、 将 TestLink 安装包保存到服务器,解压缩到 Apache2 的 htdocs 目录下,并重命名为 testlink。

    3、 自动安装 TestLink

    • 在浏览器输入访问地址http://yoursite/testlink/install/index.php,如:http://localhost:80/testlink/install/index.php
    • 选择new install,在进入的页面中,输入登录MySQL的用户名和密码,如root。提示安装成功,详细的安装说明请参照http://blog.csdn.net/judyxm/archive/2006/01/12/577148.aspx

    4、 登录testlink首页面。系统为testlink创建一个默认管理员账号,用户名和密码为:admin/admin。你可以使用这个账号访问TestLink 。登录http://127.0.0.1:80/testlink/index.php,如果你看到的页面如下,就说明你已经安装成功了。







    回页首


    二、初始配置(设置用户、产品)

    1、 用户设置

    在TestLink系统中,每个用户都可以维护自己的私有信息。admin可以创建用户,但不能看到其它用户的密码。在用户信息中,需要设置Email地址,如果用户忘记了密码,系统可以通过mail获得。

    TestLink系统提供了六种角色,分别是admin、leader、senior tester 、tester、guest、testdesigner。相对应的功能权限如下:(详见图)

    • Guest:只有读的权限,适合于查看测试用例和测试需求,以及项目分析的用户。
    • Testdesigner:可以开展测试用例和测试需求的所有工作。
    • Tester:只能执行测试用例。
    • Senior tester:可以查看和维护测试用例,并且可以执行测试用例,但是不能管理测试计划、分配测试任务。
    • Leader:可以开展测试规格和测试需求的所有工作,还可以管理测试计划、分配测试任务。
    • Admin:维护产品,用户。

    同时,支持不同地域用户对不同语言的需求,可以根据用户的喜好对用户提供不同的语言支持。



    2、 产品设置

    TestLink可以对多个产品进行管理,Admin进行产品设置后,测试人员就可以进行测试需求、测试用例、测试计划等相关管理工作了。TestLink支持对每个产品设置不同的背景颜色,方便管理。







    回页首


    三、测试需求管理

    测试需求是我们开展测试的依据。首先,我们对产品的测试需求进行分解和整理。一个产品可以包含多个测试需求规格,一个测试需求规格可以包含多个测试需求;

    • 创建测试需求规格
      对测试需求规格的描述比较简单,内容包含名称、范围。
    • 创建测试需求
      测试需求内容包含:需求ID、名称、范围、需求的状态,以及覆盖需求的案例。 TestLink提供了两种状态来管理需求:正确的(Valid)、不可测试的(not testable)。

    • 从文件导入测试需求
      Testlink提供了从文件导入测试需求的功能,支持的的文件类型有csv和csv(door)两种。




    回页首


    四、测试用例管理

    TestLink支持的测试用例的管理包含三层:分别为Component、Category、Test case。我们把Component对应到项目的功能模块,而把Category跟每个模块的function对应,Test case就是写在这些Category里的。我们可以使用测试用例搜索功能从不同的项目、成百上千的测试用例中查到我们需要的测试用例,甚至于可以直接将别的项目里写的测试用例复制过来,这样就解决了测试用例的管理和复用问题。

    但是,还有一个问题没有解决,那就是与测试需求的对应问题。在测试管理中,测试用例对测试需求的覆盖率是我们非常关心的,从需求规格说明书中提取出测试需求之后, Testlink提供管理测试需求与测试用例的对应关系的功能。

    • 创建Component
      Component的内容包括:名称、介绍、范围、相关的内容、约束。
    • 创建Category
      Category的内容包括:名称、测试范围和目标、配置信息、测试数据、测试工具
    • 创建 Test case
      测试用例的要素包括:测试用例名称、简要说明、步骤、期望结果、关键字。



      创建好的测试用例树如下:



    • 建立测试用例和测试需求的覆盖关系。
      选中左侧用例树中的测试用例,再选择右侧对应的测试需求,进行Assign即可。





    回页首


    五、测试计划制定

    在TestLink系统中,一个完整的测试计划包括:

    • 测试阶段的名称(如集成测试阶段、系统测试阶段)
    • 里程碑(明确每个测试阶段的开始和截止时间,以及完成A、B、C三种优先级的比例)
    • Build版本(定义本测试计划中需要测试的build版本,一般以产品名+时间来命名。)
    • 安排测试人员 (从用户列表中选择本测试计划的参与人员。)

    • 测试用例集
      • 制定优先级规则。优先级分为A、B、C三级,系统会根据用户定义的重要级别和风险级别的组合来确定优先级的归属。重要级别分为三级:Low、Medium、High。风险级别包括三级:1、2、3。
      • 从测试用例中选择本测试计划的测试用例集
      • 设置每个测试用例Category的重要级别和风险级别
      • 设置每个测试用例Category的责任归属。从本测试计划的测试人员列表中选择每个Category的Owner,由他来负责和完成测试用例的执行。




    回页首


    六、测试执行

    执行测试用例,按照对每个build版本的执行情况,记录测试结果。测试结果有四种情况可以选择:

    Not Run:还没有执行过

    Pass:执行通过

    Failed:执行失败

    Blocked:由于其它用例失败,导致此用例无法执行,被阻塞。





    回页首


    七、测试结果分析

    TestLink根据测试过程中记录的数据,提供了较为丰富的度量统计功能,可以直观的得到测试管理过程中需要进行分析和总结的数据:

    • 测试用例对测试需求的覆盖情况:哪些需求已经通过测试,哪些需求未通过测试,哪些需求处于阻塞状态,哪些需求还未开始测试。

    • 针对每个版本的测试用例执行情况:
      1)各种优先级的测试用例执行的比率
      2)各个模块的测试用例执行的比率
      3)各个测试人员测试用例的执行比率

    • 每个版本的执行情况

    • 所有测试用例在不同build版本的执行情况,显示?的地方表示还未执行。

    • 阻塞的测试用例列表

    • 失败的测试用例列表

    • 每个测试用例的bug数
      如果和bug跟踪系统连接的话,在下表中可以统计出每个测试用例的bug的数目





    回页首


    八、与bug跟踪系统集成

    TestLink提供了与多种bug跟踪系统关联的接口配置,目前支持的bug系统有Jira、bugzilla、mantis。配置方法的相关文档参照帮助。





    回页首


    九、其它易用性功能

    TestLink还提供了很多易用性的功能,比如:

    • 从测试需求直接生成测试用例
    • 文档的导入、导出功能
    • 测试报告可以导出为excel
    • 支持设定keyword




    回页首


    总结

    TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,我们可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。

    本文中,作者根据自己的使用经验,详细演示了如何使用TestLink来进行测试管理的全部过程,简单的介绍了TestLink的使用方法。希望能够帮助大家学会使用TestLink的基本功能,同时,大家可以参考这个过程和TestLink的帮助文档来实现对测试过程的管理。



    参考资料

  • 最新测试术语大全

    2007-11-23 19:05:08

    Acceptance Testing--可接受性测试
    一般由用户/客户进行的确认是否可以接受一个产品的验证性测试。

    actual outcome--实际结果       
    被测对象在特定的条件下实际产生的结果。

    Ad Hoc Testing--随机测试       
    测试人员通过随机的尝试系统的功能,试图使系统中断。

    algorithm--算法       
    (1)一个定义好的有限规则集,用于在有限步骤内解决一个问题;(2)执行一个特定任务的任何操作序列。

    algorithm analysis--算法分析       
    一个软件的验证确认任务,用于保证选择的算法是正确的、合适的和稳定的,并且满足所有精确性、规模和时间方面的要求。

    Alpha Testing--Alpha测试       
    由选定的用户进行的产品早期性测试。这个测试一般在可控制的环境下进行的。

    analysis--分析       
    (1)分解到一些原子部分或基本原则,以便确定整体的特性;(2)一个推理的过程,显示一个特定的结果是假设前提的结果;(3)一个问题的方法研究,并且问题被分解为一些小的相关单元作进一步详细研究。

    anomaly--异常       
    在文档或软件操作中观察到的任何与期望违背的结果。

    application software--应用软件       
    满足特定需要的软件。

    architecture--构架       
    一个系统或组件的组织结构。

    ASQ--自动化软件质量(Automated Software Quality)
    使用软件工具来提高软件的质量。

    assertion--断言       
    指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。

    assertion checking--断言检查       
    用户在程序中嵌入的断言的检查。

    audit--审计       
    一个或一组工作产品的独立检查以评价与规格、标准、契约或其它准则的符合程度。

    audit trail--审计跟踪       
    系统审计活动的一个时间记录。

    Automated Testing--自动化测试       
    使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试中用得较多。

    Backus-Naur Form--BNF范式       
    一种分析语言,用于形式化描述语言的语法

    baseline--基线       
    一个已经被正式评审和批准的规格或产品,它作为进一步开发的一个基础,并且必须通过正式的变更流程来变更。

    Basic Block--基本块       
    一个或多个顺序的可执行语句块,不包含任何分支语句。

    basis test set--基本测试集       
    根据代码逻辑引出来的一个测试用例集合,它保证能获得100%的分支覆盖。

    behaviour--行为       
    对于一个系统的一个函数的输入和预置条件组合以及需要的反应。一个函数的所有规格包含一个或多个行为。

    benchmark--标杆/指标/基准       
    一个标准,根据该标准可以进行度量或比较。

    Beta Testing--Beta测试       
    在客户场地,由客户进行的对产品预发布版本的测试。这个测试一般是不可控的。

    big-bang testing--大锤测试/一次性集成测试       
    非渐增式集成测试的一种策略,测试的时候把所有系统的组件一次性组合成系统进行测试。

    Black Box Testing--黑盒测试       
    根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。

    bottom-up testing--由低向上测试       
    渐增式集成测试的一种,其策略是先测试底层的组件,然后逐步加入较高层次的组件进行测试,直到系统所有组件都加入到系统。

    boundary value--边界值       
    一个输入或输出值,它处在等价类的边界上。

    boundary value coverage--边界值覆盖       
    通过测试用例,测试组件等价类的所有边界值。

    boundary value testing--边界值测试       
    通过边界值分析方法来生成测试用例的一种测试策略。

    Boundry Value Analysis--边界值分析       
    该分析一般与等价类一起使用。经验认为软件的错误经常在输入的边界上产生,因此边界值分析就是分析软件输入边界的一种方法。

    branch--分支       
    在组件中,控制从任何语句到其它任何非直接后续语句的一个条件转换,或者是一个无条件转换。

    branch condition--分支条件       

    branch condition combination coverage--分支条件组合覆盖       
    在每个判定中所有分支条件结果组合被测试用例覆盖到的百分比。

    branch condition combination testing--分支条件组合测试       
    通过执行分支条件结果组合来设计测试用例的一种方法。

    branch condition coverage--分支条件覆盖       
    每个判定中分支条件结果被测试用例覆盖到的百分比。

    branch condition testing--分支条件测试
    通过执行分支条件结果来设计测试用例的一种方法。

    branch coverage--分支覆盖       
    通过测试执行到的分支的百分比。

    branch outcome--分支结果       
    见判定结果(decision outcome)

    branch point--分支点       
    见判定(decision)

    branch testing--分支测试       
    通过执行分支结果来设计测试用例的一种方法。

    Breadth Testing--广度测试       
    在测试中测试一个产品的所有功能,但是不测试更细节的特性。

    bug--缺陷

    第121贴【2004-10-14】:常见测试术语三

    capture/playback tool--捕获/回放工具       
    参考capture/replay tool

    Capture/Replay Tool--捕获/回放工具       
    一种测试工具,能够捕获在测试过程中传递给软件的输入,并且能够在以后的时间中,重复这个执行的过程。这类工具一般在GUI测试中用的较多。

    CASE--计算机辅助软件工程(computer aided software engineering)
    用于支持软件开发的一个自动化系统。

    CAST--计算机辅助测试       
    在测试过程中使用计算机软件工具进行辅助的测试。

    cause-effect graph--因果图       
    一个图形,用来表示输入(原因)与结果之间的关系,可以被用来设计测试用例。

    certification        --证明       
    一个过程,用于确定一个系统或组件与特定的需求相一致。

    change control--变更控制       
    一个用于计算机系统或系统数据修改的过程,该过程是质量保证程序的一个关键子集,需要被明确的描述。

    code audit        --代码审计       
    由一个人、组或工具对源代码进行的一个独立的评审,以验证其与设计规格、程序标准的一致性。正确性和有效性也会被评价。

    Code Coverage--代码覆盖率       
    一种分析方法,用于确定在一个测试套执行后,软件的哪些部分被执行到了,哪些部分没有被执行到。

    Code Inspection--代码检视       
    一个正式的同行评审手段,在该评审中,作者的同行根据检查表对程序的逻辑进行提问,并检查其与编码规范的一致性。

    Code Walkthrough--代码走读       
    一个非正式的同行评审手段,在该评审中,代码被使用一些简单的测试用例进行人工执行,程序变量的状态被手工分析,以分析程序的逻辑和假设。

    code-based testing--基于代码的测试       
    根据从实现中引出的目标设计测试用例。

    coding standards--编程规范       
    一些编程方面需要遵循的标准,包括命名方式、排版格式等内容。

    Compatibility Testing--兼容性测试       
    测试软件是否和系统的其它与之交互的元素之间兼容,如:浏览器、操作系统、硬件等。

    complete path testing        --完全路径测试       
    参考穷尽测试(exhaustive testing)

    completeness--完整性       
    实体的所有必须部分必须被包含的属性。

    complexity        --复杂性       
    系统或组件难于理解或验证的程度。

    Component--组件       
    一个最小的软件单元,有着独立的规格

    Component Testing--组件测试       
    参考单元测试

    computation data use--计算数据使用       
    一个不在条件中的数据使用。

    computer system security--计算机系统安全性       
    计算机软件和硬件对偶然的或故意的访问、使用、修改或破坏的一种保护机制。

    condition--条件       
    一个不包含布尔操作的布尔表达式,例如:A
    condition coverage--条件覆盖       
    通过测试执行到的条件的百分比。

    condition outcome--条件结果       
    条件为真为假的评价。

    configuration control--配置控制       
    配置管理的一个方面,包括评价、协调、批准、和实现配置项的变更。

    configuration management--配置管理       
    一套技术和管理方面的原则用于确定和文档化一个配置项的功能和物理属性、控制对这些属性的变更、记录和报告变更处理和实现的状态、以及验证与指定需求的一致性。

    conformance criterion-- 一致性标准       
    判断组件在一个特定输入值上的行为是否符合规格的一种方法。

    Conformance Testing-- 一致性测试       
    测试一个系统的实现是否和其基于的规格相一致的测试。

    consistency        -- 一致性       
    在系统或组件的各组成部分和文档之间没有矛盾,一致的程度。

    consistency checker-- 一致性检查器       
    一个软件工具,用于测试设计规格中需求的一致性和完整性。

    control flow--控制流       
    程序执行中所有可能的事件顺序的一个抽象表示。

    control flow graph--控制流图       
    通过一个组件的可能替换控制流路径的一个图形表示。

    conversion testing--转换测试       
    用于测试已有系统的数据是否能够转换到替代系统上的一种测试。

    corrective maintenance--故障检修       
    用于纠正硬件或软件中故障的维护。

    correctness        --正确性       
    软件遵从其规格的程度。

    correctness        --正确性       
    软件在其规格、设计和编码中没有故障的程度。软件、文档和其它项满足需求的程度。软件、文档和其它项满足用户明显的和隐含的需求的程度。

    coverage        --覆盖率       
    用于确定测试所执行到的覆盖项的百分比。

    coverage item--覆盖项       
    作为测试基础的一个入口或属性:如语句、分支、条件等。

    crash--崩溃       
    计算机系统或组件突然并完全的丧失功能。

    criticality--关键性       
    需求、模块、错误、故障、失效或其它项对一个系统的操作或开发影响的程度。

    criticality analysis--关键性分析       
    需求的一种分析,它根据需求的风险情况给每个需求项分配一个关键级别。

    cyclomatic complexity--循环复杂度       
    一个程序中独立路径的数量。
    data corruption--数据污染       
    违背数据一致性的情况。

    data definition--数据定义       
    一个可执行语句,在该语句上一个变量被赋予了一个值。

    data definition C-use coverage--数据定义C-use覆盖       
    在组件中被测试执行到的数据定义C-use使用对的百分比。

    data definition C-use pair--数据定义C-use使用对       
    一个数据定义和一个计算数据使用,数据使用的值是数据定义的值。

    data definition P-use coverage--数据定义P-use覆盖       
    在组件中被测试执行到的数据定义P-use使用对的百分比。

    data definition P-use pair--数据定义P-use使用对       
    一个数据定义和一个条件数据使用,数据使用的值是数据定义的值。

    data definition-use coverage--数据定义使用覆盖       
    在组件中被测试执行到的数据定义使用对的百分比。

    data definition-use pair        --数据定义使用对       
    一个数据定义和一个数据使用,数据使用的值是数据定义的值。

    data definition-use testing--数据定义使用测试       
    以执行数据定义使用对为目标进行测试用例设计的一种技术。

    data dictionary--数据字典       
    (1)一个软件系统中使用的所有数据项名称,以及这些项相关属性的集合。(2)数据流、数据元素、文件、数据基础、和相关处理的一个集合。

    data flow analysis--数据流分析       
    一个软件验证和确认过程,用于保证输入和输出数据和它们的格式是被适当定义的,并且数据流是正确的。

    data flow coverage--数据流覆盖       
    测试覆盖率的度量是根据变量在代码中的使用情况。

    data flow diagram--数据流图       
    把数据源、数据接受、数据存储和数据处理作为节点描述的一个图形,数据之间的逻辑体现为节点之间的边。

    data flow testing--数据流测试       
    根据代码中变量的使用情况进行的测试。

    data integrity--数据完整性       
    一个数据集合完全、正确和一致的程度。

    data use--数据使用       
    一个可执行的语句,在该语句中,变量的值被访问。

    data validation--数据确认       
    用于确认数据不正确、不完整和不合理的过程。

    dead code--死代码       
    在程序操作过程中永远不可能被执行到的代码。

    Debugging--调试       
    发现和去除软件失效根源的过程。

    decision--判定       
    一个程序控制点,在该控制点上,控制流有两个或多个可替换路由。

    Decision condition--判定条件       
    判定内的一个条件。

    decision coverage--判定覆盖       
    在组件中被测试执行到的判定结果的百分比。

    decision outcome--判定结果       
    一个判定的结果,决定控制流走哪条路径。

    decision table--判定表       
    一个表格,用于显示条件和条件导致动作的集合。

    Depth Testing--深度测试       
    执行一个产品的一个特性的所有细节,但不测试所有特性。比较广度测试。

    design of experiments--实验设计       
    一种计划实验的方法,这样适合分析的数据可以被收集。

    design-based testing--基于设计的测试       
    根据软件的构架或详细设计引出测试用例的一种方法。

    desk checking--桌面检查       
    通过手工模拟软件执行的方式进行测试的一种方式。

    diagnostic--诊断       
    检测和隔离故障或失效的过程。

    dirty testing--肮脏测试       
    参考负面测试(negative testing)

    disaster recovery--灾难恢复       
    一个灾难的恢复和重建过程或能力。

    documentation testing        --文档测试       
    测试关注于文档的正确性。

    domain--域       
    值被选择的一个集合。

    domain testing--域测试       
    参考等价划分测试(equivalence partition testing)

    dynamic analysis--动态分析       
    根据执行的行为评价一个系统或组件的过程。

    Dynamic Testing--动态测试       
    通过执行软件的手段来测试软件。
    embedded software--嵌入式软件       
    软件运行在特定硬件设备中,不能独立于硬件存在。这类系统一般要求实时性较高。

    emulator--仿真       
    一个模仿另一个系统的系统或设备,它接受相同的输入并产生相同的输出。

    End-to-End testing--端到端测试       
    在一个模拟现实使用的场景下测试一个完整的应用环境,例如和数据库交互,使用网络通信等。

    entity relationship diagram--实体关系图       
    描述现实世界中实体及它们关系的图形。

    entry point        --入口点       
    一个组件的第一个可执行语句。

    Equivalence Class--等价类       
    组件输入或输出域的一个部分,在该部分中,组件的行为从组件的规格上来看认为是相同的。

    equivalence partition coverage--等价划分覆盖       
    在组件中被测试执行到的等价类的百分比。

    equivalence partition testing--等价划分测试       
    根据等价类设计测试用例的一种技术。

    Equivalence Partitioning--等价划分       
    组件的一个测试用例设计技术,该技术从组件的等价类中选取典型的点进行测试。

    error--错误       
    IEEE的定义是:一个人为产生不正确结果的行为。

    error guessing--错误猜测       
    根据测试人员以往的经验猜测可能出现问题的地方来进行用例设计的一种技术。

    error seeding--错误播种/错误插值       
    故意插入一些已知故障(fault)到一个系统中去的过程,目的是为了根据错误检测和跟踪的效率并估计系统中遗留缺陷的数量。

    exception--异常/例外       
    一个引起正常程序执行挂起的事件。

    executable statement--可执行语句       
    一个语句在被编译后会转换成目标代码,当程序运行是会被执行,并且可能对程序数据产生动作。

    Exhaustive Testing--穷尽测试       
    测试覆盖软件的所有输入和条件组合。

    exit point--出口点       
    一个组件的最后一个可执行语句。

    expected outcome--期望结果       
    参考预期结果(predicted outcome)。
    failure--失效       
    软件的行为与其期望的服务相背离。

    fault--故障       
    在软件中一个错误的表现。

    feasible path--可达路径       
    可以通过一组输入值和条件执行到的一条路径。

    feature testing--特性测试       
    参考功能测试(Functional Testing)

    FMEA--失效模型效果分析(Failure Modes and Effects Analysis)
    可靠性分析中的一种方法,用于在基本组件级别上确认对系统性能有重大影响的失效。

    FMECA--失效模型效果关键性分析(Failure Modes and Effects Criticality Analysis)
    FMEA的一个扩展,它分析了失效结果的严重性。

    FTA--故障树分析(Fault Tree Analysis)
    引起一个不需要事件产生的条件和因素的确认和分析,通常是严重影响系统性能、经济性、安全性或其它需要特性。

    functional decomposition--功能分解       
    参考模块分解(modular decomposition)

    Functional Specification        --功能规格说明书       
    一个详细描述产品特性的文档。

    Functional Testing--功能测试       
    测试一个产品的特性和可操作行为以确定它们满足规格。
    glass box testing--玻璃盒测试       
    参考白盒测试(White Box Testing)

    IEEE--美国电子与电器工程师学会(Institute of Electrical and Electronic Engineers)

    incremental testing--渐增测试       
    集成测试的一种,组件逐渐被增加到系统中直到整个系统被集成。

    infeasible path--不可达路径       
    不能够通过任何可能的输入值集合执行到的路径。

    input domain--输入域       
    所有可能输入的集合。

    inspection--检视       
    对文档进行的一种评审形式。

    installability testing--可安装性测试       
    确定系统的安装程序是否正确的测试。

    instrumentation--插装       
    在程序中插入额外的代码以获得程序在执行时行为的信息。

    instrumenter--插装器       
    执行插装的工具

    Integration Testing--集成测试       
    测试一个应用组合后的部分以确保它们的功能在组合之后正确。该测试一般在单元测试之后进行。

    interface--接口       
    两个功能单元的共享边界。

    interface analysis--接口分析       
    分析软件与硬件、用户和其它软件之间接口的需求规格。

    interface testing--接口测试       
    测试系统组件间接口的一种测试。

    invalid inputs--无效输入       
    在程序功能输入域之外的测试数据。

    isolation testing--孤立测试       
    组件测试(单元测试)策略中的一种,把被测组件从其上下文组件之中孤立出来,通过设计驱动和桩进行测试的一种方法。

    Job--工作       
    一个用户定义的要计算机完成的工作单元。

    job control language--工作控制语言       
    用于确定工作顺序,描述它们对操作系统要求并控制它们执行的语言。

    LCSAJ--线性代码顺序和跳转(Linear Code Sequence And Jump)
    包含三个部分:可执行语句线性顺序的起始,线性顺序的结束,在线性顺序结束处控制流跳转的目标语句。

    LCSAJ coverage--LCSAJ覆盖       
    在组件中被测试执行到的LCSAJ的百分比。

    LCSAJ testing--LCSAJ测试       
    根据LCSAJ设计测试用例的一种技术。

    Load Testing--负载测试       
    通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。

    logic analysis--逻辑分析       
    (1)评价软件设计的关键安全方程式、算法和控制逻辑的方法。(2)评价程序操作的顺序并且检测可能导致灾难的错误。

    logic-coverage testing--逻辑覆盖测试       
    参考结构化测试用例设计(structural test case design)

    maintainability--可维护性       
    一个软件系统或组件可以被修改的容易程度,这个修改一般是因为缺陷纠正、性能改进或特性增加引起的。

    maintainability testing--可维护性测试       
    测试系统是否满足可维护性目标。

    modified condition/decision coverage--修改条件/判定覆盖       
    在组件中被测试执行到的修改条件/判定的百分比。

    modified condition/decision testing        --修改条件/判定测试       
    根据MC/DC设计测试用例的一种技术。

    Monkey Testing--跳跃式测试       
    随机性,跳跃式的测试一个系统,以确定一个系统是否会崩溃。

    MTBF--平均失效间隔实际(mean time between failures)
    两次失效之间的平均操作时间。

    MTTF--平均失效时间        (mean time to failure)
    第一次失效之前的平均时间

    MTTR--平均修复时间(mean time to repair)
    两次修复之间的平均时间

    multiple condition coverage--多条件覆盖       
    参考分支条件组合覆盖(branch condition combination coverage)

    mutation analysis--变体分析       
    一种确定测试用例套完整性的方法,该方法通过判断测试用例套能够区别程序与其变体之间的程度。
    Negative Testing--逆向测试/反向测试/负面测试       
    测试瞄准于使系统不能工作。

    non-functional requirements testing--非功能性需求测试       
    与功能不相关的需求测试,如:性能测试、可用性测试等。

    N-switch coverage--N切换覆盖       
    在组件中被测试执行到的N转换顺序的百分比。

    N-switch testing--N切换测试       
    根据N转换顺序设计测试用例的一种技术,经常用于状态转换测试中。

    N-transitions--N转换       
    N+1转换顺序

    operational testing--可操作性测试       
    在系统或组件操作的环境中评价它们的表现。

    output domain--输出域       
    所有可能输出的集合。
    partition testing--分类测试       
    参考等价划分测试(equivalence partition testing)

    path--路径       
    一个组件从入口到出口的一条可执行语句顺序。

    path coverage--路径覆盖       
    在组件中被测试执行到的路径的百分比。

    path sensitizing--路径敏感性       
    选择一组输入值强制组件走一个给定的路径。

    path testing--路径测试       
    根据路径设计测试用例的一种技术,经常用于状态转换测试中。

    performance testing--性能测试       
    评价一个产品或组件与性能需求是否符合的测试。

    portability testing--可移植性       
    测试瞄准于证明软件可以被移植到指定的硬件或软件平台上。

    Positive Testing--正向测试       
    测试瞄准于显示系统能够正常工作。

    precondition--预置条件       
    环境或状态条件,组件执行之前必须被填充一个特定的输入值。

    predicate--谓词       
    一个逻辑表达式,结果为‘真’或‘假’。

    predicate data use--谓词数据使用       
    在谓词中的一个数据使用。

    program instrumenter--程序插装       
    参考插装(instrumenter)

    progressive testing--递进测试       
    在先前特性回归测试之后对新特性进行测试的一种策略。

    pseudo-random--伪随机       
    看似随机的,实际上是根据预先安排的顺序进行的。
    QA--质量保证(quality assurance)
    (1)已计划的系统性活动,用于保证一个组件、模块或系统遵从已确立的需求。(2)采取的所有活动以保证一个开发组织交付的产品满足性能需求和已确立的标准和过程。

    QC--质量控制(quality control)
    用于获得质量需求的操作技术和过程,如测试活动。

    Race Condition--竞争状态       
    并行问题的根源。对一个共享资源的多个访问,至少包含了一个写操作,但是没有一个机制来协调同时发生的访问。

    recovery testing--恢复性测试       
    验证系统从失效中恢复能力的测试。

    regression analysis and testing--回归分析和测试       
    一个软件验证和确认任务以确定在修改后需要重复测试和分析的范围。

    Regression Testing--回归测试       
    在发生修改之后重新测试先前的测试以保证修改的正确性。

    release--发布       
    一个批准版本的正式通知和分发。

    reliability--可靠性       
    一个系统或组件在规定的条件下在指定的时间内执行其需要功能的能力。

    reliability assessment--可靠性评价       
    确定一个已有系统或组件的可靠性级别的过程。

    requirements-based testing--基于需求的测试       
    根据软件组件的需求导出测试用例的一种设计方法。

    review--评审       
    在产品开发过程中,把产品提交给项目成员、用户、管理者或其它相关人员评价或批准的过程。

    risk--风险       
    不期望效果的可能性和严重性的一个度量。

    risk assessment--风险评估       
    对风险和风险影响的一个完整的评价。
    safety--(生命)安全性       
    不会引起人员伤亡、产生疾病、毁坏或损失设备和财产、或者破坏环境。

    safety critical--严格的安全性       
    一个条件、事件、操作、过程或项,它的认识、控制或执行对生命安全性的系统来说是非常关键的。

    Sanity Testing--理智测试       
    软件主要功能成分的简单测试以保证它是否能进行基本的测试。参考冒烟测试

    SDP--软件开发计划(software development plan)
    用于一个软件产品开发的项目计划。

    security testing--安全性测试       
    验证系统是否符合安全性目标的一种测试。

    security.--(信息)安全性       
    参考计算机系统安全性(computer system security)

    serviceability testing--可服务性测试       
    参考可维护性测试(maintainability testing)

    simple subpath--简单子路径       
    控制流的一个子路径,其中没有不必要的部分被执行。

    simulation--模拟       
    使用另一个系统来表示一个物理的或抽象的系统的选定行为特性。

    simulation--模拟       
    使用一个可执行模型来表示一个对象的行为。

    simulator--模拟器       
    软件验证期间的一个设备、软件程序、或系统,当它给定一个控制的输入时,表现的与一个给定的系统类似。

    SLA--服务级别协议(service level agreement)
    服务提供商与客户之间的一个协议,用于规定服务提供商应当提供什么服务。

    Smoke Testing--冒烟测试       
    对软件主要功能进行快餐式测试。最早来自于硬件测试实践,以确定新的硬件在第一次使用的时候不会着火。

    software development process--软件开发过程       
    一个把用户需求转换为软件产品的开发过程。

    software diversity--软件多样性       
    一种软件开发技术,其中,由不同的程序员或开发组开发的相同规格的不同程序,目的是为了检测错误、增加可靠性。

    software element--软件元素       
    软件开发或维护期间产生或获得的一个可交付的或过程内的文档。

    software engineering--软件工程       
    一个应用于软件开发、操作和维护的系统性的、有纪律的、可量化的方法。

    software engineering environment--软件工程环境       
    执行一个软件工程工作的硬件、软件和固件。

    software life cycle--软件生命周期       
    开始于一个软件产品的构思,结束于该产品不再被使用的这段期间。

    SOP--标准操作过程(standard operating procedures)
    书面的步骤,这对保证生产和处理的控制是必须的。

    source code--源代码       
    用一种适合于输入到汇编器、编译器或其它转换设备的计算机指令和数据定义。

    source statement--源语句       
    参考语句(statement)
    specification--规格       
    组件功能的一个描述,格式是:对指定的输入在指定的条件下的输出。

    specified input--指定的输入       
    一个输入,根据规格能预知其输出。

    spiral model        --螺旋模型       
    软件开发过程的一个模型,其中的组成活动,典型的包括需求分析,概要设计,详细设计,编码,集成和测试等活动被迭代的执行直到软件被完成。

    SQL--结构化查询语句(structured query language)
    在一个关系数据库中查询和处理数据的一种语言。

    state--状态       
    一个系统、组件或模拟可能存在其中的一个条件或模式。

    state diagram--状态图       
    一个图形,描绘一个系统或组件可能假设的状态,并且显示引起或导致一个状态切换到另一个状态的事件或环境。

    state transition--状态转换       
    一个系统或组件的两个允许状态之间的切换。

    state transition testing        --状态转换测试       
    根据状态转换来设计测试用例的一种方法。

    statement--语句       
    程序语言的一个实体,是典型的最小可执行单元。

    statement coverage--语句覆盖       
    在一个组件中,通过执行一定的测试用例所能达到的语句覆盖百分比。

    statement testing--语句测试       
    根据语句覆盖来设计测试用例的一种方法。

    Static Analysis--静态分析       
    分析一个程序的执行,但是并不实际执行这个程序。

    Static Analyzer--静态分析器       
    进行静态分析的工具。

    Static Testing--静态测试       
    不通过执行来测试一个系统。

    statistical testing--统计测试       
    通过使用对输入统计分布进行分析来构造测试用例的一种测试设计方法。

    stepwise refinement--逐步优化       
    一个结构化软件设计技术,数据和处理步骤首先被广泛的定义,然后被逐步的进行了细化。

    storage testing--存储测试       
    验证系统是否满足指定存储目标的测试。

    Stress Testing--压力测试       
    在规定的规格条件或者超过规定的规格条件下,测试一个系统,以评价其行为。类似负载测试,通常是性能测试的一部分。

    structural coverage--结构化覆盖       
    根据组件内部的结构度量覆盖率。

    structural test case design--结构化测试用例设计       
    根据组件内部结构的分析来设计测试用例的一种方法。

    structural testing--结构化测试       
    参考结构化测试用例设计(structural test case design)

    structured basis testing--结构化的基础测试       
    根据代码逻辑设计测试用例来获得100%分支覆盖的一种测试用例设计技术。

    structured design--结构化设计       
    软件设计的任何遵循一定纪律的方法,它按照特定的规则,例如:模块化,有顶向下设计,数据逐步优化,系统结构和处理步骤。

    structured programming--结构化编程       
    在结构化程序开发中的任何包含结构化设计和结果的软件开发技术。

    structured walkthrough--结构化走读       
    参考走读(walkthrough)

    stub--桩       
    一个软件模块的框架或特殊目标实现,主要用于开发和测试一个组件,该组件调用或依赖这个模块。

    symbolic evaluation--符号评价       
    参考符号执行(symbolic execution)

    symbolic execution--符号执行       
    通过符号表达式来执行程序路径的一种静态分析设计技术。其中,程序的执行被用符号来模拟,例如,使用变量名而不是实际值,程序的输出被表示成包含这些符号的逻辑或数学表达式。

    symbolic trace--符号轨迹       
    一个计算机程序通过符号执行是经过的语句分支结果的一个记录。

    syntax testing--语法分析       
    根据输入语法来验证一个系统或组件的测试用例设计技术。

    system analysis--系统分析       
    对一个计划的或现实的系统进行的一个系统性调查以确定系统的功能以及系统与其它系统之间的交互。

    system design--系统设计       
    一个定义硬件和软件构架、组件、模块、接口和数据的过程以满足指定的规格。

    system integration--系统集成       
    一个系统组件的渐增的连接和测试,直到一个完整的系统。

    System Testing--系统测试       
    从一个系统的整体而不是个体上来测试一个系统,并且该测试关注的是规格,而不是系统内部的逻辑。

    technical requirements testing--技术需求测试       
    参考非功能需求测试(non-functional requirements testing)

    test automation--测试自动化       
    使用工具来控制测试的执行、结果的比较、测试预置条件的设置、和其它测试控制和报告功能。

    test case--测试用例       
    用于特定目标而开发的一组输入、预置条件和预期结果。

    test case design technique--测试用例设计技术       
    选择和导出测试用例的技术。

    test case suite--测试用例套       
    对被测软件的一个或多个测试用例的集合。

    test comparator--测试比较器       
    一个测试工具用于比较软件实际测试产生的结果与测试用例预期的结果。

    test completion criterion--测试完成标准       
    一个标准用于确定被计划的测试何时完成。

    test coverage--测试覆盖       
    参考覆盖率(Coverage)

    test driver--测试驱动       
    一个程序或测试工具用于根据测试套执行软件。

    test environment--测试环境       
    测试运行其上的软件和硬件环境的描述,以及任何其它与被测软件交互的软件,包括驱动和桩。


    test execution--测试执行       
    一个测试用例被被测软件执行,并得到一个结果。

    test execution technique--测试执行技术       
    执行测试用例的技术,包括手工、自动化等。

    test generator--测试生成器       
    根据特定的测试用例产生测试用例的工具。

    test harness--测试用具       
    包含测试驱动和测试比较器的测试工具。

    test log--测试日志       
    一个关于测试执行所有相关细节的时间记录。

    test measurement technique--测试度量技术       
    度量测试覆盖率的技术。

    Test Plan--测试计划       
    一个文档,描述了要进行的测试活动的范围、方法、资源和进度。它确定测试项、被测特性、测试任务、谁执行任务,并且任何风险都要冲突计划。

    test procedure--测试规程       
    一个文档,提供详细的测试用例执行指令。

    test records--测试记录       
    对每个测试,明确的记录被测组件的标识、版本,测试规格,和实际结果

    test report--测试报告       
    一个描述系统或组件执行的测试和结果的文档。

    Test scrīpt--测试脚本       
    一般指的是一个特定测试的一系列指令,这些指令可以被自动化测试工具执行。

    Test Specification--测试规格       
    一个文档,用于指定一个软件特性、特性组合或所有特性的测试方法、输入、预期结果和执行条件。

    test strategy--测试策略       
    一个简单的高层文档,用于描述测试的大致方法,目标和方向。

    test suite--测试套       
    测试用例和/或测试脚本的一个集合,与一个应用的特定功能或特性相关。

    test target--测试目标       
    一组测试完成标准。

    testability--可测试性       
    一个系统或组件有利于测试标准建立和确定这些标准是否被满足的测试执行的程度。

    Testing--测试       
    IEEE给出的定义是:1)一个执行软件的过程,以验证其满足指定的需求并检测错误。2)一个软件项的分析过程以检测已有条件之间的不同,并评价软件项的特性。

    thread testing--线程测试       
    自顶向下测试的一个变化版本,其中,递增的组件集成遵循需求子集的实现。

    time sharing--时间共享       
    一种操作方式,允许两个或多个用户在相同的计算机系统上同时执行计算机程序。其实现可能通过时间片轮转、优先级中断等。

    top-down design--由顶向下设计       
    一种设计策略,首先设计最高层的抽象和处理,然后逐步向更低级别进行设计。

    top-down testing--自顶向下测试       
    集成测试的一种策略,首先测试最顶层的组件,其它组件使用桩,然后逐步加入较低层的组件进行测试,直到所有组件被集成到系统中。

    traceability--可跟踪性       
    开发过程的两个或多个产品之间关系可以被建立起来的程度,尤其是产品彼此之间有一个前后处理关系。

    traceability analysis--跟踪性分析       
    (1)跟踪概念文档中的软件需求到系统需求;(2)跟踪软件设计描述到软件需求规格,以及软件需求规格到软件设计描述;(3)跟踪源代码对应到设计规格,以及设计规格对应到源代码。分析确定它们之间正确性、一致性、完整性、精确性的关系。

    traceability matrix--跟踪矩阵       
    一个用于记录两个或多个产品之间关系的矩阵。例如,需求跟踪矩阵是跟踪从需求到设计再到编码的实现。

  • step -by -step install bugzilla

    2007-11-21 17:15:42

    this day ,the bugzilla in server computer appears internal error,and the manager is out.so i want to install the other one bugzilla by myself.
    this is the document about bugzilla installration
    i found on the web .very good !
    please fllow me to install !
    ok begin!





    4.1. Step-by-step Install

    4.1.1. Introduction

    Bugzilla has been successfully installed under Solaris, Linux, and Win32. Win32 is not yet officially supported, but many people have got it working fine. Please see the Win32 Installation Notes for further advice on getting Bugzilla to work on Microsoft Windows.

    4.1.2. Package List

    Note

    If you are running the very most recent version of Perl and MySQL (both the executables and development libraries) on your system, you can skip these manual installation steps for the Perl modules by using Bundle::Bugzilla; see Using Bundle::Bugzilla instead of manually installing Perl modules.

    The software packages necessary for the proper running of Bugzilla (with download links) are:

    1. MySQL database server (3.22.5 or greater)

    2. Perl (5.005 or greater, 5.6.1 is recommended if you wish to use Bundle::Bugzilla)

    3. Perl Modules (minimum version):

      1. Template (v2.07)

      2. AppConfig (v1.52)

      3. Text::Wrap (v2001.0131)

      4. File::Spec (v0.8.2)

      5. Data::Dumper (any)

      6. DBD::mysql (v1.2209)

      7. DBI (v1.13)

      8. Date::Parse (any)

      9. CGI::Carp (any)

      and, optionally:
      1. GD (v1.19) for bug charting

      2. Chart::Base (v0.99c) for bug charting

      3. XML::Parser (any) for the XML interface

      4. MIME::Parser (any) for the email interface

    4. The web server of your choice. Apache is highly recommended.

    Warning

    It is a good idea, while installing Bugzilla, to ensure that there is some kind of firewall between you and the rest of the Internet, because your machine may be insecure for periods during the install. Many installation steps require an active Internet connection to complete, but you must take care to ensure that at no point is your machine vulnerable to an attack.

    Note

    Linux-Mandrake 8.0 includes every required and optional library for Bugzilla. The easiest way to install them is by using the urpmi utility. If you follow these commands, you should have everything you need for Bugzilla, and checksetup.pl should not complain about any missing libraries. You may already have some of these installed.

    bash# urpmi perl-mysql
    bash# urpmi perl-chart
    bash# urpmi perl-gd
    bash# urpmi perl-MailTools (for Bugzilla email integration)
    bash# urpmi apache-modules

    4.1.3. MySQL

    Visit the MySQL homepage at www.mysql.com to grab and install the latest stable release of the server.

    Note

    Many of the binary versions of MySQL store their data files in /var. On some Unix systems, this is part of a smaller root partition, and may not have room for your bug database. You can set the data directory as an option to configure if you build MySQL from source yourself.

    If you install from something other than an RPM or Debian package, you will need to add mysqld to your init scrīpts so the server daemon will come back up whenever your machine reboots. Further discussion of UNIX init sequences are beyond the scope of this guide.

    Change your init scrīpt to start mysqld with the ability to accept large packets. By default, mysqld only accepts packets up to 64K long. This limits the size of attachments you may put on bugs. If you add -O max_allowed_packet=1M to the command that starts mysqld (or safe_mysqld), then you will be able to have attachments up to about 1 megabyte. There is a Bugzilla parameter for maximum attachment size; you should configure it to match the value you choose here.

    If you plan on running Bugzilla and MySQL on the same machine, consider using the --skip-networking option in the init scrīpt. This enhances security by preventing network access to MySQL.

    4.1.4. Perl

    Any machine that doesn't have Perl on it is a sad machine indeed. Perl can be got in source form from perl.com for the rare *nix systems which don't have it. Although Bugzilla runs with all post-5.005 versions of Perl, it's a good idea to be up to the very latest version if you can when running Bugzilla. As of this writing, that is Perl version 5.6.1.

    Tip

    You can skip the following Perl module installation steps by installing Bundle::Bugzilla from CPAN, which installs all required modules for you.

    bash# perl -MCPAN -e 'install "Bundle::Bugzilla"'

    Bundle::Bugzilla doesn't include GD, Chart::Base, or MIME::Parser, which are not essential to a basic Bugzilla install. If installing this bundle fails, you should install each module individually to isolate the problem.

    4.1.5. Perl Modules

    All Perl modules can be found on the Comprehensive Perl Archive Network (CPAN). The CPAN servers have a real tendency to bog down, so please use mirrors.

    Quality, general Perl module installation instructions can be found on the CPAN website, but the easy thing to do is to just use the CPAN shell which does all the hard work for you. To use the CPAN shell to install a module:

    bash# perl -MCPAN -e 'install "<modulename>"'

    To do it the hard way:

    Untar the module tarball -- it should create its own directory

    CD to the directory just created, and enter the following commands:

    1. bash# perl Makefile.PL

    2. bash# make

    3. bash# make test

    4. bash# make install

    Warning

    Many people complain that Perl modules will not install for them. Most times, the error messages complain that they are missing a file in "@INC". Virtually every time, this error is due to permissions being set too restrictively for you to compile Perl modules or not having the necessary Perl development libraries installed on your system. Consult your local UNIX systems administrator for help solving these permissions issues; if you are the local UNIX sysadmin, please consult the newsgroup/mailing list for further assistance or hire someone to help you out.

    4.1.5.1. DBI

    The DBI module is a generic Perl module used the MySQL-related modules. As long as your Perl installation was done correctly the DBI module should be a breeze. It's a mixed Perl/C module, but Perl's MakeMaker system simplifies the C compilation greatly.

    4.1.5.2. Data::Dumper

    The Data::Dumper module provides data structure persistence for Perl (similar to Java's serialization). It comes with later sub-releases of Perl 5.004, but a re-installation just to be sure it's available won't hurt anything.

    4.1.5.3. MySQL-related modules

    The Perl/MySQL interface requires a few mutually-dependent Perl modules. These modules are grouped together into the the Msql-Mysql-modules package.

    The MakeMaker process will ask you a few questions about the desired compilation target and your MySQL installation. For most of the questions the provided default will be adequate, but when asked if your desired target is the MySQL or mSQL packages, you should select the MySQL related ones. Later you will be asked if you wish to provide backwards compatibility with the older MySQL packages; you should answer YES to this question. The default is NO.

    A host of 'localhost' should be fine and a testing user of 'test' with a null password should find itself with sufficient access to run tests on the 'test' database which MySQL created upon installation.

    4.1.5.4. TimeDate modules

    Many of the more common date/time/calendar related Perl modules have been grouped into a bundle similar to the MySQL modules bundle. This bundle is stored on the CPAN under the name TimeDate. The component module we're most interested in is the Date::Format module, but installing all of them is probably a good idea anyway.

    4.1.5.5. GD (optional)

    The GD library was written by Thomas Boutell a long while ago to programatically generate images in C. Since then it's become the defacto standard for programatic image construction. The Perl bindings to it found in the GD library are used on millions of web pages to generate graphs on the fly. That's what Bugzilla will be using it for so you must install it if you want any of the graphing to work.

    Note

    The Perl GD library requires some other libraries that may or may not be installed on your system, including libpng and libgd. The full requirements are listed in the Perl GD library README. If compiling GD fails, it's probably because you're missing a required library.

    4.1.5.6. Chart::Base (optional)

    The Chart module provides Bugzilla with on-the-fly charting abilities. It can be installed in the usual fashion after it has been fetched from CPAN. Note that earlier versions that 0.99c used GIFs, which are no longer supported by the latest versions of GD.

    4.1.5.7. Template Toolkit

    When you install Template Toolkit, you'll get asked various questions about features to enable. The defaults are fine, except that it is recommended you use the high speed XS Stash of the Template Toolkit, in order to achieve best performance. However, there are known problems with XS Stash and Perl 5.005_02 and lower. If you wish to use these older versions of Perl, please use the regular stash.

    4.1.6. HTTP Server

    You have a freedom of choice here - Apache, Netscape or any other server on UNIX would do. You can run the web server on a different machine than MySQL, but need to adjust the MySQL "bugs" user permissions accordingly.

    Note

    We strongly recommend Apache as the web server to use. The Bugzilla Guide installation instructions, in general, assume you are using Apache. If you have got Bugzilla working using another webserver, please share your experiences with us.

    You'll want to make sure that your web server will run any file with the .cgi extension as a CGI and not just display it. If you're using Apache that means uncommenting the following line in the httpd.conf file:

    AddHandler cgi-scrīpt .cgi

    With Apache you'll also want to make sure that within the httpd.conf file the line:

    Options ExecCGI
    AllowOverride Limit
    is in the stanza that covers the directories into which you intend to put the bugzilla .html and .cgi files.

    Note

    AllowOverride Limit allows the use of a Deny statement in the .htaccess file generated by checksetup.pl

    Users of older versions of Apache may find the above lines in the srm.conf and access.conf files, respecitvely.

    Warning

    There are important files and directories that should not be a served by the HTTP server - most files in the "data" and "shadow" directories and the "localconfig" file. You should configure your HTTP server to not serve these files. Failure to do so will expose critical passwords and other data. Please see .htaccess files and security for details on how to do this for Apache; the checksetup.pl scrīpt should create appropriate .htaccess files for you.

    4.1.7. Bugzilla

    You should untar the Bugzilla files into a directory that you're willing to make writable by the default web server user (probably "nobody"). You may decide to put the files in the main web space for your web server or perhaps in /usr/local with a symbolic link in the web space that points to the Bugzilla directory.

    Tip

    If you symlink the bugzilla directory into your Apache's HTML heirarchy, you may receive Forbidden errors unless you add the "FollowSymLinks" directive to the <Directory> entry for the HTML root in httpd.conf.

    Once all the files are in a web accessible directory, make that directory writable by your webserver's user. This is a temporary step until you run the post-install checksetup.pl scrīpt, which locks down your installation.

    Lastly, you'll need to set up a symbolic link to /usr/bonsaitools/bin/perl for the correct location of your Perl executable (probably /usr/bin/perl). Otherwise you must hack all the .cgi files to change where they look for Perl. This can be done using the following Perl one-liner, but I suggest using the symlink approach to avoid upgrade hassles.

    perl -pi -e
    's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm
    processmail syncshadowdb
    Change /usr/bin/perl to match the location of Perl on your machine.

    4.1.8. Setting Up the MySQL Database

    After you've gotten all the software installed and working you're ready to start preparing the database for its life as the back end to a high quality bug tracker.

    First, you'll want to fix MySQL permissions to allow access from Bugzilla. For the purpose of this Installation section, the Bugzilla username will be "bugs", and will have minimal permissions.

    Begin by giving the MySQL root user a password. MySQL passwords are limited to 16 characters.

    bash# mysql -u root mysql
    mysql> UPDATE user SET Password=PASSWORD('<new_password'>) WHERE user='root';
    mysql> FLUSH PRIVILEGES;
    From this point on, if you need to access MySQL as the MySQL root user, you will need to use mysql -u root -p and enter <new_password>. Remember that MySQL user names have nothing to do with Unix user names (login names).

    Next, we use an SQL GRANT command to create a "bugs" user, and grant sufficient permissions for checksetup.pl, which we'll use later, to work its magic. This also restricts the "bugs" user to operations within a database called "bugs", and only allows the account to connect from "localhost". Modify it to reflect your setup if you will be connecting from another machine or as a different user.

    Remember to set <bugs_password> to some unique password.

    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY '<bugs_password>';
    mysql> FLUSH PRIVILEGES;
    Note

    If you are using MySQL 4, the bugs user also needs to be granted the LOCK TABLES and CREATE TEMPORARY TABLES permissions.

    4.1.9. checksetup.pl

    Next, run the magic checksetup.pl scrīpt. (Many thanks to Holger Schurig for writing this scrīpt!) This scrīpt is designed to make sure your MySQL database and other configuration options are consistent with the Bugzilla CGI files. It will make sure Bugzilla files and directories have reasonable permissions, set up the data directory, and create all the MySQL tables.

    bash# ./checksetup.pl
    The first time you run it, it will create a file called localconfig.

    This file contains a variety of settings you may need to tweak including how Bugzilla should connect to the MySQL database.

    The connection settings include:

    1. server's host: just use "localhost" if the MySQL server is local

    2. database name: "bugs" if you're following these directions

    3. MySQL username: "bugs" if you're following these directions

    4. Password for the "bugs" MySQL account; (<bugs_password>) above

    Once you are happy with the settings, su to the user your web server runs as, and re-run checksetup.pl. (Note: on some security-conscious systems, you may need to change the login shell for the webserver account before you can do this.) On this second run, it will create the database and an administrator account for which you will be prompted to provide information.

    Note

    The checksetup.pl scrīpt is designed so that you can run it at any time without causing harm. You should run it after any upgrade to Bugzilla.

    4.1.10. Configuring Bugzilla

    You should run through the parameters on the Edit Parameters page (link in the footer) and set them all to appropriate values. They key parameters are documented in Section 5.1.


  • 想当测试人,你具备这些知识吗?

    2007-11-20 17:39:38

    今天先来看看,测试员需要具备的一些基础知识.测试并不是想象中那么简单的事情,学习是无止境的:)

       1.计算机系统基础知识
       1.1 计算机系统构成及硬件基础知识
        ●计算机系统的构成
        ●处理机
        ●基本输入输出设备
        ●存储系统
       1.2 操作系统基础知识
        ●操作系统的中断控制、进程管理、线程管理
        ●处理机管理、存储管理、设备管理、文件管理、作业管理
        ●网络操作系统和嵌入式操作系统基础知识
        ●操作系统的配置
       1.3 数据基础知识
        ●数据库基本原理
        ●数据库管理系统的功能和特征
        ●数据库语言与编程
       1.4 中间件基础知识
       1.5 计算机网络基础知识
        ●网络分类、体系结构与网络协议
        ●常用网络设备
        ●Internet基础知识及其应用
        ●网络管理
       1.6 程序设计语言知识
        ●汇编、编译、解释系统的基础知识
        ●程序设计语言的基本成分(数据、运算、控制和传输、过程(函数)调用)
        ●面向对象程序设计
        ●C语言以及C++(或Java)语言程序设计基础知识
       2.标准化基础知识
        ●标准化的概念(标准化的意义、标准化的发展、标准化机构)
        ●标准的层次(国际标准、国家标准、行业标准、企业标准)
        ●标准的类别及生命周期
       3.信息安全知识
        ●信息安全基本概念
        ●计算机病毒及防范
        ●网络入侵手段及防范
        ●加密与解密机制
       4.信息化基础知识
        ●信息化相关概念
        ●与知识产权相关的法律、法规
        ●信息网络系统、信息应用系统、信息资源系统基础知识
       5.软件工程知识
       5.1 软件工程基础
        ●软件工程概念
        ●需求分析
        ●软件系统设计
        ●软件组件设计
        ●软件编码
        ●软件测试
        ●软件维护
       5.2 软件开发方法及过程
        ●结构化开发方法
        ●面向对象开发方法
        ●瀑布模型
        ●快速原型模型
        ●螺旋模型
       5.3 软件质量管理
        ●软件质量及软件质量管理概念
        ●软件质量管理体系
        ●软件质量管理的目标、内容、方法和技术
       5.4 软件过程管理
        ●软件过程管理概念
        ●软件过程改进
        ●软件能力成熟度模型
       5.5 软件配置管理
        ●软件配置管理的意义
        ●软件配置管理的过程、方法和技术
       5.6 软件开发风险基础知识
        ●风险管理
        ●风险防范及应对
       5.7 软件工程有关的标准
        ●软件工程术语
        ●计算机软件开发规范
        ●计算机软件产品开发文件编制指南
        ●计算机软件需求规范说明编制指南
        ●计算机软件测试文件编制规范
        ●计算机软件配置管理计划规范
        ●计算机软件质量保证计划规范
        ●数据流图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定

       6.软件测试知识
       6.1 软件测试基本概念
        ●软件质量与软件测试
        ●软件测试定义
        ●软件测试目的
        ●软件测试原则
        ●软件测试对象
       6.2 软件测试过程模型
        ●V模型
        ●W模型
        ●H模型
        ●测试模型的使用
       6.3 软件测试类型
        ●单元测试、集成测试、系统测试
        ●确认测试、验收测试
        ●开发方测试、用户测试、第三方测试
        ●动态测试、静态测试
        ●白盒测试、黑盒测试、灰盒测试
       6.4 软件问题分类
        ●软件错误
        ●软件缺陷
        ●软件故障
        ●软件失效
       6.5 测试标准
        7.5.1 GB/T 16260.1—2003 软件工程 产品质量 第1部分:质量模型
        7.5.2 GB/T 18905.1—2002 软件工程 产品评价 第1部分:概述
        7.5.3 GB/T 18905.5—2002 软件工程 产品评价 第5部分:评价者用的过程

  • 性能测试--好文章多学学

    2007-11-20 17:13:38

    摘要】性能测试不只是测试人员的事情,只有通过不同阶段不同参与人的通力合作才能把性能测试做好。

    【关键词】性能测试性能优化 DBA

    随着项目越来越大,性能问题层出不穷。如何做好性能测试成为测试人员经常讨论的话题。很多时候,大家都在疑惑性能测试如何来做,性能标准从那里来,有没有通用的标准,性能测试由谁来做,如何规划。首先我们了解一下,什么是性能测试。性能测试的目的:通过性能测试了解系统的性能有没有满足需求,对于不满足需求的模块则通过测试发现可能的性能瓶颈,并进行相应的性能调优,从而达到最终用户的要求。由于项目巨大,所以性能测试不仅仅是测试人员的事情,可能需要整个项目组的参与,而测试人员则更需要清晰的了解到性能测试分几个阶段,每个阶段如何来做,需要协调那些资源?

    在性能测试的每一个阶段,性能测试的参与人是不一样的,下面的图就是不同阶段的人员参与表。

    性能测试人员图

    从上图中可以看出,其实性能测试不是一个人可以搞定的事情,在需求阶段,制定性能初步的标准则需要需求人员的协助,了解那些场景是重要的,大约有多少人用,有多大数据量;而在设计场景时不仅要从需求中设计出必需要测试的场景,有时候需要通过功能测试人员了解,他们在测试过程中那些场景运行的比较慢。而运行脚本时,则需要SA(System Administrator系统管理员,编者注),程序员帮你增加分析所需要的性能指标,而DBA(DataBase Administrator数据库管理员,编者注)则增加数据库监控的参数。在分析结果的阶段则需要三者相互灵活的配合,当发现性能问题时,可能会根据程序员或DBA的要求,不断的调整监控的参数,以便更精确的定位问题。而在优化阶段,则是找出性能的瓶颈并优化,更需要多方的配合,不仅仅是测试。

    在性能测试前期,也就是上图的前三个阶段,重点需要了解,系统有那一些重要的功能模块,大约的用户是多少,用户的行为是如何分布的,每个模块的使用频度,大约的数据量,使用什么样的硬件,系统稳定性的要求等等。当然需求人员不是专业的测试人员,这时专业性能测试人员就是跟据需求人员大致的描述或是文档,提取出这些重要信息,建立系统模型。下面的一份表就是某个大型系统邮件模块的数据模型:

    序号

    分类

    项目

    数据

    单位

    1

    统计数据及经验数据

    A:总用户数

    5,000,000

    2

    B:激活用户比例,每天访问用户数点总用户数的比例

    60%

    3

    C:每个激活用户邮件数

    50

    4

    D:每个用户每天收到信数

    8

    5

    E:每个用户每天发送信数

    6

    6

    F:系统高峰时间(小时)

    4

    小时

    7

    G:高峰时间内收发的邮件数占一天总邮件数

    50%

    8

    H:每个用户每天收发件次数

    6

    9

    J:每封邮件大小平均为(K)

    30

    Kbyte

    10

    K1:据统计,使用WEBMAIL的用户数百分比:

    70%

    11

    K2:使用邮件客户端软件的用户数百分比:

    28%

    12

    K3:使用IMAP用户数百分比:

    2%

    13

    L:平均每通过web访问一封信,大约要访问页面数为:

    4

    14

    M:假定每个页面大小约为

    30

    Kbyte

    15

    N:通过本系统向外转送百分比

    75%

    16

    O:发送给本系统的邮件百比分

    25%

    17

    Q:系统峰值时CPU利用率

    60%

    18

    19

    处理能力计算

    POP的处理能力=A*K2*B*D*G/(F*3600)

    52.78

    封/秒

    20

    POP流出系统量=(POP的处理能力*J)

    1.58

    Mbyte/s

    21

    HTTP的收信件处理能力=A*K1*B*D*G/(F*3600)

    83

    封/秒

    22

    HTTP的发信件处理能力=A*K1*B*D*G/(F*3600)

    62.5

    封/秒

    23

    HTTP流出系统量(平均页面大小*页面数* HTTP处理能力)

    9.96

    Mbyte/s

    24

    HTTP流入系统量(HTTP发信数*J)

    1.88

    Mbyte/s

    25

    SMTPIN(从其它系统收到邮件)=A*K2*B*D*G/(F*3600)

    52.78

    封/秒

    26

    SMTPCLIENT(客户端发送系统)=A*B*E*G/(F*3600)

    104.17

    封/秒

    27

    SMTPOUT(发送到其它系统)=A*B*E*G*N/(F*3600)

    78

    封/秒

    28

    SMTP平均发信(SMTPIN+SMTPCLIENT+SMTPOUT)

    134

    封/秒

    29

    SMTP流入量=(SMTPIN+SMTPCLIENT)*J

    4.68

    Mbyte/s

    30

    SMTP流出量=(SMTPOUT*J)

    2.03

    Mbyte/s

    31

    高峰时期邮件平均流入量

    6.56

    Mbyte/s

    32

    高峰时期邮件平均流出量

    13.57

    Mbyte/s

    33

    高峰时期邮件平均总流量

    20.13

    Mbyte/s

    34

    系统带宽要求(流量×8(含协议数据))

    160

    Mbit/s

    35

     

     

     

     

    36

    并发数计算

    POP高峰并发数目=A*K2 * B*H*G/(F*3600) 次/秒

    39.58

    次/秒

    37

    SMTP高峰并发数目=A*B*(D+E)*G/(F*3600) 次/秒

    183.06

    次/秒

    38

    HTTP高峰并发数目=A*B* (D+E)*K*L*G*O/(F*3600)次/秒

    145

    次/秒

    39

    IMAP高峰并发数目=A*D*K3*B*I*G/(F*3600)次/秒

    0.35

    次/秒

    某模块数据模型图

    上表中可以分析出此邮件系统中最主要的应用是webmail,smtp,pop,其中webmail方式大约为活跃用户的70%,而其它方式则占30%,同时它还给出了平时的参数指标,与峰值的时间与指标。这样你后面的场景设计则重点会很清楚,三种方式是测试的重点,用户的分布也很清晰。从上表中还可以看出,此场景的需求人员做了大量的细致的性能分析工作,在国内这样专业的需求人员不是很多,有时候只能靠性能测试人员不断的沟通来获得必要的性能信息,同时在这个阶段也最好与有经验的架构师多沟通,了解系统可能存在的性能瓶颈,以便使自己设计的场景更有针对性。

    场景设计完成之后就进入了脚本的编写,在这个阶段,主要是性能测试人员的程序能力。在这一方面,测试工具是比较多的,我所熟知的就有ACT,WAS,LoadRunner等工具。从原理看,其实都是一样的,不过如果是测试复合协议的应用,LoadRunner 则是首选,特别是在几个协议同时使用的应用,比如类似于QQ这样的应用可能会用到多个协议来进行录制。其实在录制脚本的第三个阶段也是需要跟程序员配合的,比如在录制web应用程序中,对session,cookie的处理,对业务上一些请求的处理,这些都需要程序员协助,同时他们也能够帮你确认某一阶段,用什么样的技术,选什么样的协议,从而帮助你更好的编写模拟应用场景的脚本,在这里测试人员经常会认为只要掌握了工具就行了,其实在这里需要很好的编程功底,希望大家多多关注这些脚本的编程,而不是用一两个工具。

    脚本的运行与监控,还有分析结果也是重中之重,在运行时,可能会跟据不同的应用选择监控的参数,比如在程序运行中,是否有大量的IO读写,网络交互,或是线程切换,在数据库,是不是有大量的逻辑读写的操作,或是执行频度特别高的SQL执行,这些有可能你是了解的,但是如果身边有DBA的专家,与架构师,他们会更了解应用程序的性能瓶颈,会需要一些有效的监控指标,这时你在选择性能监控指标时,要多听他们的意见。特别是发现性能问题时,可能需要程序员与DBA参与进来时,再次运行场景时,更需要增加一些他们认为可能出问题的监控指标。当然作为测试人员也要了解,这些指标的异常,可能是由于应用程序那一方面不合理的,为研发提出合理的意见。

    发现问题后就是tuning ,这也是性能测试最终的目的,发现性能问题,并进行解决。前面的几个阶段,可能是只定性的发现问题,而如可精准的发现问题,则需要扎实的编程功底。对于代码的tuning有如下原则,发现占用时间最长的函数,而不是优化性能不合理的函数。在对代码的tuning中,你可以借助代码分析工具,下面就是IBM-Quantify执行后的图:

    Purify的分析图

    可能大家使用这个工具时会觉的晕,其实我第一次用时也晕的N次,其实用多了很简单的,工具都是相通的,在这里只要把握程序的脉络,就好像庖丁解牛,最主要是关注程序占用时间最长的函数和调用次数最多的函数,只有对这样的函数进行优化才能事半功倍,而一些程序员往往喜欢优化算法不合理的函数,费了九牛二虎之力,却发现效果并不是很好。在这一阶段经常会碰到以下一些情况:

    • 程序调用数据库接口函数时发现时间过长;
    • 初始化一些事务的次数过多;
    • 某一些函数调用次数过多;
    • 有一些不应当出现的异常函数出现。

    对于上面的第一种情况,一般是数据库可能是某一些SQL的效率不高,你可以与有经验的DBA把这段应用的SQL取出来,进行分析,确认一下是不是数据库的问题。其实在优化的过程中,数据库的优化是最简单的,不需要修改任何程序,而且效果往往是最好的。第二种情况,一般最大的可能是程序员把事务写在了循环的里面,造成了N多次的重复对事务的构建,众所周知分布式事务的构建是最消耗性能的,所以一般不要放在循环的里面。对于第三种情况可能性就更多了,调用次数多不代表错误,但如果性能因此大受影响,则是不被提倡的。第四种情况,就可能是一些什么不合理的异常出现所导致的,可能就是缺陷。在这个阶段由于要阅读成千上万的代码,即使你的能力超强,也是不可能完全了解了,所以当发现可疑的代码时,应与当事人一起去剖析这段代码,要耐心的分析每一种可能。有时候,这个活比技术还难做,如何在不伤到别人情感的情况下给别人指出错误,这可是测试人员最大的挑战,从技术上,到人的心理都要有所把握。虽然这一阶段难度比较高,但看到产品经过自己的努力,越来越快时,你会感到无限的成就感。

    最后只想再说一下,性能测试是一个团队的事情,不是某一种角色可以完全承担的,测试人员在每一个阶段要善于借用团队的力量,协调着做,同时也要不断提升自己的技术,只有不断的努力,帮助研发成功,才能得到在大家的尊重。

    版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

  • 软件测试斗志昂扬,多看几遍!

    2007-11-20 16:55:09

    刚刚踏入这个行业,从前辈的经历里能看到自己!读读前辈的经历吧!!朋友们!!

    2005年9月26日,不知天高地厚的我,参加了上海51testing组织的Mercury认证考试,因为感觉性能测试软件测试行业中待遇比较高的职位,为此本人也在这种拜金主义心理的作祟下,报考了loadrunner这款工具。10月19日,51testing的朴老师电话通知我考试成绩——74分,哈哈,顺利通过!谢天谢地,俺这样的新手第一次参加这样的考试,竟然通过了!感谢51testing老师们的辛勤培训,应该说,他们提供的考前辅导还是相当有效的;当然也要感谢自己,三个星期来的日夜兼程,把loadrunner这款工具的使用搞的死去活来,挥洒自如(有点自夸哦)。

        据51testing的老师讲,本季度考试通过率不错,在50%左右,尤其上个季度没有通过的考生,这次通过了很多。为此,本人笔兴大发,决定总结一下自己的考试经历,哈哈,大家给点面子,别乱拍砖,照顾下俺这个测试新手吧!

        从哪说起呢?既然想总结下自己这1年多来的工作生涯,干脆从毕业说起吧!我是个北方人,毕业于西安某三流的大学;北方人一直对北京都有个莫名的情结,所以2004年毕业后只身闯京城,拿着计算机本科毕业证,在举目无亲的都市里漫无目的的穿梭于各大招聘会。一个月下来,没有任何单位有要我的意思;唉,都要工作经验,而且我又不是名校毕业,眼瞅着和几个清华、北工大的家伙一起去投简历,都不好意思和面试官打招呼,唉,可怜的我!没办法,只好想办法钻点空子!经历了十来场招聘会,总算摸清这些单位的用人需求,不就是java么?不就是数据库么?不就是unix么?好,咱学!于是在北京7平米的小茅屋里寒窗苦读,把这些上学时候学的稀里糊涂的东东搞定,于是迎来了某软件公司的初试——做题!(如果大家有过类似经历,我会和你报头痛哭;如果没有,ggjj们,你们是不知道现在的用人单位招人多严苛,上来啥也不说,先做2小时的卷子再谈!)还好,这次准备充分,而且几个月来做的卷子不少(当然都被“莫需有”的理由拒了),别的能耐咱没有,笔头子功夫练出来啦!结果笔势完毕,在门口外和一个北邮的家伙一起抽烟等待通知。这哥们和我有着相同的被拒经历和被拒次数,因此马上情趣相投起来,我手上的烟也是他派的,一看,是我讨厌的“中南海”!没办法,不抽白不抽!这哥们和我一样来应聘程序员,看着他饱含沧桑的眼角,我深深体会到:1)这年头,和我一样的毕业生,找工作难哪!2)这小子抽烟手势不端正,因此经常呛到眼睛,哈哈!

        半小时后,一个打扮比较风骚但是一点都不漂亮的中年女人(之所以把她先拉开帏幕,因为她就是我日后的上司),和另外一个大汉(他是日后我们项目的开发经理)出来,叫我俩进去一下,对其他来笔试的人又说了点漂亮的拒绝言辞;这时候,我又深深意识到两点:1)我和北邮兄有戏 2)那些被拒的弟兄将会继续走完我走过的路…

        第二轮面试时,我和北邮兄只是在一个小屋里被不漂亮女人和大汉简单的蹂躏下;最后的结果是:北邮兄由于java基础好,去做了程序员;我呢,去做测试!在离开小屋的那一刻,我下意识的悄声问了下北邮兄:啥叫测试啊?北邮兄:好像是测试程序吧!前边的大汉似乎听到了我们的对白,回头用极其鄙视的眼神看了我一眼,那眼神锐利得直刺我的胸口,好像对我说:小样,——新来的吧!

        日后的岁月里,我在这个小公司极其混乱的测试流程里煎熬着。虽然本人不聪明,但是咱笨鸟先飞,在7平米的小屋里,无数个黑夜里,俺懂得了软件工程,俺了解了RUP,俺知道了测试应该按阶段来实施,不是想测什么就测什么,俺还知道测试用例的非常重要,但是不知道为什么公司里做测试不按照测试来执行呢?于是俺上网找资料,希望把自己的想法说给女人听,俺想让她知道:俺不想一直拿1800的试用期工资,俺想改进公司的测试流程,俺想离开7平米的没有暖气的茅屋,因为冬天来了,俺不想被冻死…3个月后的年底转正,我写了一份“热气腾腾”的工作总结递交给女人,想好好表现一把。但是俺失败了,在女人威严的慑服力下,俺屈服了!因为后来我和北邮兄讲,他告诉我:如果要采纳你的意见,这个公司的老板该回家当奶爸了!

        此后是我3个月的人生低潮期,因为俺的转正工资只有2300,扣了社保不到2000;因为俺依然要在茅屋里蹲过这个冬天,因为除了填饱肚子,所有的积蓄都要还给北邮兄,买个破手机要我还3个月,唉!黑夜里,仰望夜空,很美;唱着杜甫的《茅屋为秋风所破歌》,很凄凉!我不知道这样的日子要持续多久,不知道是公司不容我还是我容不下公司,不知道自己该何去何从!

        这次应该感谢51testing的sincky!为什么呢?因为他的一篇文章把我从这段低谷里挽救了出来。年后的某日,在网上偶然看见一篇文章《借刘德华演唱会小喻测试人生》,开始看着感觉写的挺诙谐的,后来深思了一下,感觉说的很有道理:原来没有人可以一步登天,原来要成就大事就要从小事做起,原来这么浅显的道理却被很多人忽视,竟然不能化为实践!在他的blog里,我学习到很多,也因此在这个时候和他在msn里结识,原来每个成功的背后都隐藏了几多心酸和挣扎,因为在很多经历里,我们竟然有几分的相似。于是,我意识到自己是时候该奋起直追了,蹉跎了岁月,伤透了年华,既然国内的软件测试行业如此的不成熟,是不是说明我有很多成功的机会呢?在网上结识了几个测试领域的高手以后,我又一次认识到自己的不足,因为:从前我懂的测试理论、测试流程是一种标准化的东西,对于国内很多软件公司来说,还仅仅是一个方向而已!这么说来,我没有能力改进公司的测试流程,但是我有能力改进自己的测试技能!相信很多同行朋友从前或目前一定有和类似的心境,那么在你读到这里的时候,你一定该立刻振作起来,从自身出发!换句话说,如果每个测试从业者个人的能力都提高了,整个软件测试行业就自然的进步了。

        这时候,就不得不提自动化测试了。应该说,刚工作的时候,我就搜索各大软件测试的网站、论坛,发觉自动化测试是每个论坛里讨论最多的话题。开始由于自己没有软件,而且感觉学自动化测试的朋友们总有那么多问题,所以感觉这东西可望而不可及。但是有几次和北京业内的测试朋友见面聊天的时候,他们都一致认为自动化测试是测试行业发展的方向,而且这东西可以自己掌握,不需要改变公司的任何规章,哈哈!于是,从朋友那里拷来一份mercury的winrunner、loadrunner,还有个rational robot(好像一提到自动化测试工具,想到的基本就是这几个,看来我知道的都晚了!),趁下班的时候,在自己的机器上玩命的摆弄。开始也没想太多,反正别人用了,自己也不甘落后,不然总觉得别人一谈自动化测试,自己没的说,感觉不爽!起初,学习的时候,有问题到论坛查资料,后来发现51testing的论坛资料还是非常全的,于是统统下载来,成天研究手册,然后在机器上练习,把自己的机器搞的乌烟瘴气,不过从来没有让女人发现过,强吧!

        开始,有问题我会到各大论坛去提问,但是后来发觉51testing的提问响应时间是最快的,这是让我第一次佩服51testing的做事效率,后来干脆就不去别的论坛了。由于自己有点java编程基础,加上java和c语言差不多,我就从winrunner开始学起;于是花了2个来月,我把winrunner学完了,怎么叫学完了呢?因为2个月后,我已经从原来的提问问题请求别人回答,过渡到后来的看别人问题给别人回答了!其实大家不要拍砖,因为此时虽然我能给别人解决一些论坛里的问题,那是因为大家学习的时候,遇到的问题和我遇到的都差不多,所以自己多思考一下就成了;其实那时候我的工具使用水平还很差,直到后来我参加51testing的远程培训才真正意识到这种差距还不是一点点。

        那个时候,我和一些论坛的朋友一起学习使用winrunner,那种攻破一个个技术难关后的成就感,是我们很多搞技术的朋友们经常会有的,很满足,很兴奋!winrunner学罢,自然而然的就想学loadrunner;为什么呢?因为他们是一个公司的东东,而且脚本方式基本类似,另外,我也渐渐知道loadrunner作为全球市场占有率最大的性能测试工具的强大优势,加上经常浏览51job上的测试工程师招聘信息,让我更加坚信这一点:如果我能把winrunner、loadrunner都学好,那么离开眼下的这个公司是迟早的事。私下问了一些朋友,在北京做自动化测试的职位月薪有多少,统计了一下,在3500到6000左右,如果是外企或者用友、神码这样的公司,做好了会更多;另外一个值得庆幸的是,性能测试工程师有的企业标价在一万以上,呵呵,这不,有奋斗目标了不是!但是自己清楚目前资力还很低,很多东西还是学习阶段,没有真正在企业里实践过,所以还是放住脚跟,把现有的知识学扎实了。

        3个月后,loadrunner基本使用搞定了;下班的时候,试着给公司的服务器加压,哈哈,有一次真的把数据库搞down机了,第二天公司的系统工程师查到是我的ip搞的,于是来质问我究竟想干什么;我说做性能测试啊!它听说是用loadrunner,结果反倒跟我请教问题,哈哈!这小子总认为自己做网管不爽,反倒羡慕我们做测试的,说这是一个长期的饭碗;网管么,青春饭(这是他的原话,诸位网管朋友别拍我)!

        这个时候发生在今年夏天,由于自己能力的飞跃增涨,这种压抑的物质欲望也愈加膨胀;加上在北京认识了很多业内的高手,他们开始建议我跳槽了…怎么办呢?说到要离开,还有点舍不得这里的弟兄们,北邮兄仍然风雨兼程的闷头苦编程序,偶尔一起抽烟吃饭;但是他是北京人,工资问题不是他的最大问题(顺便提下,他的最大心愿是想拥有一份超过3个月的完整恋情,哈哈;因为每个女朋友都是莫名其妙的一个电话、一个短信就提出分手了!)。但是网管哥们劝我跳槽要谨慎,要跳就跳个像样的公司,如果只为了几百块钱,去熟悉一个全新的公司,有点划不来。他说的不无道理,但是想让自己的待遇翻倍谈何容易?再征求多方朋友的意见下,最后决心努力做好学好loadrunner使用,在性能测试领域寻找突破口。要做性能测试,光有工具的使用远远不够,要把这款工具真正的用到实际软件的性能测试中,要对软件架构、数据库、操作系统、网络都要了解;好,说干咱就干!孤家寡人一个,没有别的夜生活,没有别的娱乐活动,除了学习就是拿公司的软件练习(感谢我原来的公司,真的,虽然女人、大汉也许都不知道此事,这里还是要感谢他们的默许和睁只眼闭只眼)。

        7月份,我偷偷的面试了一个北京某外包公司,在问到性能计数器的添加方面,我哑口无言;8月份,被问到模拟一个真实网站性能测试的场景设计有什么注意事项时候,我又无言以对…唉!怎么办?我所学习的仍然很基础,实践性的东西我还很欠缺!要找一份性能测试工程师的理想职位,还真是难啊!

        这个时候,不得不重提51testing;因为此时我得知51testing推出了mercury工具的国际认证,而且提供工具使用培训和考前培训。开始我对认证并无兴趣,只是想参加他们所说的CPE工具培训,来多学点东西,从而弥补自身摸索阶段的不足。于是我报名参加了51testing的loadrunner CPE培训,这时,是我第二次佩服51testing老师的能力过人之处;原来在CPE培训里,我曾经遇到过的一些困惑和疑难,经过老师的讲解,真有豁然开朗之感,而且从他们那里获取的一些资料,让我对性能计数器的使用有了更加清晰的认识。

        之前因为sincky的那篇《漫谈测试工程师与mercury认证》的文章,和他交流过;但是当时觉得国内的认证做的太烂了,而且自己一向认为能力不是靠证书来证明的,是良马终究会遇到伯乐的!但是在经过CPE培训后,自己由衷感觉到他们的培训实力还是相当强的,毕竟是给企业做培训的老师,讲出来的东西确有高人之处;可能是自己被他们的人格魅力折服了吧,呵呵!于是心里暗暗打算,将来有钱了,是不是也去考一个SP或者CPC啊,哈哈!

        一个偶然的机会,在51job上发现一条某公司的招聘信息,性能测试工程师,月薪12000,再看招聘条件的最后一项写着“mercury认证者优先”。我赶忙瞪大眼睛,再看是一个外企,不错、不错!看来我这条路算是选对了,自动化测试——有搞头!于是重新温习了sincky的那篇《漫谈测试工程师与mercury认证》,起初认为文章说的比较有道理,但是依然认为有一些商业宣传的味道,但是现在想来,文章说的还是相当有道理的:

        1)“觉得国内的认证做的太烂了”:和51testing的人接触过后,特别是在后来我去上海参加SP的认证考试,和51testing的老师们面谈后,发觉他们是真真正正的在做软件测试的培训,真真实实的想把MECRURY认证做好;有这样精干、高效、强劲的团队,从我个人角度讲,这个认证的价值我相信!

        2)“认为能力不是靠证书来证明的”:这话到现在我也不否认,个人能力不是一张纸能体现出来的,即便是纯金的,即便是比尔.盖茨亲笔签名的;但是证书却是获得高薪工作的敲门砖,尤其在这个证书还没有普及到人手一份的时候,它更能体现你在众多竞争对手时候的优势!为什么呢?因为我有证书,所以我有自信!因为我有证书,在心理暗示上,我认为我对工具的使用熟练度上要比别人强!从另一个角度来说,国内学习自动化工具的人成千上万,但是真正能熟练使用的人又有多少呢?也许这话不该出自我这个新手之口,但是在我后来到上海面试某大型软件公司的性能测试工程师时,深刻体会到我身边的那边朋友与我的差距(如果那位朋友看到此文,在此非常抱歉,不过我没有任何贬低你的意思,呵呵),所以我觉得如果能通过认证考试的人,起码对工具的使用是非常熟练了,从mercury认证的考试范围你会发觉它考的方面相当广泛,不是轻易就能通过的。

        3)“是良马终究会遇到伯乐的”:这话也不假,不过从现在严峻的就业行情来看,“酒香不怕巷子深”的岁月已经不复存在了,想找一份理想的高薪的工作,不是自己努力争取,没有人会送上门来找你;即便是猎头公司上门来拉你,那也是因为个人能力到达一定境界。但是想要达到这个境界,突破个人职业生涯的瓶颈,就要付出很多的,当然包括这种类似的智力投资啦!

        哈哈,不分析这个啦,拙见、拙见!于是我联系了51testing,准备报名所谓的loadrunner的SP认证考试,当然在价格上,他们也给我打了折扣;虽然花去了5个月的积蓄,但是我知道迟早有一天,我会翻倍的赚回来。9月底在51testing的远程培训站点上,俺认真研究了每个模拟题,了解了考试的难度和题型,之后在9月24日抵达上海,参加26日的考试。其实这时候,我已经电话联系好一个上海的那个大型软件公司,27号参加面试。该公司购买了loadrunner工具,并招聘性能测试工程师,准备组建自动化测试团队对公司开发的软件产品进行性能测试。面试期间没有什么特别剧情要说给大家,只是他们听说我参加了mercury认证考试,加上我回答loadrunner使用问题上的自信表情,所以同意录用了我;非常欣慰,因为我即将告别北京的那所7平米茅屋,因为我的薪水翻了2倍多,哈哈!

        十.一七天就这样结束了!明天我就要背上行囊,踏上上海的征程了。独自走在灯火璀璨的京城长街上,回想起1年来的生活片断,那种百感交集的感觉是无法用文字来形容的;就要离开了,虽然那里是另一个物欲横流的社会、另一个繁华喧闹的城市,但是我仍然怀念你:北京——这个城市,还有更重要的是这个城市里的好朋友们,包括女人和大汉;女人,其实你的妆不化那么浓,还是比较漂亮地;大汉哥,我的项目经理,其实你该经常刮下胡子;还有北邮兄,感谢你经常派给我不爱抽的“中南海”,不如尝尝“白沙”;网管兄,希望早日在测试行业里见到你,不过怕是见不到你了,因为你都36啦!…

        我的文笔并不好。本来由于刚刚获悉认证考试的结果,兴奋过了头,所以想写点东西总结下自己;因为对我而言,这次认证考试的经历过后,让我进入了一个全新的职业生涯里程,所以想和大家分享一下;结果话说多了,把这1年多来的经历都流水帐的记录出来了,没办法,本人爱罗嗦是出了名的!既然本文标题是关于mercury认证的,那么最后请允许我再给将要报考mercury认证的朋友一点经验分享:1)SP等级的考试一点都不难,但是考的内容很细,它是真正的考核我们的工具使用熟练度;所以一定要在考前多多的实践,练习它的每个功能点的操作 2)考试题目虽然是英文,但是都是很简单的英文,连我这样的新手都能一次通过,大家该更有信心才对 3)外国人出题很单一,绝对没有怪僻的题目,甚至它在题设里就告诉你,应该有几个答案,所以没有什么迷惑性 4)题目难度不大,但是题量比较大,而且是总分的70%算及格,所以答题时候要谨慎哦,使遍浑身解数也要争取把题目做对哦 5)51testing.com" target="_blank">51testing组织的mercury认证考试,每个考生都可以有2次考试的机会,所以我觉得即便第一次失误没有通过,有了一次经验,在第二次肯定可以通过的,只要你用心去学习它 6)也是最重要的,就是要珍惜51testing提供的考前培训,虽然培训里没有原题,但是这是初次应考者唯一的考前辅导,价值不可忽视

        自动化测试的职位,在网上火的大红大紫,希望这个势头多持续几年,哈哈,来日等我考取CPC认证,就可以去应聘那些高级的性能测试工程职位喽,起码让自己的投资有所回报,也尝尝月薪过万的感觉!朋友们,让我们互相祝福吧!

        就这样吧,做为一个新手,很多话讲出来怕同行笑话,不过俺也不怕啦,自己的道路自己选择,同意我的说法的、不同意我的说法的,都可以抽空来和俺畅谈;初到上海,正缺朋友聊天呢,呵呵!联系qq 411469763,不过刚刚来到新公司,不能经常在线,见谅啦!

    文章来源51testing

  • 你属于哪一类测试人,今后的路该怎样走??

    2007-11-20 15:46:47

    转载:来自51testing

    自从本人从事软件测试培训以来,接触了太多的软件测试工程师;发觉从业者多数存在以下现象:

    ——刚刚毕业,踏入IT行业,不懂开发或开发经验薄弱,被迫或“亚被迫”从事软件测试工作;这心哪,瓦凉瓦凉的,一是根本不懂这工作是干嘛的,二是这工作不被很多公司重视,于是唏嘘的心里留下一声声叹息,蹒跚的人生步履留下一串串疑问…

    ——从事软件测试工作2年以上,由于公司不正规的测试流程,不标准的测试方法,因此,终日碌碌无为的点击按钮,某日拍脑袋突发奇想,测试出来一个bug,于是兴奋焉…终后没有新思路,于是没有发现新bug,于是不再兴奋;于是这两三年来,无论测试经验,还是测试技术、方法,包括理论,都无长进,于是郁闷甚至极度懊恼这几年来究竟做了些什么,明天又该何去何从呢?仰天长啸,却无语对穹苍….

    ——有过若干年开发经验,也许由于疲惫于终日编码,也许感觉软件测试是个朝阳领域,于是转做测试…但是好景不长,兴奋度持续一段时间,感觉自己的想法和思维方式与现实工作模式严重分歧,所谓天妒英才,空有一身本领,竟无用武之地!于是满腹的经纶化作无言的泪水,内心的豪情壮志也逐渐泯灭!接着开始逐渐适应了眼前的这份高级测试工程师的头衔和薪水,觉得干工作就是那么回事,何必计较那么多?虽未清晰构建余下二三十年的职业蓝图,但是也觉得起码自己比起很多同行,还算不赖;时间如流水般在烟圈与香水中消逝,吾生就是这样终日撞钟,铛——铛——铛——(好响!斑竹,猪头切一半给我,堵耳朵!)…

    如果您作为一名测试工程师,看了上述三种状况,感觉自己不属于任何一种,那么只有两种可能:一是您是超级高手——您聪明绝顶,有着可以大展宏图的工作机会,又有满意的薪资,而且对这一行业无限热爱…反正对您来说,一切都太完美了,无懈可击!二呢,也许您是个漠视一切、目空一切的家伙,天塌下来当被盖的那种,反正什么言论对您都无懈可击!为此,本人建议此两种人不看本文,以免互相拍砖,破坏安定团结的大好局面^-^。

    好啦,气氛活跃至此止,以下是严肃话题。

    如果您是个积极进取、想在年轻时成就一番事业的人,那么请绝对相信这几句话:

    ——行行出状元!

    ——人生能有几回搏!

    ——错过这村,就没这店了!

    为此,有必要说明下这几句俗语在软件测试行业的应用。首先,我们国内的很多软件测试从业者,是对软件开发不太擅长,但是又对软件行业又由衷的热爱,所以做了软件测试。但苦于读书时候没有学习过该方面知识,公司里又不一定有经验丰富的人员给予指导;因此,初涉软件测试的年轻朋友,大多做了半年、一年,感觉自身技能提高并不大,再加上整体行业发展缓慢,和网上的同行一交流,更是感觉软件测试没有希望,自己的前途黯淡无光!无奈只好终日吟唱“我的天是灰色,我的心是蓝色…”常言道,“男怕选错行,女怕嫁错郎!”——当然如今男女平等了,尤其软件测试从业者,男女比例基本上还算对等——那么,是不是软件测试行业真的没前途?软件测试工程师真是低人一等呢?当然不是,而且绝对不是!和软件开发领域相比,测试发展不过短短的10来年,而且主要是近三五年,所以整体行业不成熟也就情有可原。但是换句话说,乱世出英雄!如果你学软件开发,你知道作为一名合格开发工程师需要学习什么,知道开发工程师的待遇如何,知道开发工程发展前景如何;但是测试行业还没有发展到让你足够看清这些东西的阶段,所以在软件行业中对于喜欢挑战性职业的人,那么软件测试绝对是个好的突破口。各种统计数据表明,国内软件测试的人才缺口,未来几年将达到30到40万,所以对于朋友们来说,干这行还是有相当大的发展空间!但是,如何在众多的从业者中独树一帜、成为行业状元呢?这就需要技巧了!

    再说第二方面。记得有句歌词叫“无怨无悔我走我路,走不尽天涯路…”!如今这个年代,各行各业竞争都很激烈,很难再有90年代初猛然蹦出一批暴发户的机会;因此,不管你因为什么选择了软件测试行业,都要无悔的走下去,只要有决心和毅力,终会成就正果!网上有篇文章叫《不做浮躁的人》,说的很好,我想我们确实该脚踏实地的做些事情,提高自己。抱怨这个行业只会让心情更加压抑,投入的做些具体的事情,待到自己有足够能力的时候,那么你就是推动这个行业发展的先驱;如此一举多得的事情,干吗不做呢!做踏实的人,不做抱怨的人,就算我们改变不了这个世界,也不要在这个世界里迷失自我。换句话说,年轻时候不卖力做点事情,老来方悔则一切晚矣,回首这一生,碌碌无为,可怜、可叹…这也是我要说的“人生能有几回博”。

    唱了这么多高调,鼓舞一下大家的气势。那么,究竟如何在国内的软件测试行业现状下找到一条适合自己发展、并能快速提高职业技能的捷径呢?

    我想应该从测试工程师的职业生涯定位谈起。从宏观意义讲,软件测试可以划分为以下三个方面:

    • 软件测试管理:测试流程管理、测试职业管理,测试技能方法管理等。
    • 软件测试技术方法:根据软件测试的不同阶段周期、不同测试类型、不同软件类型等,深入研究软件测试的技术及方法。
    • 软件测试自动化:自动化测试流程、自动化测试管理、自动化测试工具等。

    软件测试大致分为以上三类,每类可细化为更多子方面,例如第二类根据测试类型还可细化为功能测试性能测试、安全测试等,根据测试方法可细化为黑盒测试、白盒测试、灰盒测试等。因此,软件测试工程师的职业发展方向,也大致可以如此粗略分类,并逐渐细化。这里,之所以将软件测试自动化单独列出来,是考虑到软件测试自动化既包括技术方法方面,又包含管理方面;更重要的是,软件测试自动化是软件测试领域无法逾越的发展阶段,随着应用软件程序规模的不断扩大,业务逻辑的不断复杂,以及从业者相互协作关系的日益重要,在软件的测试活动里适当使用自动化测试是非常必要的;并且,这种思维已经逐渐在国内外众多软件企业的测试领导者头脑中定型,他们也都意识到自动化测试的种种优势,并都或多或少希望购买和培训自动化测试工具。我们接触的很多大中型软件公司,包括外企,甚至早就在内部实施自动化测试,其中以使用mercury loadrunner、quicktestpro以及testdirector等工具的企业用户居多。

    这里我想对喜欢自动化测试或立志成为自动化测试工程师的同行朋友说点个人想法,并结合mercury自动化测试工具,推荐些许学习方法,以供大家参考。

    • 如果你有过开发经验,哪怕一点点,并且一直以来从事的是功能测试工作,那么推荐你学习自动化功能测试工具,并在此方面深入研究下去。该职位待遇一般是本地城市手工测试工程师的两倍左右,如果到达高级自动化测试工程师职位,从事自动化测试设计或测试框架的开发,待遇会更高。Mercury公司的winrunner和quicktestpro,是目前最主流的自动化功能测试工具,学习二者的方法也很简单,只要懂得c语言和VBscrīpt即可。要深入学习,当然还要熟悉自动化功能测试的流程、管理及深层开发(包括测试框架、库函数等)。当前国内的应用软件开发,主流还是c/s与b/s两种架构,前者一般采用vb、vc、delphi、pb或java等开发,而winrunner工具对此类软件支持得比较好,很适合在这样的软件测试活动中采用自动化测试;后者一般是采用.net或j2ee技术开发的基于浏览器类软件,测试该类软件就非quicktestpro莫属了,它是mercury公司专门针对web程序的自动化测试工具。由于自动化功能测试工具品牌多,入门简单,因此,也是众多立志成为自动化测试工程师的首选。
    • 作为一名软件测试从业者,我们知道执行性能测试,使用手工方式是无法想象的,因此借助工具来实现是非常必要的。目前业内存在两种现状:一是很多公司为了节约购买工具的成本或本身不要求软件性能指标而干脆不执行性能测试;二是由于性能测试是一门博大精深的技术工作,起步较高,因此这方面的高手不多,造成很多大中型软件企业或外企严重缺乏性能测试工程师!性能测试工程师待遇,一般是本地手工测试工程师的三倍甚至更多;我们接触的企业客户需求里,很多开价上万的性能测试工程师职位,竟然很难招到。随着软件开发技术越来越高深,业务逻辑越来越复杂,对软件的质量要求同样也会越来越高,软件一定会存在性能缺陷,因此对软件的性能要求也会随之而来;况且,软件的性能指标是软件用户手册里的重要组成部分,从正规测试流程上来说,凡是网络应用软件,不可不做性能测试!但是,从事性能测试的工程师,需要掌握太多的知识,包括计算机网络、数据库操作系统、服务器等,而且还要有深厚的性能测试计划、设计、分析能力,以及丰富的性能测试经验,这些如果单靠个人的自行摸索,肯定是不太实际的。Mercury公司的loadrunner,是目前国际上性能测试工具的绝对领导者,具有百分之75的市场占有率;在国内,业界同行也都是提起性能测试首先想到loadrunner;因此loadrunner是在软件测试领域里立志成为一名合格的、优秀的性能测试工程师的朋友们的绝对首选。
    • 如果你从来没有过软件开发经验,一直从事的只是手工测试,而且对软件测试的流程管理有着浓厚的兴趣,尤其对于那些从事测试的姑娘们!testdirector都听说吧?它集测试需求、测试用例、测试执行、软件缺陷管理于一身,将软件测试的整个流程统一管理,并支持异地分布式测试资源管理。和众多的软件测试同行接触,我们愈加发现一个问题,那就是我们很多的业界朋友,缺乏完整的、系统的软件测试知识体系,喜欢满足现状,而不去思考如何更加有效的实施软件测试活动,优化软件测试流程。针对这种现状,学习国外优秀的软件测试流程与管理经验,就理所当然了。而testdirector就是当前市场上最优秀的软件测试流程与资源管理的工具,目前本人还未见过一款测试管理工具集成如此众多功能(当然它的升级版quality center也是mercury公司的)。因此,掌握该款工具的使用,是立志成为软件测试管理者的一个非常必要的方面。
    • 其他自动化测试领域,本文暂不讨论,例如白盒测试、特殊类型测试等。

    那么,什么是开拓上述三种自动化测试职业的捷径呢?

    答案很简单,如果你可以抛开世俗观念,考取mercury认证绝对是捷径!

    下面我要向大家论证考取mercury认证的几大理由:

    首先,mercury公司是软件质量保证工具开发商中的绝对领导者。下图是美国gartner公司的最新调查结果,位于坐标第一象限最右上角的就是mercury,图中还有其他我们熟知的几个公司,如IBM rational、compuware等,但是mercury长久以来,一直独占着软件测试工具提供商的领先地位,包括很多在华投资成立软件研发基地的外企,他们多数都是使用mercury测试工具。如果有了这个测试工具供应商的王者,那么,想要学习自动化测试工具,有什么理由不选择mercury呢?

    其次,拿本人经验来说,有了mercury工具的使用经验,即便将来所在公司不使用该款工具,那么再学习其他的工具也会相当顺手,不费吹灰之力!为什么呢?举例来说,比如loadrunner的网络协议是本人所接触的性能测试工具中,支持最多的(相信很多人会同意我这个观点),如果将来你打算换用webload、silkperformer(当然它们的局限性要比loadrunner大的多)等性能测试工具,绝对不会比loadrunner还复杂;再比如拿quicktestpro和其他针对web程序的测试工具(如qawizard、XDE Tester等)相比,使用更是完全类似(不了解的人可以到本人blog查看我的文章去亲自对比)。至于testdirector,更是独一无二的功能强大的测试管理工具,没的选择!

    再次,如果你的眼光足够长远,能够看清未来软件测试中自动化测试的重要地位,那么你更应该选择。回想当年的思科认证,刚刚推出时候价格昂贵,但是依然有那么多的人去考。为什么呢?因为有大量的需求!认证通过的人过后都认为这笔投入值得!类比软件测试行业,虽然现在还没到达计算机网络行业发展的那样成熟,但是未来的两三年后,如果有一天到处都是自动化测试的人才需求,到时再临时抱佛脚,相信你不会有什么优势了。任何认证都是初期最有价值的,如果抓住机会在推广初期考取,等到这个认证普遍到一定程度,你已经有了几年的实用经验,所以优势仍在、风采依然!顺便提醒一句,计算机行业发展是相当快的,回首过去这3年,软件测试行业一直是在飞速前进的。如果错过如今这段大好时光,没有及时为自己充电,那么如今你这位软件测试新手,到了3年以后,依然是新手,只是比那时刚毕业的热血青年显得沧桑了一些… 所谓岁月不等人咧,这也是我前边要说的“过了这村就没这店啦”…

    然后,我要说明为什么要考取mercury认证,而不考其他认证。理由很简单,本人一直坚定的认为软件测试是实用性学科,是实践性工作,重理论而不强调理论,不断实践同时积累经验,遵守规范并不断创新!如果你为了眼前一个工作机会而花点小钱,获得一个什么机构颁发的资格认证,尤其那种完全理论性的、满篇题目都是“负载测试与压力测试什么区别”之类的恶心至极的题目的考试,那么恕我直言,你真是鼠目寸光!试问这样的认证有什么用呢?哪个企业的老板会笨到雇用一个纸上谈兵的军师呢?况且你这个军师也是“墙上芦苇,嘴尖皮厚腹中空”!坦诚的说一句,为了应付这样的考试花2个星期背那些题目,都不如下载个试用版loadrunner,对照网上的使用手册练习一下工具的使用!

    最后,我要说一个实际的问题,那就是money了。相比当年的思科认证、微软认证的上万元报名费,mercury认证的三千多、六千多,还是相当便宜的。最直白的说一句,如果你的眼下薪资有3k,花一个月或两过月的薪水买个“国际认证”,那么这件事绝对值得!当然,考取mercury认证的真正核心价值,完全是顺应软件测试自动化的时代潮流,掌握最先进的软件测试自动化技术和管理方法。

    最最后,再为有志于考取mercury认证的同行朋友给予一点点建议。

    • 如果你是初涉软件测试行业的测试工程师,没有或很少接触过自动化测试,那么可以从mercury认证的CPE(certification product education)开始,该认证是mercury认证的汉化版,通过者可以掌握mercury认证工具的完全使用。
    • 如果你具有了3个月以上的mercury工具使用经验,英文能力还不错,或者通过了CPE考试,那么可以直接考取CPS(certification product specialist),之后考取CPC(certification product consultant)。这两种考试都是英文,证书由美国mercury总部颁发,后者价值大于前者,考试难度也大于前者。并且,二者认证已经不限于工具本身的使用,而是结合了代表mercury公司作为软件测试行业龙头地位的先进、正规的自动化测试流程,其通过者也相当受大中型软件公司、尤其外企的青睐,当然这一需求也是我们在长期积累的企业客户关系中总结出来的。
    • 详细mercury认证咨询,请登陆www.51testing.com查阅。

    送上最后一句至理名言,“命运掌握在自己的手中”!如果你对一件事物犹豫不决的时候,那么请尝试学习《卡耐基成功之道》里介绍的方法,在纸上分别写下做此事的理由与不做此事的理由,如果此事的可行性是百分之五十一,那么就别再踌躇了,放心大胆的去做吧!时间会证实一切,因为你的确在进行着一件该行业前所未有的划时代式活动;记住,上帝宠爱勤奋的孩子,他会与你并行….(

  • TD测试工具

    2007-11-20 15:26:23

    TD是test director的简称。是在windows平台上基于B/S框架的测试管理工具。TD的最高版本是8.2.现在的QC是TD的升级版本。而且QC支持多版本的操作平台。如:windows ,solar's unlix等。而且QC有四大模块:需求管理、测试计划、测试执行、缺陷管理。介意使用QC.
    51testing有专门的测试工具培训
  • bugzilla测试工具

    2007-11-20 15:09:13

    Bugzilla操作说明
    1、 用户登录及设置
    1.1用户登录
      1. 用户输入服务器地址
    http://IP/bugzilla/index.cgi
      2. 进入主页面后,点击【Log in to an existing account】,再点击【login in】进入。
      3. 进入注册页面,输入用户名和密码即可登录。用户名为Email 地址,初始密码为用户名缩写。登录后自动进入查询页面。
      4. 如忘记密码,输入用户名,点击【submit request】,根据收到的邮件进行重新设置。
    1.2、修改密码及设置
      1.Login登录后,【Edit prefs】->【accout settings】 进行密码修改。
      2.【Edit prefs】->【email settings】 进行邮件设置。
      3.【Edit prefs】-> 【permissions】 进行权限查询
    2、Bug的处理过程
    2.1、报告Bug
    2.1.1测试人员报告Bug
      1. 请先进行查询,确认要提交的bug报告不会在原有纪录中存在,若已经存在,不要提交,若有什么建议,可在原有纪录中增加注释,告知其属主,让bug的属主看到这个而自己去修改。
      2. 若Bug不存在,创建一份有效的bug报告后进行提交。
      3. 操作:点击New,选择产品后,填写下表。
      4. 填表注意:Assigned to: 为空则默认为设定的 owner, 也可手工制定。CC: 可为多人,需用","隔开。Desription中要详细说明下列情况:
      1) 发现问题的步骤
      2) 执行上述步骤后出现的情况
      3) 期望应出现的正确结果
      选择group设置限定此bug对组的权限,若为空,则为公开。
      5. 操作结果:Bug状态(status)可以选择Initial state 为New或Unconfirmed.
      系统将自动通过Email通知项目组长或直接通知开发者。
      6.帮助: Bug writing guidelines
    2.1.2 开发人员报告Bug.
      1. 具体方法同测试人员报告。
      2. 区别: Bug初始状态将自动设为Unconfirmed,待测试人员确定后变为“New".
    2.2、Bug的不同处理情况
    2.2.1 Bug的属主 (owner) 处理问题后,提出解决意见及方法。
      1 . 给出解决方法并填写Additional Comments,还可创建附件(如:更改提交单)
      2.具体操作(填表项如下)
      3 . 填表注意:
      FIXED 描述的问题已经修改
      INVALID 描述的问题不是一个bug (输入错误后,通过此项来取消)
      WONTFIX 描述的问题将永远不会被修复。
      LATER 描述的问题将不会在产品的这个版本中解决.
      DUPLICATE 描述的问题是一个存在的bug的复件。
      WORKSFORME 所有要重新产生这个bug的企图是无效的。如果有更多的信息出现,请重新分配这个bug,而现在只把它归档。
    2.2.2 项目组长或开发者重新指定Bug的属主。(owner)
      1. 为此bug不属于自己的范围,可置为 Assigned,等待测试人员重新指定。
      2. 为此bug不属于自己的范围,但知道谁应该负责,直接输入被指定人的Email, 进行Ressigned。
      3. 操作:(可选项如下)
      * Accept bug (change status to ASSIGNED)
      * Reassign bug to
      * Reassign bug to owner and QA contact of selected component
      4. 操作结果:此时bug状态又变为New,此bug的owner变为被指定的人。
    2.2.3测试人员验证已修改的 Bug.
      1. 测试人员查询开发者已修改的bug,即Status为"Resolved",Resolution为"Fixed".进行重新测试。(可创建test case附件)
      2. 经验证无误后,修改Resolution为VERIFIED。待整个产品发布后,修改为CLOSED。
      若还有问题,REOPENED,状态重新变为“New",并发邮件通知。
      3. 具体操作(可选择项)
       1. Leave as RESOLVED FIXED
       2. Reopen bug
       3. Mark bug as VERIFIED
       4. Mark bug as CLOSED
    2.2.4 Bug报告者(reporter)或其他有权限的用户修改及补充Bug
     可以修改Bug的各项内容。
      可以增加建立附件,增加了相关性, 并加一些评论来解释你正在做些什么和你为什么做。
      操作结果:每当一些人修改了bug报告或加了一个评论,他们将会被加到CC列表中,bug  报告中的改变会显在要发给属主、写报告者和CC列表中的人的电子邮件中。
    2.2.5测试人员确认开发人员报告的Bug是否存在.
     查询状态为“Unconfirmed"的Bug,
     测试人员对开发人员提交的Bug进行确认,确认Bug存在。
     具体操作:选中“Confirm bug(change status to New)"后,进行commit.
     操作结果:状态变为“New".
    2.3、查询Bug
      1.直接输入Bug Id,点击find 查询。可以查看Bug的活动纪录。
      2.点击Query,输入条件进行查询。
      3.查询Bug活动的历史
      4.产生报表。
      5.帮助:点击Clue.

    3、关于权限的说明
      1. 组内成员对bug具有查询的权利,但不能进行修改。
      2. Bug的owner 和 reporter 具有修改的权利。
      3. 具有特殊权限的用户具有修改的权利。
    4、 BUG处理流程
      1. 测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,通过Email通知项目组长或直接通知开发者。
      2. 项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
      3. 开发者收到Email信息后,判断是否为自己的修改范围.
        1) 若不是,重新reassigned分配给项目组长或应该分配的开发者。
        2) 若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明)
      4. 测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
        1) 经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
        2) 还有问题,REOPENED,状态重新变为“New",并发邮件通知。
      5. 如果这个BUG一周内一直没被处理过。Bugzilla就会一直用email骚扰它的属主,直到采取行动。
    Bugzilla管理员操作指南
    主要工作内容:
    1. 产品(Product)、版本号(versions)和模块(Components)的定义,同时指定模块相应的开发者(owner)和测试人员(QA Contact)。
    2. 小组的定义和划分
    3. 测试中Bug严重程度、优先级的定义
    4. 增加用户,并分别设定全部用户的分组、权限。
    5. 主要参数(parameters)的设置
      1) urlbase: 输入bugzilla 工具所在的服务器IP地址。
      2) usebuggroupsentry: 设为ON,可以分组。
      3) whinedays:Bug在whinedays设定的期限内若未被处理,将自动重发mail,默认为7天。
      4) defaultpriority:设定默认的优先级
      5) commentonresolve:设为ON,系统将强制要求开发者处理完Bug 后,必须填写修改的内容。
    基本操作:
    1. 创建默认的管理员用户。
      运行checksetup.pl。若不小心删除管理员,重新运行checksetup.pl.
    2. 管理用户
    1) 增加新用户
      点击页面右下角【users】,submit后,出现【Add new user】页面。输入相应输入即可。Login name: 一般为邮件地址,可以设为其他标识。
    2) 禁止一个用户
      填写Disabled text 输入框即可。
    3)修改用户
      可以修改用户注册名、密码。
      设置权限
      QA的权限一般设为: Canconfirm, editbugs
      Developer的权限设为: none
      分组控制:group
    管理group
    1. 增加group
      edit groupàadd groups (New User Regexp可不填/active 选择则可选)->add
    2. 修改group ,submit 即可。
    管理Product 和 component
      1)增加产品Product
      2) 增加组件Component 对应一个owner(进行fixed),QA Contact(确保已fixed)
      3) Component Number of Unconfirmed =10000,此产品将选择bug的初始状态(Unconfirmed,New)

    Bugzilla中的Bug流程图

    由word 到 记事本,再复制过来结果成这样子了。。。
    将就看吧。。

数据统计

  • 访问量: 6665
  • 日志数: 12
  • 建立时间: 2007-11-20
  • 更新时间: 2007-12-20

RSS订阅

Open Toolbar