白天图生存,晚上求发展!

发布新日志

  • LR在安装和卸载问题上的一点总结

    2007-09-30 18:07:32Top 1 Digest 1

    在安装 Loaderunnner 过程中也许你经常遇到,提示无法安装的情况,我也遇到过相关问题,于是查阅了相关资料,总结了一下,好东西不敢独享,拿出来和同行一起交流
    (一) 提示:" the link file .... may be corrupted or has illegated link string "的,提示重复多次均无法安装。
    原因 :你的 Loaderunner 的安装文件夹名写成中文了,造成 Lr 的安装教本无法识别路径,最终导致不断有这样的错误提示。
    解决方案:把安装文件的目录名改为非中文就可以了。
    (二)  没法完全卸载
    要想把 LR 的老版本完全卸载,正确的步骤是:
    1.  停止所有的运行的 LR 的进程和服务( including the Controller, VuGen, Analysis , or the LoadRunner Agent Process/Service )
    2.  备份已有的脚本,你的脚本有可能在你的默认安装路径下
    3.  在控制面板的添加删除程序中,删除 LR ,并重启机器
    4.  手动删除所有 LR 的文件夹,包括您的开始菜单里的 LR 快捷方式
    5.  如果你的版本是 6.0 系列的,删除 Borland 文件夹(通常在 C:\Borland or C:\BDE  目录下)
    6.  搜索    wlrun.* 、    vugen.* ,除了安装文件夹中的文件,其他的都删除
    7.  打开注册表,找到
    如果只安装了 MI 公司的 LoadRunner 这一个产品,请删除:
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive
    HKEY_CURRENT_USER\SOFTWARE\Mercury Interactive
    否则请删除:
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner
    HKEY_CURRENT_USER\SOFTWARE\Mercury Interactive\LoadRunner
    删除所有和 LR 有关的数值,除了你的 License2 或 License。
    8.  清空回收站
    实现以上步骤后,即可放心安装了,切记在重装后,一定要重启机器,因为一些必要信息要写入注册表。
    (三)  卸载后 , 执行安装过程时出现" license security violation.Operation is not allowed "提示信息 , 安装失败
    解决方案:
    1.  进入一台 Loadrunner 运行正常的电脑(安装路径要和你的相同)进入注册表,导出以下两个目录:
    HKEY_CURRENT_USER\Software\Mercury Interactive
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive
    2.  回到刚才安装不成功的电脑 , 进入注册表导入刚才这两个文件。
    3.  再次执行安装。
    建议:如果有用 Ghost 提前做 Ghost,或者为系统设置还原点。
  • 软件测试工程师的招聘体会

    2007-09-21 17:27:50Top 1 Digest 1

    首先说说要做个软件测试工程师,需要了解的方方面面,也可以说是一个职业要求汇总吧。

    基本常识类

      1.  计算机基础知识

      2.  计算机网络基础知识

      3.  软件测试基本知识(软件质量,软件质量管理基础知识,软件测试概念,软件测试标准,软件测试技术及方法,软件测试项目管理)

      4.  软件开发基本知识(软件工程知识,理解软件开发方法及过程)

    技术类

      1.  程序语言

      C/C++,VB,VC,Java,.net,ASP,Javascrīpt等。具体要求要视公司的具体项目或产品来定。但一般以C为基本要求。

      2.  数据库知识

      SQL Server,Oracle,Mysql,Sybase等。一般对测试人员的要求就是要求会使用,然后熟练使用SQL语句进行查询,修改,添加,删除数据操作。

      3.  操作系统

      Windows,Linux(常用的RedHat,SUSE,Debian)/Unix(FreeBSD,Solaris,HP-UX,AIX,Mac)系统。

      自动化测试工具类

      1.  自动化测试概念/自动化测试框架

      好多人觉得自动化测试就是使用自动化测试工具,其实各种工具只是自动化测试实施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。

    2.  自动化测试流程

    3.  自动化测试工具的使用

      自动化测试框架(流程)

      GUI的功能测试自动化

      非GUI的功能测试自动化

      性能测试(广义的和狭义的性能测试)

      自动化测试工具(功能测试工具,性能测试工具,缺陷管理工具,测试管理工具)

      (HP)Mercury Interactive QuickTest Pro,WinRunnerLoadRunner,Quality Center(Test Director),SiteScope

      Compuware QACenter(TestPartner QARun QALoad QADirector TrackRecord),DevPartner studio

      (IBM)Rational TestSuite(Robot TestManager FunctionalTester PerformeranceTester ClearQuest ClearCase ...)

      (Borland)Segue SilkTest SilkPerformer SCTestManager

      其它:JUnit,NUnit,Auto It,Test Architect,OpenSTA等

    实战类(工作经验)

      1.  公司的测试流程

      2.  公司的具体缺陷管理流程(提交bug报告,追踪bug状态)

      3.  测试环境的搭建及管理

      4.  测试计划,测试用例,测试报告等相关文档的编写

    语言类

      1.  英语

      2.  日语

      3.  。。。

    性格类

      通过30分钟至1个小时的面试,试着了解面试者的性格是否适合软件测试的工作。

      1.  细心,关注细节

      2.  耐心,不怕麻烦

      3.  良好的沟通能力

      4.  优秀的学习能力,逻辑思维强

      5.  工作积极主动

      6.  上进性强,永远不满足现状

  • 如何做好系统测试

    2007-09-21 15:53:12Top 1 Digest 1

           一套软件做完了,在给客户上线之前,我们自己要进行完整的系统测试,这个工作听起来好象没什么,但其实是很不好做的,这要求测试人员要熟悉业务、熟悉系统的各个功能项、还要有一套完整的测试方法。我们软件销售部从开始做系统分析工作,现在又开始担当系统测试的角色了,没办法,公司人手不够,只能担当多种角色了。不过对于我们来说也有一定好处,系统分析设计是我们做的,现在做好的系统由我们来测试,一是我们对业务比较熟悉,二是对我们来说也是一种自我的检验,检验一下自己设计的系统是否合理,为以后更好的系统分析打好基础。

            好了,言归正传,讲一下我们在测试工作中的一点体会吧,写出来一面为自己理一下思路,二也是为自己做工作的一个总结。

    一、   测试之前要充分掌握业务流程

            首先,在进行系统测试之前,要知道系统的业务流程,也就是说要清楚每项业务间发生的前后顺序。只有知道了业务的先后顺序,你的测试数据才能继续在ERP系统功能间流转,否则,无法进行各项业务的全面覆盖测试。

            其次,还要明白每一项业务中的详细流程和各个环节涉及的角色,一项比较复杂的业务其详细流程往往比较多,只有了彻底掌握了这项业务,才能对当前业务环节进行全方位的测试。比如:订单管理中,销售业务员创建了一个销售订单,还要经过主管审核,方可执行订单,订单执行完毕后关闭订单。

    二、   了解业务流程对应的ERP系统的功能


            对整个业务有了总体的认识,再把业务分块,在ERP中找出相应的模块与业务对应起来。只有把业务和REP功能完全对应上了,才能说有可能对ERP系统进行全面的覆盖测试。

    三、   系统功能集中测试和测试方法

            找到与具体业务对应的ERP子系统,根据当前业务的流程与角色,对ERP子系统进行集中测试。测试还要讲求方法,尽量做到全覆盖测试,其中注意几点:

    1)、按正常场景进行测试

            根据业务流程,按着正常的顺序,用正确的测试数据测试系统;检查系统的结果是否与预期的结果相同,如果结果相符,表示当前系统模块符合业务逻辑;否则,系统有问题,将错误信息记录到BUG报告中,及时提交开发部门。

    2)、测试异常场景

            根据业务流程,输入异常的测试数据测试系统,查看系统提示哪些异常信息,并查看是否有异常判断,如果有,则表示系统做过异常考虑处理,否则表示系统漏掉了当前异常情况,需要提示开发部门,添加当前异常情况的考虑处理。

    3)、特殊数据的处理

            根据业务流程,在输入测试数据时,输入边缘数据、空值等特殊字符,查看系统是否做了数据录入范围和要求的判断,如果没有,表示系统遗漏数据范围和录入要求的考虑,需要提示开发部门,添加相应数据范围和要求的处理。

            以上三方面的考虑,是比较常见而且不可遗漏的测试部分,当然,可以用测试用例来规范。如:

      

    用例编号

    001

    编制时间

    2007-1-20

    相关的用例

     

    功能特性

    投料

    测试目的

    把车间物料台账存放库位调整与实物的投料地点相同

    数据准备

    5条 物料流水码

    预置条件

    车间物料台账中存在 5条物料流水码,并已登记存放库位。

    测试项

    操作描述

    测试数据

    期望结果

    测试结果

    1输入库位号

    输入新的库位编号,回车(投料)

    02

    页面跳转到下一页面,并显示刚输入的库位编号信息

     

     

    没有输入库位编号,回车(投料)

    空值

    提示输入库位信息才能投料

     

     

    输入长度超过4位的数字编号或不存在的库位编号,回车(投料)

    020202abc

    提示没有当前库位编号

     

    2输入流水码

    扫描(输入)物料流水码,回车(加至投料清单)

    QM0600011

    把输入的物料流水码添加到投料清单表格中

     

     

    没有输入流水码,回车

    空值

    提示物料流水码不能为空

     

     

    输入长度超过9位的编号或随意输入值

    QM060001121abc

    提示物料流水码不正确 信息

     

    3投料

    检查清单,需投的物料全部录入后,选择 投料

     

    提示投料成功

     

     

    检查清单,需投的物料全部录入后,选择 投料

     

    如果投料操作失败,提示错误信息

     

    测试人员

     

    开发人员

     

     

                     

    四、   提交BUG报告

            通过前边的测试,把得出的错误信息,以BUG报告的形式展现出来,转发给开发部门相应人员,以例开发部集中修改系统错误信息。下边说一下BUG报告的内容:错误序号、发现日期、子系统名称、二级模块名称、三级模块名称、发生页面、错误描述、发现者、是否修改状态、修改人意见、修改人、修改日期、确认人、确认日期。按着上边这几项内容,将错误信息以BUG报告的形式列表出来,转发给相应的部门修改。


    五、   回归测试

            BUG修改完毕后,更新ERP系统,更新完毕后,对已往的错误信息进行二次测试,以确保错误信息的正确修改。

            通过以上五个步骤,把我们销售部当前进行的测试工作,做了一个完整的总结,这就是我们目前采用的简单的测试方法和步骤,经过我们的测试,系统性能得到了一定的提高,当然不否认系统还可能存在一些潜在的问题,这需要我们在后期维护中不断的改进。

  • 软件测试工程师的角色定位

    2007-09-18 09:45:36Top 1 Digest 1

    经理、系统分析师、程序员、测试工程师、质量保证人员等。可见,软件测试工程师只是软件项目开发中的一个角色而已。

    戏剧舞台上的生、旦、丑是不同的角色,其表演方式具有明显的特征,这是由于角色决定的。同样,软件测试工程师的角色,在软件项目开发中也存在如何定位和表现自身的行为和责任的问题。

    此处讨论测试工程师的角色并非毫无意义。须知,角色不明,责任不清,行为就失去了参照目标,结果就可能很不理想了。轻则降低了工作质量和效率,重则被视为工作能力低下,可能要退出软将项目组的舞台了。

    软件测试工程师承担的任务

    角色决定工作内容和承担的任务。测试工程师的角色应该承担什么任务呢?这没有统一的答案。因为,这与软件公司的规模,软件项目管理制度,公司领导和项目经理的管理风格,以及具体软件项目自身的特点有很大关系。而且,测试工程师也有普通和高级之分。

    笼统的答案列举如下:

    设置软件测试环境,安装必要的软件工具。
    运行软件,发现和报告软件缺陷或错误。尤其需要快速定位软件中的严重的错误。
    对软件整体质量提出评估
    确认软件达到某种具体标准
    以最低的成本,最短的时间,完成高质量的测试任务
    • ......


    在这其中,最重要的是要明确,程序员的责任和目标。在执行任何具体测试任务前,都要在项目组内对于责任和目标达成共识,以免带来后续工作的相互推诿。


    提高测试质量的要诀


    另外一个值得注意的方面就是工作效率和质量,或许高级测试工程师与普通测试工程师的主要区别在于高级测试工程师可以更快地发现更多软件中的严重错误。对此,有什么可以借鉴的诀窍吗?请尝试以下方法,保证不会是您失望。

    首先测试程序的核心功能,然后测试辅助功能。
    首先测试功能,然后测试性能。
    首先测试常见情况,然后测试异常情况。
    首先测试经过变更的部分,然后测试没有变更的部分。
    首先测试影响大的问题,然后测试影响小的问题。
    首先测试必须测试的部分,然后测试可选或没有要求测试的部分

    软件测试工程师是项目团队中的服务员

    需要强调的一点是,无论你是多么高级的测试工程师,都要明白无论测试需要的工具多么复杂,测试步骤多么冗长,测试工程师在软件项目开发中始终都是扮演服务员的角色,这是由测试工作的特点决定的。任何服务都有被服务对象客户,软件测试工程师的服务对象有哪些呢?

    最重要的客户是软件的用户。测试工程师需要站在客户的使用和需求角度测试软件,报告问题。
    项目经理也是客户。测试工程师需要报告测试工作进度和发现的问题,尤其是严重的问题。

    程序员是最经常打交道的客户。为了便于程序员重复报告的错误,尽量提供良好的软件问题报告,以便程序员可以更快的修复软件错误。

    技术
    文档工程师、市场开发人员和技术支持工程师也都是测试工程师的服务对象。
    软件测试工程师避免犯的几个错误

    前文已经指出测试工程师应该明确角色,明确任务和责任。知道哪些是自己份内的事,哪些是不属于自己的事。一定要尽最大努力完成份内的事,不要做不属于自己的事情,以免弄巧成拙。

    为了更好的扮演软件测试工程师的角色,尽量避免犯下面的错误:

    承诺完成测试的软件没有质量问题
    软件测试只是保证质量的一种方法,软件测试工程师的工作不会直接提高软件质量,因为绝大多数软件错误都需要程序员修复。软件测试只能证明软件存在错误,不能保证软件没有错误,不可能找出全部软件错误。个人的能力和对质量的影响范围很小,软件质量的提高要靠软件项目团队全体成员的共同努力。 

    承担软件的发布权利
    不要因为软件中存在还没有修复的错误,而试图提出更改软件发布的计划。也不要认为已经完成了测试计划,自己决定可以发布软件。因为,改变软件发布计划可能要失去进入市场的良机和很多客户,对此造成的经济和公司市场的损失将不是测试工程师能够承担的。另外,软件发布后,如果用户发现了新的软件错误,公司领导或项目经理可能将过错加在软件测试人员的头上,因为他们同意发布软件。通常软件发布的权利由产品经理、项目经理、测试经理、市场经理共同集体讨论决定。 

    扮演过程改进成员的角色
    软件测试工程师必须报告错误,有时也要分析错误的类型、特征和产生错误的原因。但是,不要主动提出改进软件过程的具体改进措施,更不要直接干涉程序员的工作方式,以免出力不讨好,影响今后的愉快合作。软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作。

     

     

  • 一般测试过程--测试用例

    2007-09-14 10:59:39Top 1 Digest 1

    1、如何创建Test Cases

    Test Cases基本要素:
            1 简明的标题(说明测试的目的)
            2 用例的优先级,测试所需时间
            3 初始化条件,如何构造测试环境
            4 执行测试的详细步骤
            5 期望Test Cases执行后的正确结果

    关于测试用例的优先级别的设定:
            pri1 - 基本的功能
            pri2 - 错误的条件,界限用例(最大值,最小值...)
            pri3 - 极端的条件,边缘用例

    编写Test Cases的注意事项:
            一个好的Test Cases的重要性不亚于一段好的代码,在写Case的过程中我们需要注意以下几个方面:
            1 需要有一个具有自我解释功能的标题,将测试的目的说清楚。(例如:按下“ALT+F+C”关闭“XXXX”主窗体。)
            2 足够详细准确的内容,即使是一个对所要测试的内容根本不了解的新手,也能准确的按照所写的Test Cases完成测试。
            3 拒绝重复的测试用例
            4 不要有模糊的,个性化和想当然的Test Cases(例如:用各种方法打开对话框“XXXX”)
            5 尽量提供一些于Test Cases相关的参考

    当你在写完cases的时候最好带着一下几个问题检查一下你的case:
            1 你的test case的标题是否体现了该用例详细而精确的目的性
            2 你的test case对于一个新手来说是否能让他们精确的执行
            3 你的test case是否有重复
            4 你的test case中的步骤是否清晰,让人一看就能很明白的执行
            5 你定义的执行结果是否能让人很清楚的意识到他跑完这个case后是成功还是失败

    2、运行Test Cases
            根据Test Cases的优先级和不同的测试阶段运行测试用例,运行时要注意Case的优先级(有必要时可以对其进行修改)和测试方式(手动测试还是自动化测试等),并最终记录测试结果。

    3、记录测试结果
            记录在不同测试阶段(Test Pass 1, Regression 1, Test Pass 2…UI Freeze.. Regression 2….Final Test Pass.)运行Test Cases的结果,一般分四种结果Blocked(记录bug号和原因)、Failed(记录bug号和原因)、Not Run(记录原因)、Pass。

    4、何时再修改并创建新的Test Cases
            1 测试目标一些特性的改变
            2 Test Cases的优先级发生改变
            3 代码改变
            4 发现新的Bug但用例库中没有与之相关的Test Case
            5 发现新的Bug但用例库中已经存在与之相关的Test Case

  • 如何避免遗漏bug

    2007-09-13 15:07:22Top 1 Digest 1

    bug遗漏,我想这个是很多公司很多人头痛的一个问题。众所周知,bug是不可能被完全消灭的,当然也就意味着在发布前不能被全部找出来。于是乎当项目发布后,或多或少都会出现bug遗漏的现象,即使发布初期没有发现,随着时间的流逝,一些隐藏的bug也会慢慢浮现出来。那么对于遗漏的bug,我们该怎么去做?

            古时云:亡羊补牢,为时未晚也。对于遗漏的bug,我们应该去透彻的分析它产生的原因,然后吸取教训,防止再次出现。这样遗漏bug的数量就会越来越少,趋于0。那么怎样的分析才是透彻的呢?我发表一下自己的观点。

            根据我的经验,总结下来有以下几点,首先从根源上说,需求的问题。需求是一切的根本,我们所做的一切都是在需求的基础上进行的,那么需求会不会有问题?当然有啦,否则要需求评审干嘛,每次需求评审,或多或少都能发现一些需求的问题,在还没有开始编码之前就把需求的bug找出来,这个是最理想的状态。显然这个不现实,但是能多发现一个不合理的地方,那就能减少很多风险。因此需求关要把好。当然要求测试人员在需求评审时就要找出需求的bug,这个是要求比较高的,需要对业务的熟悉以及对相似产品的认识。需求关把好了,那么就算踏出了成功的第一步。

            其次,要尽早与开发人员进行测试设计评审,统一对需求的认识(开发测试人员都可能存在对需求的认识不正确)。越早进行,越能够避免出现因为对需求的认识不同而导致出现的问题(最可怕的是因此产生的隐性bug),这样也能减少后期很多不必要的资源浪费。

            接下来,就是用例设计了,这方面体现了一个测试人员的真实地能力。考虑的面要广,包括:使用不同的测试方案,不同的测试数据的类型(要齐全),正常流与异常流等来覆盖所有的需求。

            然后就开始执行测试,要全面地执行测试用例,并且在测试过程中不断的添加遗漏的用例。在时间允许下,尽可能的执行。

            回归阶段,除了要回归前面发现的bug,还要重视回归那些bug相关的模块,这个教训是很多的,所以千万不能忽视。一个小小的小小的参数变动可能引起一个比较远的功能点的大bug,继而引发遗漏。所以这个是需要开发人员与测试人员去识别的。开发人员熟知代码,知道改动的地方会被哪些模块调用或者会引起哪些变化,因此开发人员需要通知测试人员测试关注点以及加强自测。在开发人员与测试人员无间隔的合作下,这种bug的遗漏会减少很多。

            发布前期,应该在保证所有的bug都fixed的前提下,把所有用例都回归一下,以免遗漏。

            最后终于发布了,发布好就可去FB了,^o^。不要在开心的情况下放松神经,所谓行百里,半九十,不能倒在最后的冲刺关头。细心细心再细心。只要一步步走下来,那么就可以把遗漏的bug数量减到最低。

            当然最好做自动化脚本,方便以后的回归。这就是我想说的,大家有意见可以跟着,共同进步。

  • 好的测试用例

    2007-09-11 09:24:17Top 1 Digest 1

    好的测试用例:一个发现Bug概率很大的用例就是一个好的测试用例
     
          测试用例设计应该具备的以下描述信息:
     
    Test Case ID:
          用来标记测试用例的编号,这个编号必须是唯一的
     
    测试描述:
          用来描述你将要进行的测试是怎样实施的
     
    修订历史:
          为了明确测试用例由谁创建或者修改,所以每个测试用例都应该有其修订历史
     
    功能模块:
          测试功能模块的名字
     
    测试环境:
          用来描述你的测试环境,当然包括硬件环境和软件环境
     
    测试准备:
          测试之前除了你所测试的程序之外还应该准备的东西,如打印机,网络等等
     
    测试执行:
          用来详细描述你的测试步骤
     
    期望结果:
          The descrīption of what you expect the function to do.描述该功能所要实现怎样的结果
     
    实际结果:
          通过/失败
          如果成功——纪录实际运行的过程
          如果失败——描述你观察到的现象,这将有利于发现Bug的起源
     
          一个很好的测试所应具有的特征:
          发现Bug的几率很大
          没有多余
          不是太简单也不会太复杂
          Ps.当你的期望结果有很多的时候,测试用例就会变得很复杂

  • 测试人员应该如何报bug?

    2007-08-14 16:03:05Top 1 Digest 1

     首先,确保你所发现的问题是确实是一个bug,不要出现因为测试人员操作错误或配置错误所引起的“bug”,这样会降低你在开发人员心中的可信度。在测试的时候,如果发现测试的实际结果与预期测试结果不符时,不要着急马上报bug,先想想为什么会出现错误。作为专业的测试人员,应该能够对出现的问题进行跟踪,确认了在配置、操作没有错误的前提下,通过追踪分析确认所测试的业务流程确实是存在bug,并能大概对bug的产生原因进行定位。测试人员,需要做到专业,尽量少给开发找麻烦,不要制造实际上并不存在的bug。


            确认了所发现的问题是一个bug之后,按照测试步骤再执行一次,确保bug是可重现的而不是随机的。如果bug不能重现,应该尽量找到bug重现的规律,在一些比较难重现的问题可以找开发配合一起查找原因,如果还是无法重现则需要在bug report中对出现的问题描述清楚并说明出现的随机性。


            接下来就是填写bug report了,在填写bug report的时候,最重要的是bug的标题和bug描述。在bug报告中,首先用一句话对bug进行简要精确的描述作为bug的标题,让开发或项目经理一看就知道存在什么问题,比如“XX模块在压力测试2小时后出现内存泄露”。而在bug的描述中,需要使用简明准确的语言描写出现bug的测试步骤、实际的测试结果、预期的测试结果和结论;也就是说描述导致出现bug的操作步骤是怎样,由测试步骤所做的操作引起的测试结果是什么,而预期的结果应该是怎样,并由实际结果与预期结果相对比说明问题所在。比如:“在管理网页新增用户,当新增的用户登录名名称很长(例如登录名长度为输入框允许的最大长度),按‘新增’按纽新增后系统提示已经有该用户存在,而事实上该用户并不存在,建议对超长的用户名进行处理。”


            在测试人员发现了一个已隔离的,可重现的问题后,应该对问题进行归纳。同一个问题是否出现在其他的模块或其他的流程?同一个故障是否会引起更加严重的问题?如果存在,也需要提出来让开发一并处理。


            在开发对bug进行修改之后,测试需要报着怀疑的态度认真地对问题进行验证,需要严格按照测试步骤来进行测试,检查开发是否已经正确修改了所出现的问题,以及开发对bug进行了修复之后是否会引进新的问题。不要相信开发说“已经修改好了,肯定没问题了”就不对问题进行细致的检查了,如果开发修改得不彻底,问题仍然会存在的,或者可能会由于开发在修改bug的时候忽略了另一些细节导致了新bug的出现。尽量不要在关闭bug之后,才发现这个问题还没有修改彻底;也不要出现bug关闭之后,出现了新的bug。


            测试对bug进行验证确认已经修改ok之后,关闭bug。在关闭的时候,应该对Bug最终修改结果进行简要描述,如果bug的修改引起配置或数据库或业务流程的变更,也需要在bug关闭描述中进行说明。

  • 11 Steps for Software Testing Process

    2007-08-13 09:17:34Top 1 Digest 1

    Step 1: Asses Development Plan and Status

    This first step is a prerequisite to building the VV&T Plan used to evaluate the implemented software solution. During this step, testers challenge the completeness and correctness of the development plan. Based on the extensiveness and completeness of the Project Plan the testers can estimate the amount of resources they will need to test the implemented software solution.

    Step 2: Develop the Test Plan
    Forming the plan for testing will follow the same pattern as any software planning process. The structure of all plans should be the same, but the content will vary based on the degree of risk the testers perceive as associated with the software being developed.

    Step 3: Test Software Requirements
    Incomplete, inaccurate, or inconsistent requirements lead to most software failures. The inability to get requirement right during the requirements gathering phase can also increase the cost of implementation significantly. Testers, through verification, must determine that the requirements are accurate, complete, and they do not conflict with another.

    Step 4: Test Software Design
    This step tests both external and internal design primarily through verification techniques. The testers are concerned that the design will achieve the objectives of the requirements, as well as the design being effective and efficient on the designated hardware.

    Step 5: Program (Build) Phase Testing
    The method chosen to build the software from the internal design document will determine the type and extensiveness of the testers needed. As the construction becomes more automated, less testing will be required during this phase. However, if software is constructed using the waterfall process, it is subject to error and should be verified. Experience has shown that it is significantly cheaper to identify defects during the construction phase, than through dynamic testing during the test execution step.

    Step 6: Execute and Record Result
    This involves the testing of code in a dynamic state. The approach, methods, and tools specified in the test plan will be used to validate that the executable code in fact meets the stated software requirements, and the structural specifications of the design.

    Step 7: Acceptance Test
    Acceptance testing enables users to evaluate the applicability and usability of the software in performing their day-to-day job functions. This tests what the user believes the software should perform, as opposed to what the documented requirements state the software should perform.

    Step 8: Report Test Results
    Test reporting is a continuous process. It may be both oral and written. It is important that defects and concerns be reported to the appropriate parties as early as possible, so that corrections can be made at the lowest possible cost.

    Step 9: The Software Installation
    Once the test team has confirmed that the software is ready for production use, the ability to execute that software in a production environment should be tested. This tests the interface to operating software, related software, and operating procedures.

    Step 10: Test Software Changes
    While this is shown as Step 10, in the context of performing maintenance after the software is implemented, the concept is also applicable to changes throughout the implementation process. Whenever requirements changes, the test plan must change, and the impact of that change on software systems must be tested and evaluate.

    Step 11: Evaluate Test Effectiveness
    Testing improvement can best be achieved by evaluating the effectiveness of testing at the end of each software test assignment. While this assessment is primarily performed by the testers, it should involve the developers, users of the software, and quality assurance professionals if the function exists in the IT organization.
  • 测试用例基本概念

    2007-08-02 15:04:47Top 1 Digest 1

    一、测试用例的定义
        测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。
       
    二、测试用例的特征
      1.最有可能抓住错误的;
      2.不是重复的、多余的;
      3.一组相似测试用例中最有效的;
      4.既不是太简单,也不是太复杂。
     
    三、测试用例组成元素
      1.用例ID;
      2.用例名称;
      3.测试目的;
      4.测试级别;
      5.参考信息;
      6.测试环境;
      7.前提条件;
      8.测试步骤;
      9.预期结果;
      10.设计人员。
     
    四、测试用例设计原则
      1.测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。
      2.测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
      3.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。

  • LoadRunner工具结构和原理

    2007-08-01 18:40:30Top 1 Digest 1

    LoadRunner是Mercury Interactive的一款性能测试工具,也是目前应用最为广泛的性能测试工具之一。该工具通过模拟上千万用户实施并发负载,实时性能监控的系统行为和性能方式来确认和查找问题。
    一、LoadRunner工具组成
    1、虚拟用户脚本生成器:捕获最终用户业务流程和创建自动性能测试脚本,即我们在以后说的产生测试脚本;
    2、压力产生器:通过运行虚拟用户产生实际的负载;
    3、用户代理:协调不同负载机上虚拟用户,产生步调一致的虚拟用户;
    4、压力调度:根据用户对场景的设置,设置不同脚本的虚拟用户数量;
    5、监视系统:监控主要的性能计数器;
    6、压力结果分析工具:本身不能代替分析人员,但是可以辅助测试结果的分析。


    二、LoadRunner工具原理

      代理(Proxy)是客户端和服务器端之间的中介人,LoadRunner就是通过代理方式截获客户端和服务器之间交互的数据流。

     1)虚拟用户脚本生成器通过代理方式接收客户端发送的数据包,记录并将其转发给服务器端;接收到从服务器端返回的数据流,记录并返回给客户端。

      这样服务器端和客户端都以为在一个真实运行环境中,虚拟脚本生成器能通过这种方式截获数据流;虚拟用户脚本生成器在截获数据流后对其进行了协议层上的处理,最终用脚本函数将数据流交互过程体现为我们容易看懂的脚本语句。

    2)压力生成器则是根据脚本内容,产生实际的负载,扮演产生负载的角色。

    3)用户代理是运行在负载机上的进程,该进程与产生负载压力的进程或是线程协作,接受调度系统的命令,调度产生负载压力的进程或线程。

    4)压力调度是根据用户的场景要求,设置各种不同脚本的虚拟用户数量,设置同步点等。

    5)监控系统则可以对数据库、应用服务器、服务器的主要性能计数器进行监控。

    6)压力结果分析工具是辅助测试结果分析。

  • 软件性能测试中常注意的事项

    2007-08-01 18:34:42Top 1 Digest 1

    1.引言

      作为评价产品性能的重要手段,性能测试软件测试工作中占的比重一直很大,要最终提供一份准确,权威的测试报告,测试人员的努力工作自然不可或缺,但更重要的是测试人员清晰的工作思路,简洁的测试流程和良好的测试方法。

    2.目前性能测试存在的问题

      总结以往进行的性能测试,虽然测试人员自始至终对测试工作都做到了认真负责,但测试报告出炉后,大家总觉得美中不足,对测试结果都心存疑虑,尤其在那些时间跨度较长、针对不同的测试对象的性能对比测试中,或多或少都存在以下几个方面的问题:
        1.
    测试准备不充分,测试目标不明确,测试计划不详细;
        2.
    缺乏测试以及针对测试对象的技术储备;
        3.
    测试环境的稳定性及前后一致性不足;
        4.
    测试数据精确性和代表性不足;
        5.
    测试描述不精练;
     下面,我们就剖析以上问题的同时,探讨一下如何解决这些问题。

    3. 性能测试准备

      这是一个经常被测试人员忽略的环节,在接到测压任务后,基于种种其它因素的考虑,测试人员往往急于进度,立即投入到具体的测试工作去了,测试、记录、分析,忙的不亦乐乎,工作进行了一半才发现,或是硬件配置不符合要求,或是网络环境不理想,甚至软件版本不对,一时弄得骑虎难下,这都是没有做好测试准备惹的祸。
      那么我们应该如何做好性能测试的准备工作呢?
      做软件项目有需求调查、需要分析,我们做测试也一样。在拿到测试任务后,我们首要的任务就是分析测试任务,在开始测试前,我们至少要弄清以下几个问题:
        a)
    要测试什么或测试的对象是谁?
        b)
    要测试什么问题或我们想要弄清楚或是论证的问题?
        c)
    哪些因素会影响测试结果?
        d)
    需要怎样的测试环境?
        e)
    应该怎样测试?
      只有在认真调查测试需求和仔细分析测试任务后,才有可能弄清以上一系例的问题,只有对测试任务非常清楚,测试目标极其明确的前提下,我们才可能制定出切实可行的测试计划。明确测试目标,详尽测试计划在对测试需求充分了解的基础上,制定尽可能详细的测试计划,对测试的实施是大有裨益的。测试计划的制定,大多专业的测试书籍多有详述,故本文不再鏊述。

    3.1 测试技术准备

      在目前的大环境下,要求测试人员在短时间撑握所有的软、硬件知识是不太现实的,但平时测试人员应抓紧对测试工具测试理论的研究,在测试计划中,应给研究测试对象和测试工具分配充足的学习时间,只有在充分撑握测试工具,完全了解测试对象的前提下,我们才能够实施测试。建力在错误的认识上的测试,既使你再努力,结果也是背道而驰,也很难证明问题,更不用说用这样的测试报告去说服用户。

    3.2 配置测试环境

      只有在充分认识测试测试对象的基础上,我们才知道每一种测试对象,需要什么样的配置,才有可能配置一种相对公平、合理的测试环境(这在性能对比测压中尤其重要)。考虑到其它因素,如网络锁、网速、显示分辩率,数据库权限、容量等对测试结果的影响。如条件允许,我们最好能配置几组不同的测试环境。

    3.3 测试数据的获取和处理

      在所有的测试中,测试数据的收集工作都是较为困难的,GIS软件更是如此,每一种软件都有它的文件格式,有的软件还有几种格式。在这种情况下,我们只能把第三方格式的数据转换成每一种被测试软件自已的格式。同时,还应对数据作一定的处理,如处理数据冗余,处理显示风格等。如在测试时会更新数据,操作前一定要备份数据。其外,还应评估数据格式和数据量对测试的影响,如有必要,应准备多组数据。最后,一定要检查测试数据的有效性,避免损坏数据对测试结果的影响。

    4. 如何开展性能测试

      测试前期的准备工作纷繁复杂,做好测试准备工作,已是完成了测试工作的一大半,但要产生一份具有说服力的测试报告,还应正确把握测试的强度,保持测试的一致性,提高测试的精度。

      判断软件的好坏,要看软件解决实际应用的能力,只有在一定的测试强度下,才能测试出各种软件资源的消耗率,软件运行的速度,软件的稳定性。通过对比在不同的测试强度下,不同软件每一个功能模块解决实际问题的能力和软件运行的效率,我们才可能判断出不同软件的每一个模块的强弱,甚至于整个软件的优劣。

      性能测试开始后,所有参数的输入都应遵循统一的标准,无论是哪一个环节,哪怕是一点点偏差,都应立即纠正,觉不能心存侥幸。要特别注意外部环境对测试结果的影响,如果在整个测试过程中,外部境不一致,如网速、机器内存使用率不一样,就有可能导致测试结果与实际情况有出入。

    5. 如何总结性能测试

      对测试的终结,实际就是对测试数据的分析和处理。我们测试工作做的再好,如最终到用户手中的是一堆杂乱无章的数据,那也是美中不足。

      首先,我们最好从所有的测试数据中,筛选出具有代表意义的数据,做出统计图,然后和开发人员一起,认真分析数据,找出软件存在的问题,得出测试结论。大多数用户,真正需要的就是科学、客观的测试结论。

    6. 结论

      各种软件性能测试,范围大小不同,强度高底有别,但只要本着认真、客观,科学的工作态度,遵循本文论述的方法,做好测试工作是不难的。本篇文章主要谈的是软件性能测试方面的问题,相信对其它方面的测试也有一定的借鉴作用。 

  • 性能测试类型之我见

    2007-08-01 18:27:57Top 1 Digest 1

    在拜读了段念的《软件性能测试过程详解与案例剖析》一书后,对各种性能测试类型有了豁然开朗的感觉。
    网上关于性能测试类型方面一直都讨论不休并有多种见解,以下是根据书上描述和个人经验对测试侧重点做了进一步探索,不对之处请指正。

        我们所说的性能测试是一种广义上的说法,包括了以下各种不同的性能测试类型,每种测试类型都带着明确的测试目的。

    性能测试(Performance Testing
       
    原文摘要:性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生成性能要求。即在特定的运行条件下验证系统的能力状况。
       
    个人理解:主要强调在固定的软硬件环境、确定的测试业务场景下,其主要意义是获得系统的性能指标。

    负载测试(Load Testing
       
    原文摘要:在给定的测试环境下,通过在被测系统上不断增加压力,直到性能指标超过预定指标或某种资源使用已经达到饱和状态,目的是了解系统性能容量和处理能力极限。负载测试的主要用途是发现系统性能的拐点,寻找系统能够支持的最大用户、业务等处理能力的约束。
       
    个人理解:也可以理解为扩展性测试(Scalability Testing),即在固定测试环境,在其它测试角度(负载方面)不变的情况下,变化一个测试角度并持续增加压力,查看系统的性能曲线和处理极限,以及是否有性能瓶颈存在(拐点)。主要意义是从多个不同的测试角度去探测分析系统的性能变化情况,配合性能调优。测试角度可以是并发用户数、业务量、数据量等不同方面的负载。

    压力测试(Stress Testing
       
    原文摘要:测试系统在一定饱和状态下系统能够处理的会话能力,以及是否出现错误,一般用于稳定性测试。
    个人理解:可以理解为资源的极限测试。测试关注在资源处于饱和或超负荷的情况下,系统能否正常运行,是一种在极端压力下的稳定性测试。其主要意义是通过测试调优保证系统即使在极端的压力情况下也不会出错甚至系统崩溃。
       
    网友补充:压力测试的目的是调查系统在其资源超负荷的情况下的表现,尤其是对系统的处理时间有什么影响。这类测试在一种需要反常数量、频率或资源的方式下执行系统。目标是通过极限测试方法,发现系统在极限或恶劣环境中自我保护能力。主要验证系统的可靠性。


    配置测试(Configuration Testing
       
    原文摘要:通过对被测系统的软硬件环境的调整,了解各种不同环境对性能影响的程度,从而找到系统各项资源的最有分配原则。
       
    个人理解:主要用于性能调优,在经过测试获得了基准测试数据后,进行环境调整(包括硬件配置、网络、操作系统、应用服务器、数据库等),再将测试结果与基准数据进行对比,判断调整是否达到最佳状态。

    并发测试(Concurrency Testing
       
    原文摘要:模拟并发访问,测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题。
       
    个人理解:测试目的并非为了获得性能指标,而是为了发现并发引起的问题。

    可靠性测试(Reliability Testing
       
    原文摘要:通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。
       
    个人理解:需要和压力测试区分开,两者的测试环境和测试目的不一样。压力测试强调在资源极限情况下系统是否出错,可靠性测试强调在   一定的业务压力下长时间(如24×7)运行系统,关注系统的运行情况(如资源使用率是否逐渐增加、响应是否是否越来越慢),是否有不稳定征兆。

  • 性能测试实施与管理

    2007-08-01 17:44:51Top 1 Digest 1

    一、性能测试流程

    • 测试需求分析
    • 测试计划指定与评审
    • 测试用例设计与开发
    • 测试执行与监控
    • 分析测试结果---根据前面的测试数据来分析测试结果,为优化和调整系统提供依据。测试分析的对象是应用程序、Web服务器、数据库服务器、操作系统、硬件资源等。
    • 编写性能测试报告---包括测试过程记录、测试分析结果、系统调整建议等。
    • 测试经验总结。  

    二、性能测试需求分析

    • 需求信息的来源--客户代表、项目经理、产品经理、销售经理、需求分析员。
    • 确定性能测试策略和测试目标
    • 确定性能测试范围--通常把那些用户关注度或者性能风险较高的测试需求划分到测试范围内。
    • 目标系统的业务分析--确定系统的核心模块;确定模块件的耦合性关系;分析系统压力点。
    • 用户及场景分析

    三、性能测试整理规划

    • 测试环境规划:网络环境设计、操作系统环境规划、数据库环境规划、Web服务器环境规划、硬件资源环境规划。
    • 测试环境维护方面的规划:一般在性能测试规划阶段明确,在性能测试计划中落实。
    • 测试工具规划:选择工具主要从三个方面来考虑---了解测试工具的特性、了解工具的主要功能、了解工具的价格。
    • 人力资源规划

    四、性能测试计划指定

    • 明确性能测试策略和测试范围
    • 确定性能测试目标、方法、环境、工具
    • 确定性能测试团队成员以及职责
    • 确定时间进度安排   
    • 确定性能测试执行标准
    • 测试技能培训
    • 了解性能测试中的风险

    五、性能测试用例设计:三类用户场景

    • 一天内不同时间段的使用场景
    • 系统运行不同时期的场景
    • 不同业务模式下的场景

    六、性能测试各类测试用例的细节

    • 确定用户使用系统情况的方法:用户现场调查和分析系统日志
    • 并发用户数量设计:(极限法)--适用于系统已经投产或者目标用户群体不确定的门户网站,可以通过分析日志来进行测试,也可以使用系统已经注册的用户数量作为系统的用户数量,然后按照经验公式来估算最大并发用户数量。(用户趋势分析)--这种方法多用于系统用户数目逐渐增加的情况。(经验评估法)--这种方法适用于系统的使用用户数目相对稳定且比较明确的系统。
    • 系统不同时间段场景的设计。
    • 业务模式的设计。
    • 大数据量测试用例的设计
    • 一些特定测试用例的设计

    七、性能测试实施

       主要包括搭建与维护测试环境、执行测试用例、监控测试执行场景、保存与分析测试结果等,

       性能测试与功能测试执行的区别:功能测试用例一般容易执行,单个用例耗时较短,同时绝大多数用例都要通过测试;而性能测试用例执行时则具有不确定性,有些用例执行时间可能很长(例如疲劳强度测试),有些用例则需要不断地探讨进行测试(例如测试系统的最大并发用户数),而且可能会有部分性能测试用例不能通过。

       性能测试实施分为开发与用户现场两个阶段来进行探讨。

    八、进度与变更控制

        (1)性能测试引起进度变化的原因

    • 开发团队解决性能缺陷的速度
    • 测试过程需要的软硬件资源
    • 性能测试中采用的一些新技术
    • 测试工具的执行能力
    • 测试范围的变化:是不可避免的,可以把它当成一种风险来应付,同时要认真分析是不是真正的变更。

        (2)如何应对性能测试中的变更:按照合理的流程规划性能测试;保证测试方案得到项目干系人的认可;学会接受合理的变更;经常召开理会处理遇到的变更。

        (3)如何控制性能测试进度:正确协调质量、进度、成本的关系;建立规范的软件开发与测试体系,逐步使软件开发与测试工作进入良性循环状态;保证项目的里程碑

        性能测试进度控制是很复杂的一项工作,尤其当性能测试工作作为系统测试的一部分来开展,更加大了控制的难度。要想控制好性能测试,首先要规划好性能测试,并且按照合理的软件管理规范来开展性能测试工作;其次还要在测试实施过程中,根据项目具体特点进行灵活的处理。

    九、测试分析与经验总结

       (1)性能测试规划总结

    • 测试环境规划是否合理
    • 人力资源安排是否合理
    • 测试工具规划是否合理

       (2)测试用例设计总结

    • 测试用例可用性总结
    • 用例执行效果分析
    • 用例执行时间分析

       (3)测试工具与技术总结

    • 测试过程的一些技术方面的总结
    • 测试工具的使用经验总结

       (4)瓶颈分析方法总结

    • 应用系统瓶颈分析经验
    • 数据库瓶颈分析经验
    • Web服务器分析
  • 面向对象软件的测试与质量

    2007-07-25 11:31:10Top 1 Digest 1

    在过去的几年里,面向对象软件的测试给人们留下的总的印象是:发展奇特、变化迅猛。软件测试一直伴随着软件生产的,从软件出世、发展、形成商品的几十年中,软件测试就从未与软件开发分开过。早期的软件测试是无章可循的,每个厂商都有自己的做法,经过几十年的努力,软件测试发展成为学科,形成了一系列理论和方法。单元测试、组合测试、系统测试、白盒测试、黑盒测试等等,都是人们耳熟能详的概念和名词。

      虽然软件测试已有其理论、准则和方法,但如何理解并贯彻执行也有相当难度,而且在实现测试工作中由于经费、时间的限定,测试总是难以穷尽的。1992年以前,研究人员、方法学理论家和程序设计大师提出过一些有关面向对象测试的策略,有关人士也进行了先驱性的探索实践,但结果一般都不甚理想。看起来把传统的测试方法一古脑地加到面向对象程序上,押宝或企盼好的测试结果的做法是行不通的。

      有一些面向对象的编执狂宣称对于面向对象程序而言,测试是毫无必要也是与面向对象风范相悖的,也有的甚至说:“我们重申:面向对象软件不用测试”。

      但是,事实上,软件家族憎恶虚无,在过去的几年中,面向对象测试出版物纷至沓来,其增长态势也是颇具戏剧性。但近两年来,增长率有所下降,可能是显而易见的、容易解决的问题都翻腾过了,能够解决的问题已解决并习诸媒体了的缘故吧。

      面向对象的软件测试的起起伏伏也影响着人们对测试面向对象软件的态度。几年前讨论测试时,有关人士总是被告诫说要进行“彻底”测试,但是何谓“彻底”测试?如何才能做到彻底测试?实际上并没有可操作的定义做指导,也没有多少成功先例可援引。时至今日,已有许多技术方法问世,也有许多测试过程中可遵循的策略出台,还有许多有用的工具可选。近期出版的有关面向对象开发的书刊也必辟章节专论测试,尽管有些是很粗略的。可比的是,早几年的出版物中要不就根本不提测试,即使没有完全去除,往往也只是用一两句话轻描淡写地提一提在面向对象软件中测试是极容易,面向对象大大减轻了软件测试的工作量等。由此可见人们对面向对象软件测试的看法及其在软件开发中的地位。

      这种改变是令人欢欣鼓舞的,因为“彻底”地测试面向对象系统是非同凡响的挑战,其中至少有三大难点:

      第一,对象的典型行为特征就是顺序依赖性,即对象的响应活动是与它所接受到的消息序列密切相关的。因此我们能够用状态机的概念来说明、实现和测试对象。将对象类方法孤立起来加以测试,就如同我们处理传统的例程测试那样,实际上是不充分也无效的。大多数系统化的面向对象测试方法都是基于状态的,这种基于状态的测试又有两种流派:一是有顺序的基于状态的测试,它立足于查找消息序列中暴露出错误的消息。状态定义的是正确的行为和不正确的对象行为,这种方法实际上是基于规格说明的,因为人们事先就用状态定义描述了正确的和错误的操作。二是域方法的基于状态的测试,它根据被测类的实例变量的假定值来安排各个状态,这些状态和消息之间的相互作用可以用来产生测试用例。

      有顺序的基于状态的测试方法的优势在于它有40年的发展历史,这种方法40年来一直被人们所研究并应用在电子电路、硬件部件和无线通信协议的测试中,这些领域内的成功经验和知识都可以推广到对面向对象软件的测试中来,这种方法的缺点在于基于状态的测试是极困难的,状态空间极大,意味着不得不用自动化测试。此外,在实际测试中有必要添加内置功能,专门设置和报告对象系统中的状态。

      第二,面向对象系统从本质上讲不象传统软件那样能测,虽然面向对象程序设计语言已经去除了容易出错的内容,如弱封装性、全局数据的危险性,类型的错误匹配等,但也还是带来了不少新问题,如局域化和分块化造成程序的可理解性的下降。

      在用传统程序设计语言编写的软件中,变量的静态集合对应的就是程序的状态空间。如果程序的结构设计精良,那么其运行时的行为活动也能够跟踪捕捉到。相反,面向对象程序则不然:用面向对象程序设计语言的继承性和多态性常常使源代码或规格说明中的路径和状态变得枝枝蔓蔓、难以弄清。那些所谓的封装性能够减少程序的复杂性的老生常谈,实际上正在灰飞烟灭。面向对象软件测试中的测试用例的设置实际上是极为困难的。对象总是由另一些对象组成,所以为一个对象设定测试用例往往会演变成为该对象嵌套的所有对象设置测试用例。对于面向对象软件而言,在设计开发软件的同时就考虑和设计该软件的可测试性并内置测试例程,必将有助于缓解面向对象软件将面临的测试的紧张局面。

      第三个难点是实际存在的问题,重复的和增量式的开发与赶不上趟的管理常常导致类库缺乏正确的功能划分(从原则上讲类库中的每个类在功能上是正交化的),不保留源代码的文档。这些都是老问题了,而在面向对象软件中表现的更加突出,其后果是软件失误的可能性增大、可测试性降低、可重用性降低,同时伴随出现的问题是库规模越来越大,而内容越来越陈旧。
  • 软件测试的常识

    2007-07-25 10:14:36Top 1 Digest 1

    软件开发和使用的历史已经留给了我们很多由于软件缺陷而导致的巨大财力、物力损失的经验教训。这些经验教训迫使我们这些测试工程师们必须采取强有力的检测措施来检测未发现的隐藏的软件缺陷。

    生产软件的最终目的是为了满足客户需求,我们以客户需求作为评判软件质量的标准,认为软件缺陷( Software Bug )的具体含义包括下面几个因素:

    •  软件未达到客户需求的功能和性能;

    •  软件超出客户需求的范围;

    •  软件出现客户需求不能容忍的错误;

    •  软件的使用未能符合客户的习惯和工作环境。

    考虑到设计等方面的因素,我们还可以认为软件缺陷还可以包括软件设计不符合规范,未能在特定的条件(资金、范围等)达到最佳等。可惜的是,我们中的很多人更倾向于把软件缺陷看成运行时出现问题上来,认为软件测试仅限于程序提交之后。

    在目前的国内环境下,我们几乎看不到完整准确的客户需求说明书,加以客户的需求时时在变,追求完美的测试变得不太可能。因此作为一个优异的测试人员,追求软件质量的完美固然是我们的宗旨,但是明确软件测试现实与理想的差距,在软件测试中学会取舍和让步,对软件测试是有百益而无一弊的。

    下面是一些软件测试的常识,对这些常识的理解和运用将有助于我们在进行软件测试时能够更好的把握软件测试的尺度。

    •  测试是不完全的(测试不完全)

    很显然,由于软件需求的不完整性、软件逻辑路径的组合性、输入数据的大量性及结果多样性等因素,哪怕是一个极其简单的程序,要想穷尽所有逻辑路径,所有输入数据和验证所有结果是非常困难的一件事情。我们举一个简单的例子,比如说求两个整数的最大公约数。其输入信息为两个正整数。但是如果我们将整个正整数域的数字进行一番测试的话,从其数目的无限性我们便可证明是这样的测试在实际生活中是行不通的,即便某一天我们能够穷尽该程序,只怕我们乃至我们的子孙都早已作古了。为此作为软件测试,我们一般采用等价类和边界值分析等措施来进行实际的软件测试,寻找最小用例集合成为我们精简测试复杂性的一条必经之道。

    •  测试具有免疫性(软件缺陷免疫性)

    软件缺陷与病毒一样具有可怕的 “ 免疫性 ” ,测试人员对其采用的测试越多,其免疫能力就越强,寻找更多软件缺陷就更加困难。由数学上的概率论我们可以推出这一结论。假设一个 50000 行的程序中有 500 个软件缺陷并且这些软件错误分布时均匀的,则每 100 行可以找到一个软件缺陷。我们假设测试人员用某种方法花在查找软件缺陷的精力为 X 小时 /100 行。照此推算,软件存在 500 个缺陷时,我们查找一个软件缺陷需要 X 小时,当软件只存在 5 个错误时,我们每查找一个软件缺陷需要 100X 小时。实践证明,实际的测试过程比上面的假设更为苛刻,为此我们必须更换不同的测试方式和测试数据。该例子还说明了在软件测试中采用单一的方法不能高效和完全的针对所有软件缺陷,因此软件测试应该尽可能的多采用多种途径进行测试。

    •  测试是 “ 泛型概念 ” (全程测试)

    我一直反对软件测试仅存在于程序完成之后。如果单纯的只将程序设计阶段后的阶段称之为软件测试的话,需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。需求缺陷、设计缺陷也是软件缺陷,记住 “ 软件缺陷具有生育能力 ” 。软件测试应该跨越整个软件开发流程。需求验证(自检)和设计验证(自检)也可以算作软件测试(建议称为:需求测试和设计测试)的一种。软件测试应该是一个泛型概念,涵盖整个软件生命周期,这样才能确保周期的每个阶段禁得起考验。同时测试本身也需要有第三者进行评估(信息系统审计和软件工程监理),即测试本身也应当被测试,从而确保测试自身的可靠性和高效性。否则自身不正,难以服人。

    另外还需指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷的手段,但决不是一个根本手段。

    •  80-20 原则

    80% 的软件缺陷常常生存在软件 20% 的空间里。这个原则告诉我们,如果你想使软件测试有效地话,记住常常光临其高危多发 “ 地段 ” 。在那里发现软件缺陷的可能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。

    80-20 原则的另外一种情况是,我们在系统分析、系统设计、系统实现阶段的复审,测试工作中能够发现和避免 80% 的软件缺陷,此后的系统测试能够帮助我们找出剩余缺陷中的 80% ,最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、长时间使用后才会曝露出来。因为软件测试只能够保证尽可能多地发现软件缺陷,却无法保证能够发现所有的软件缺陷。

    80-20 原则还能反映到软件测试的自动化方面上来,实践证明 80% 的软件缺陷可以借助人工测试而发现, 20% 的软件缺陷可以借助自动化测试能够得以发现。由于这二者间具有交叉的部分,因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修正。

    •  为效益而测试

    为什么我们要实施软件测试,是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来,在软件测试中我们应该尽量地保持软件测试简单性,切勿将软件测试过度复杂化,拿物理学家爱因斯坦的话说就是: Keep it simple but not too simple 。

    •  缺陷的必然性

    软件测试中,由于错误的关联性,并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的,一个矛盾的消失必然会引发另外一个矛盾的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中,我们常常还会受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围,选择一个折中的方案或是从非软件的因素(比如提升硬件性能)考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的事实。

    •  软件测试必须有预期结果

    没有预期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。这正如没有标准无法进行度量一样。如果我们事先不知道或是无法肯定预期的结果,我们必然无法了解测试正确性。这很容易然人感觉如盲人摸象一般,不少测试人员常常凭借自身的感觉去评判软件缺陷的发生,其结果往往是把似是而非的东西作为正确的结果来判断,因此常常出现误测的现象。

    •  软件测试的意义 - 事后分析

    软件测试的目的单单是发现缺陷这么简单吗?如果是 “ 是 ” 的话,我敢保证,类似的软件缺陷在下一次新项目的软件测试中还会发生。古语说得好, “ 不知道历史的人必然会重蹈覆辙 ” 。没有对软件测试结果进行认真的分析,我们就无法了解缺陷发生的原因和应对措施,结果是我们不得不耗费的大量的人力和物力来再次查找软件缺陷。很可惜,目前大多测试团队都没有意识到这一点,测试报告中缺乏测试结果分析这一环节。

    结论:

    软件测试是一个需要 “ 自觉 ” 的过程,作为一个测试人员,遇事沉着,把持尺度,从根本上应对软件测试有着正确的认识,希望本文对读者对软件测试的认识有所帮助。
     
    注:名词解释
    Acceptance testing(验收测试),系统开发生命周期方法论的一个阶段,这时相关的用户和/或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制。

    Ad hoc testing (随机测试),没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

    Alpha testing (α测试),是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。

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

    Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

    Black box testing(黑盒测试),指测试人员不关心程序具体如何实现的一种测试方法。根据软件的规格对软件进行各种输入和观察软件的各种输出结果来发现软件的缺陷的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。

    Bug (错误),有时称作defect(缺陷)或error(错误),软件程序中存在的编程错误,可能会带来不必要的副作用,软件的功能和特性与设计规格说明书或用户需求不一致的方面。软件缺陷表现特征为:软件未达到产品说明书标明的功能;软件出现产品说明书指明不会出现的错误;软件功能超出产品说明书指明的范围;虽然产品说明书未指出但是软件应达到的目标;软件测试人员或用户认为软件难以理解,不易使用,运行速度缓慢等问题。

    Bug report(错误报告),也称为“Bug record(错误记录)”,记录发现的软件错误信息的文档,通常包括错误描述、复现步骤、抓取的错误图像和注释等。

    Bug tracking system(错误跟踪系统,BTS),也称为“Defect tracking system,DTS”,管理软件测试缺陷的专用数据库系统,可以高效率地完成软件缺陷的报告、验证、修改、查询、统计、存储等任务。尤其适用于大型多语言软件的测试管理。

    Build(工作版本),软件开发过程中用于内部测试的功能和性能等不完善的软件版本。工作版本既可以是系统的可操作版本,也可以是展示要在最终产品中提供的部分功能的部分系统。

    Compatibility Testing(兼容性测试),也称“Configuration testing(配置测试)”,测试软件是否和系统的其它与之交互的元素之间兼容,如:浏览器、操作系统、硬件等。验证测试对象在不同的软件和硬件配置中的运行情况。

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

    Crash(崩溃),计算机系统或组件突然并完全的丧失功能,例如软件或系统突然退出或没有任何反应(死机)。

    Debug(调试),开发人员确定引起错误的根本原因和确定可能的修复措施的过程。一般发生在子系统或单元模块编码完成时,或者根据测试错误报告指出错误以后,开发人员需要执行调试过程来解决已存在的错误。

    Deployment(部署),也称为shipment(发布),对内部IT系统而言,指它的第一个版本通过彻底的测试、形成产品、交付给付款客户的阶段。

    Dynamic testing(动态测试),通过执行软件的手段来测试软件。

    Exception(异常/例外),一个引起正常程序执行挂起的事件。

    Functional testing (功能测试),也称为behavīoral testing(行为测试),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。

    Garbage characters(乱码字符),程序界面中显示的无意义的字符,例如,程序对双字节字符集的字符不支持时,这些字符不能正确显示。

    GB 18030 testing(GB 18030测试),软件支持GB 18030字符集标准能力的测试,包括GB 18030字符的输入、输出、显示、存储的支持程度。

    Installing testing(安装测试),确保该软件在正常情况和异常情况的不同条件下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。

    Integration testing(集成测试),被测试系统的所有组件都集成在一起,找出被测试系统组件之间关系和接口中的错误。该测试一般在单元测试之后进行。

    International testing(国际化测试),国际化测试的目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域中都能正常运行。国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。国际化测试数据必须包含东亚语言、德语、复杂脚本字符和英语(可选)的混合字符。

    Localizability testing(本地化能力测试),本地化能力是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。为了降低本地化能力测试的成本,提高测试效率,本地化能力侧是通常在软件的伪本地化版本上进行。本地化能力测试中发现的典型错误包括:字符的硬编码(即软件中需要本地化的字符写在了代码内部),对需要本地化的字符长度设置了国定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。

    Load testing(负载测试),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

    Localization testing(本地化测试),本地化测试的对象是软件的本地化版本。本地化测试的目的是测试特定目标区域设置的软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。从测试方法上可以分为基本功能测试,安装/卸载测试,当地区域的软硬件兼容性测试。测试的内容主要包括软件本地化后的界面布局和软件翻译的语言质量,包含软件、文档和联机帮助等部分。

    Performance testing(性能测试),评价一个产品或组件与性能需求是否符合的测试。包括负载测试、强度测试、数据库容量测试、基准测试等类型。

    Pilot testing(引导测试),软件开发中,验证系统在真实硬件和客户基础上处理典型操作的能力。在软件外包测试中,引导测试通常是客户检查软件测试公司测试能力的一种形式,只有通过了客户特定的引导测试,软件测试公司才能接受客户真实软件项目的软件测试。

    Portability testing(可移植性测试),测试瞄准于证明软件可以被移植到指定的硬件或软件平台上。
    Priority(优先权),从商业角度出发是指错误的重要性,尤其是从客户和用户的角度出发,是指错误对于系统的可行性和可接受性的影响。与“Severity(严重性)”相对照。

    Quality assurance(质量保证QA),采取的所有活动以保证一个开发组织交付的产品满足性能需求和已确立的标准和过程。

    Regression testing(回归测试),在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,对软件的任何新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再现。

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

    Sanity testing(健全测试),软件主要功能成分的简单测试以保证它是否能进行基本的测试。参考“Smoke testing(冒烟测试)”。

    Screen shot(抓屏、截图),软件测试中,将软件界面中的错误(窗口、菜单、对话框等)的全部或一部分,使用专用工具存储成图像文件,以便于后续处理。

    Severity(严重性),错误对被测系统的影响程度,在终端用户条件下发生的可能性,软件错误妨碍系统使用的程度。与“Priority(优先权)”相对照。

    Smoke testing(冒烟测试),冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。参考“Sanity testing(健全测试)”。

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

    Static testing(静态测试),不通过执行来测试一个系统。如代码检查,文档检查和评审等。

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

    TBD(To be determined,待定),在测试文档中标是一项进行中的尚未最终确定的工作。

    Test(测试),执行软件以验证其满足指定的需求并检测错误的过程。检测已有条件之间的不同,并评价软件项的特性软件项的分析过程。软件工程过程的一个活动,它将软件在预定的条件下运行以判断软件是否符合预期结果。

    Test case(测试用例),为特定目标而开发的一组测试输入、执行条件和预期结果,其目标可以是测试某个程序路径或核实是否满足某个特定的需求。

    Testing coverage(测试覆盖),指测试系统覆盖被测试系统的程度,一项给定测试或一组测试对某个给定系统或构件的所有指定测试用例进行处理所达到的程度。

    Testing environment(测试环境),进行测试的环境,包括测试平台、测试基础设施、测试实验室和其他设施。

    Testing item(测试项),作为测试对象的工作版本。

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

    Testing procedure(测试过程),指设置、执行给定测试用例并对测试结果进行评估的一系列详细步骤。

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

    Testing suite(测试包),一组测试用里的执行框架;一种组织测试用例的方法。在测试包里,测试用例可以组合起来创造出独特的测试条件。

    Unit testing(单元测试),指一段代码的基本测试,其实际大小是未定的,通常是一个函数或子程序,一般由开发者执行。

    User interface(用户界面,UI),广义是指使用户可以和计算机进行交互的硬件和/或软件。狭义是指软件中的可见外观及其底层与用户交互的部分(菜单、对话框、窗口和其它控件)。

    User interface testing (用户界面测试),指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。UI 测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。

    White box testing(白盒测试),根据软件内部的工作原理分析来进行测试,基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。
  • 质量管理

    2007-07-23 14:31:26Top 1 Digest 1

    1角色和职责

    1.1       质量保证人员(SQA

    ²      辅助过程裁减,细化、制定项目规范;

    ²      制定《质量保证计划》;

    ²      产品检查;

    ²      过程审计;

    ²      跟踪问题处理

    ²      度量和报告;

    ²      项目经验积累;

    ²      学习、研究和推广。

    1.2       项目主管(SPM

    ²      SQA工作的顺利实施提供保障;

    ²      协调SQA与项目之间产生分歧的问题。

    1.3       项目经理(PM

    ²      批准《质量保证计划》;

    ²      SQA工作提供支持。

    1.4       开发人员(DEV

    ²      参与评审《质量保证计划》;

    ²      按照《质量保证计划》执行活动;

    ²      协助SQA完成质量管理工作。

    2SQA周期性工作

    2.1       产品评价

    SQA可以用过审计、独立测试等手段评价产品,也可以通过监督评审、测试等过程来保证产品质量,也可以从格式和规范(比如代码规范、设计规范、UML图、DFD图、ER图等)上实施检查,并尽可能地检查中间产品之间的一致性。

    检查内容:工作产品和最终产品。

    2.2       过程评价

    主要是检查项目是否按规定的过程和计划执行活动。检查规则包括过程执行的符合性和有效性两个方面。

    检查内容:包括工程和管理两类过程(有些划分为工程、管理、支持等)。管理类过程包括项目管理质量管理配置管理。开发类包括需求分析、设计、编码、测试、评审等过程。

    2.3       跟踪问题处理

    SQA应跟踪问题处理过程,直到问题解决。跟踪的问题包括日常发现的产品问题、过程问题、项目风险、评审发现的问题、测试发现的问题等。如果不能和项目组就解决方案达成一致,可向项目主管反应。

    2.4       度量和报告

    SQA应善于根据过程规范和经验发现项目运行中的问题,并做到紧急问题、重要问题随时汇报,其它问题周期性汇报。

    SQA需要随时收集数据并保障数据的有效性、真实性。定期汇总数据、统计分析并产生度量报告。SQA应协助项目组和SEPG针对不良趋势和问题采取纠正或预防措施。

    2.5       质量推进

    质量推进主要包括提高全员的质量意识和推进、解释过程的执行两个方面。这项工作需要在日常工作中一点一点地、坚持不懈地实施。

    3SQA非周期性工作

    3.1       制定《质量保证计划》

    在项目计划阶段,SQA在参考项目计划的基础上,与项目经理一起制定《质量保证计划》。质量保证计划的内容包括:QA组织结构、工作产品输出计划、计划执行的QA活动、度量计划以及计划采用的辅助工具等。《质量保证计划》要做到内容明确、可操作并及时更新。

    3.2       过程制定

    如果项目或组织需要制定过程规范,SQA应组织相关人员来完成过程制定工作。一般情况下,过程制定应由遵守和执行该过程的人员负责。所有制定的过程都必须经过评审,并由SQA检查执行情况。

    3.3       过程改进

    过程改进是一项长期的任务。SQA应注意随时发现、听取过程执行中问题和改进工作的方法,并进行阶段性的总结(比如质量报告等),以不断改进过程,提高过程能力。

    3.4       学习和研究

    SQA要不断学习和研究,尽量保持与领域最新的知识、方法同步,找出提高产品质量和工作效率的方法与过程。学习的内容主要包括管理领域和开发领域。管理领域包括质量管理(TQMISO9000CMMRUPMSFXP等)、软件度量(PSMGQMSPCSixSigma)、项目管理、配置管理等。开发领域包括需求工程、设计、编码、测试等各阶段的开发和管理方法。

    3.5       质量培训

    项目或组织需要时,SQA需要向相关人员进行质量管理方面的培训或咨询。

     

     

  • 软件测试十原则

    2007-07-20 12:01:30Top 1 Digest 1

    1.程序员应避免测试自己编制的程序
    2.
    测试用例的设计必须包括预期的输出结果
    3.
    测试用例应包括有效的和期望的输入情况,也要包括无效的和不期望的输入情况
    4.
    彻底检查每个测试结果
    5.
    只检查程序是否做了它应该做的事仅仅完成了测试工作的一半,

      另一半则是要检查程序是否做了它不该做的事
    6.
    避免不可重复的即兴测试,保留全部测试用例
    7.
    一段程序中存在错误的概率与在这段程序中已发现的错误数成正比
    8.
    测试是一项非常复杂、有创造性的挑战性任务
    9.
    不要为了便于测试擅自修改程序
    10.
    测试工作必须有明确的目标

  • 学习习惯和学习方法总结

    2007-07-20 11:55:20Top 1 Digest 1

    工作中的学习习惯总结:
    1。工作中,遇到困难/遇到不明白的地方,提出问题,找到最快解决问题的途径(分类问题记录文档/相关文档/相关书籍/帮助手册/google/同事)寻找答案,解决问题,将知识点记录到相关文档中(分类问题记录文档/学习笔记/博客空间日志),解决困难/理解不明白的地方。
    2。每天记录下工作总结和经验。

     

    技术系统学习的学习习惯总结:
    1。每天坚持2个半小时进行学习
    2。每天坚持写工作学习日志
    3。每月写学习计划并改进学习方法

     

    业务和系统熟悉学习方法总结:
    1.在进入工作后,系统的看所有业务和系统文档,有个大致印象。
    2.遇到问题时,先查询业务和系统文档,用红色字体标识出知识点,表示已经在工作中接触到了该知识点。如果没有找到答案或文档不够详细,问资深的同事或查看代码(系统知识),然后将知识点补充到业务和系统文档中(如果没有文档,则自己积累出个文档来)。
    3.问题解决了,但没明白内部细节,而且任务时间有限不允许更深入的理解时,记录下解决问题的过程,等工作任务结束后,解决不明白的地方,同样将知识点补充到业务和系统文档中。
    4.平时工作中,接触到的陌生的业务和系统知识点时,补充到业务和系统文档中,并用红色字体标识出。
    5.定期的整理业务和系统文档,加深印象。

     

    工作相关技术的学习方法总结:
    1.找到相关技术的查询途径(联机帮助/技术官方网站/技术手册/权威技术书籍/google)
    2.遇到问题时,在寻找答案过程中,不要牵连出一堆的知识点,抓住和问题紧密相关的知识点,除了顺利解决问题之外,需要彻底的弄清楚该知识点,如果时间不允许,先解决问题,并记录下未明白的知识点,在工作任务完成后,继续掌握该知识点。
    3.晚上学习进行系统的学习,技术的系统学习方法总结另外总结。


     

    技术的系统学习方法总结:
    1.找一本权威的该技术书籍.先通读一遍,注重掌握关键问题,关键知识和技术,关键的方法和算法. 再细读一遍, 挑出重点,结合下面的4点学习方法进行,然后把整个的学习过程、经验心得、理解认识,写成学习笔记的方式总结.(正在试用)
    2.技术手册中查询并练习函数手册中的范例。
    3.调试权威技术书籍中的实例源代码。
    4.自己编写相关技术的小程序。
    5.阅读后台系统中包含相关知识点的源代码文件。

     

    测试技术学习方法总结:

    1.测试技术非常具有实践性,所以,我的学习方法是:首先系统的学习该测试技术权威书籍,对该测试技术有个全面的了解,其次,在测试工作中找到能使用该测试技术的地方,尝试用该测试技术进行工作,在实际工作中总结该测试技术的使用经验,以写日志的方式提炼.最后,在多次测试任务完成中,反覆查阅该技术权威书籍,达到温故而知新的目的,不断尝试改进自己实际使用的该测试技术.不断增加自己对该测试技术的经验总结.
    2.测试技术的学习离不开对业务和系统知识和开发相关技术知识的熟悉,这2方面是测试技术学习的前提,但也不是前2者完全具备了才能开始测试技术的学习,可以在进行测试技术学习的同时,按需学习前2者.
    3.测试技术的学习的目的是提高测试效率,不是为了学习而学习,任何测试技术的学习一定是在有工作环境可实践的情况下进行,学习效率才会高. 如果发现某个测试技术很好,但并不适合现在的测试系统使用,请暂时放弃该测试技术的学习.

     

    别人的编程学习习惯和学习方法收集:
    1.坚持每天看所测系统的源代码,直到全部看完为止。
    2.看一本书时,先通读一编;再细读一编;然后洗刷式的快速反馈学习;然后把你整个的学习过程、经验心得、理解认识,写一个详细的文章;找些不错的源代码,认识别人对实现过程的思路. 一边编写自己感兴趣的小程序。
    3.在论坛上提问
    4.对于基本功和基础知识的学习适宜采用系统学习的方法,尽管需要系统而深入的学习但也并不是要去弄清楚各种烦琐的细节问题,而是要注重掌握关键问题,关键知识和技术,关键的方法和算法。同样是有所选择和侧重的。而对于应用技术或者自己以前不熟悉的技术的学习则适宜采用按需学习的方法,针对实际工作和应用中对该技术和知识的需求只侧重于自己需要的那个部分进行重点学习,理解,吸收和掌握,应用的需求决定了学习的内容和程度。对于与项目应用需求不是特别相关的技术细节只做概要式的领会,注意其与别的部分的整体联系就可以了,不必深究。
    5.我们在学习之前必须要对要学习的东西有充分的了解,特别是从整体的角度要有一种系统观的了解。学习新技术或者新领域时,最好能找一本关于那个方向比较好的综述性质的书,先从总体架构上了解该技术的整个面貌,技术要点和流程,然后再联系自己现有的知识结构,根据自己的实际需要选择和制定合适的学习阶段,学习内容和学习计划。

  • 项目测试工作总结

    2007-07-20 11:08:14Top 1 Digest 1

       一、前期准备
      1)测试组与开发组协调,包括项目测试流程约定,测试组与开发组的协作活动安排等;
      在项目前期,规划好测试组与开发组的协调工作,可以让测试人员与项目开发人员彼此了解在测试活动中的职责。为了规避项目部分风险,项目的测试组与开发组需要明确在项目的哪些重要活动需要提前沟通,例如需求的评审,汇总发现某周期测内仍遗留大量缺陷;对测试部门制定的相应测试流程中需要开发人员参与的部分,是否根据项目实际情况进行调整。

      2)项目需求及相关资源了解;
      测试组组长(或测试经理)需要对项目的客户需求和项目本身要求进行了解,明确测试范围、测试指标、测试要点,测试所需软硬件环境等,为制定测试计划打好基础。

      二、制定测试计划
      主要包括测试软硬件资源,人力资源,测试指标,粗略进度,采集的度量数据,风险,约定等。网络上有很多这方面的模板资料,建议定义好测试过程中要收集的度量数据,一般包括缺陷本身的属性,例如严重程度,功能类别,发现阶段,工作量,对应用例等;各周期内(例如以周为单位)缺陷的收敛情况(发现数量,解决数量,遗留数量),阶段分布情况,缺陷存活情况等。

      三、编制测试用例
      1)了解项目需求(客户需求与项目需求);
    一方面为编制测试用例打好基础,另一方面可以找出需求中存在的问题。

      2)明确公共用例;
      找出测试需求中,在编写用例时会出现重复的需求,编写公共用例,这样回减少后期用例编写工作量,也方便后期用例的维护。

      3)明确手动测试用例与自动化测试用例范围;
      可以避免重复劳动,有些业务流程可以用自动化的用例来代替手动工作。

      4)确定用例编写进度;

      5)正式编写;

      6)用例验证;

      7)明确测试用例执行顺序。

      四、实施测试
      1)确定实施进度;

      2)搭建测试环境

      3)执行测试用例,记录用例执行结果,报告缺陷;

      4)记录度量数据;

      5)维护测试用例。

      五、测试总结
      1)测试停止评估(参照测试用例执行情况,缺陷收敛情况,与测试指标偏差情况等);

      2)测试总结报告;

      3)提交汇总度量数据,测试部门存档。

863/5<12345>

数据统计

  • 访问量: 44784
  • 日志数: 86
  • 文件数: 1
  • 建立时间: 2007-06-15
  • 更新时间: 2008-04-02

RSS订阅

Open Toolbar