故意学习,故意生活,故意活的像个人!

发布新日志

  • 案例一:测试主管新到一个环境你如何开展工作?

    Spark.lee 发布于 2007-05-30 10:56:36

    案例内容:
      公司有一个不到10人成立不到半年的测试部,我成为该公司的新聘测试主管,公司要求我尽快建立适合的流程,我该如何开展工作?
      是先了解几天情况,然后找每个测试人员谈话了解工作情况每个人的想法?还是一直按兵不动仔细观察个十天半月?

     分析一:
      作者:herlga
      分析内容:
      1、新了解情况是必须的,建立与测试人员之间的信任关系。
      2、总结目前状况,整理成报告,指出问题。
      3、确定目标,提出改进方案。 分析二:
      作者:味书生
      分析内容:
      这个问题不错,以下是我的一些想法:
      1.首先,要深刻体会上层对测试的定位(这个工作可以在面试时探讨,但如果探讨的不够深刻,一定在启动工作时,认真领会)
      2.了解企业文化非常重要,因为他是你推行流程和管理的基础
      3.了解当前公司的测试状态
      --找一些问题与CTO,质量控制部门,项目部门,工程部门,开发部门等等部门进行外部交流
      --与测试部门人员交流
      4.了解测试部门人员水平
      5.引进管理工具,和标准规范
      6.论证流程,制定一个与公司现有状况适度的流程
      7.选择一个重视质量的项目进行开练

    问题一,该案中,公司已经建立了测试部,并且半年之久,诚然存在很大的问题,否则不会空降一位测试主管。
      问题二,公司要求尽快建立适合的流程。做过测试管理的同行都知道,这个问题难就难在适合二字,测试流程容易,拿本软件工程的书,或者网上搜一下,也能找出个把的流程。而尽快二字确是一道金箍。
      问题三,作者尚不熟悉该公司的环境,古语道:入乡即需随俗
       古有训:一朝天子,一朝臣,我想作者也是受这种封建残余的影响而却步吧。不过我们是从事着新新行业,新新领域的一代新人了,机会和挑战是并存的。不要却步,虽然team建设是件不容易的事情,公司既然在众里 寻他的过程中选中了你,便是对你的能力肯定和支持。
      首先第一点,分析一中也提到了解情况是必须的,实事求是嘛。这个了解情况,作者自己 也提到了,只是这个方法上静观其变好像在上任之初是不太合适的,跟每个人谈话的方式,笔者认为,太难控制,让测试人员自揭缺点是不太容易的,同时容易让别 人排斥你。距离不全都是美的,要把握适度。沟通的距离合适了,合作的距离才能近。
      一个新的团队,要了解的情况包括:
      测试人员的基本情况,如果公司有受聘人员的简历或者更详细的档案最好,如果没有,只好自己设计一份测试题或者技能调查表。直截了当的反馈。
       测试组的工作进展情况,如果有幸跟前一位主管进行工作交接或者公司对工作文档都进行了配置管理,那就方便很多了,如果没有,只好自己向相关人员索要了。 有四个文档是必须要看的:软件需求规格说明书、测试计划书、缺陷报告、测试分析报告。软件需求规格说明书的内容质量是体现开发团队过程管理水平重要因素, 所谓好的开始,是成功的一半。在软件开发过程中,一份好的软件需求规格说明书,是项目成功的一半,它的质量对软件来讲有事半功倍的效果;测试计划书是测试 team工作的灵魂,从一份测试计划书中可以解读team的管理水平以及撰写者的技术水平;缺陷报告是缺陷提交者和相关代码开发者的技术水平的整体体现, 这份报告,不单是新到一个团队要看,而是时时刻刻要看,每个项目要看。做测试之前要看,做完测试之后也要看。测试分析报告,做事情要有头有尾,这份文档可 以体现总结者的诚实和负责任的程度,同时可以从中感受,感受企业文化。
      第二点,不要批评,无论了解的过程中发现了什么样的问题,不要批评。批评是疏远和不负责任的表现。给出解决方案先。解决方案要跟测试组,或者开发过程中所有相关的人员进行讨论,他们会在认同你的解决方案的同时,认同你这个人。
      第三点针对企业尽快制定适合的测试流程,拟订标准测试流程和各个工作节点裁减说明。这不是明哲保身,不要草率,这将是你工作的起点和改进的基础或者是目标。(拟的流程过于简单就是基础,很完善就是目标---关键在于你的水平)
      相信说到这里你已经容入团队开始工作了。余下的就看你的水平啦!:)

  • 究竟什么是软件测试?

    Kerryzhu 发布于 2007-03-13 19:20:14Top 1 Digest 1

    G.J.Myers的经典著作《软件测试之艺术》(The Art of Software Testing)中,给出了测试的定义:“程序测试是为了发现错误而执行程序的过程”。这个定义,被业界所认可,经常被引用。除此之外,G.J.Myers还给出了与测试相关的三个重要观点,那就是:

    1.  测试是为了证明程序有错,而不是证明程序无错误; 
    2.  一个好的测试用例是在于它能发现至今未发现的错误; 
    3.  一个成功的测试是发现了至今未发现的错误的测试。


    实际上,这里暗示了“软件测试”在不同侧面上的含义,也就决定了对软件测试不同的定义和不同的理解。根据作者多年的经验和理解,软件测试的不同视野,概括为如下5类:

    •  软件测试的狭义论和广义论——静态和动态的测试
    •  软件测试的辨证论——正向思维和反向思维
    •  软件测试的风险论——测试是评估
    •  软件测试的经济学观点——为盈利而测试
    •  软件测试的标准论——验证和确认

     

    1. 软件测试的狭义论和广义论

    G.J.Myers所给出了测试定义——“程序测试是为了发现错误而执行程序的过程”,实际是一个狭义的概念,因为他认为测试是执行程序的 过程,也就是传统意义上的测试——在代码完成后,通过运行程序来发现程序代码或软件系统中错误。但是,这种意义上的测试是不能在代码完成之前发现软件系统 需求、发现设计上的问题,把需求、发现设计上的问题遗留到后期,这样就会可能造成设计、编程的部分返工。增加软件开发的成本、延长开发的周期等。需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。这种狭义论是受软件开发瀑布模型影响。

    正是为了更早地发现问题,所以将测试延伸到需求评审、设计审查活动中去,也就是将“软件质量保证”的部分活动归为测试活动。实际上,在软件开发实际操作中,常常将软件测试和质量保证——这两种努力(efforts)合并起来。

    延伸后的软件测试,被认为是一种软件测试的广义概念。这就引出软件测试的两个概念“静态测试”和“动态测试”,如 测试方法的辩证统一 (1)所述,这样就由静态测试和动态测试构成一个全过程的、完整的软件测试,而且静态测试显得更为重要

     

    2.软件测试的辨证论 

    G.J.Myers的第2个观点“测试是为了证明程序有错,而不是证明程序无错误”, 引出了软件测试的另外一个争论,软件测试究竟是证明所有软件的功能特性是正确的呢?还是其反向思维——对软件系统进行各种试探和攻击,找出软件系统中不正 常或不工作的地方呢?从我个人理解,这两个方面都有一定道理,前者(证明所有软件的功能特性是正确的)是从质量保证的角度来思考软件测试,后者(证明程序有错)从软件测试的直接目标和测试效率来思考,两者应该相辅相成。在后者的思想背景下,我们认为,测试不是为了证明所有的功能可以正常工作,恰恰相反,测试就是为了找出那些不能正常工作、不一致性的地方。也就是说,测试的一般工作就是发现缺陷 (detect bug),即在软件开发过程中,分析、设计与编码等工作都是建设性的,而测试是带有“破坏性”的工作。

    对于不同的应用领域,两者的比重是不一样的,如国防、航天、银行等软件系统,承受不了任何系统失效,因为一次系统的失效完全有可能导致灾难性的损失,所以强调前者以保证非常高的软件质量。而一般的软件服务应用则不同,强调后者,质量目标设置在“用户可接受水平”,不要国度追求质量,从而可以降低软件开发成本。作者建议,在我们实际操作中,可以分阶段实施不同的测试思想,在早期阶段集中在“证明程序有错”—— 发现Bug,后期集中在验证所有特性是否正常工作——降低风险,见作者的另外一篇讨论:测试执行中非常有效的策略

        下面就是这两种观点的基本描述:

    • 验证软件是验证软件是“工作的”,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。代表人物是软件测试领域的先驱Dr. Bill Hetzel (代表论著《The Complete Guide to Software Testing》)。

    • 证明软件是“不工作的”,以反向思维方式,不断思考开发人员理解的误区、不良的习惯、程序代码的边界、无效数据的输入以及系统的弱点,试图破坏系统、摧毁系统,目标就是发现系统中各种各样的问题。其代表人物就是上面多次提到的G.J.Myers。他强调,一个成功的测试必须是发现Bug Bug的测试,不然就没有价值。

    3.软件测试的风险论 

    测试被定义为“对软件系统中潜在的各种风险进行评估的活动”,这就是软件测试的风险论。软件测试自身的风险性是大家公认的,测试的覆盖度不能做到100%。测试的这种风险定义一方面源于这层含义,另外软件测试的标准有时不清楚,“软件规格说明书(Specification/ Spec)”是其中的一个标准,但也不是唯一的,因为Spec中有些内容完全有可能是错误的。所以,我们常常强调软件测试人员应该站在客户的角度去进行测试,除了发现程序中的错误,还要发现需求定义的错误、设计上的缺陷,可以针对Spec 去报Bug。但是,测试在大多数时间/情况下,是由工程师完成,而不是客户自己来做,所以又怎么能保证工程师和客户想得一样呢?

    有人把开发比作打靶,目标明确,就是按照Spec 去实现系统的功能。而把测试比作鱼,目标不明确,自己判断哪些地方鱼多,就去哪些地方捞;如果只捞大鱼(严重缺陷),网眼就可以大些、撒网区域相对比较集中(测试点集中在主要功能-major features)。如果想把大大小小的鱼捞上来,网眼就要小、普遍撒网,不放过任何一块区域(测试点遍及所有功能——all features)。

    在“风险”论的框架下,软件测试可以被看作是一个动态的监控过程,对软件开发全过程进行检测,随时发现不健康的征兆,发现问题、报告问题,并重新评估新的风险,设置新的监控基准,不断地持续下去,包括回归测试。这时,软件测试可以完全看作是软件质量控制的过程。

    对应这种观点,产生基于风险的测试策略,首先评估测试的风险,功能出问题的概率有多大?哪些是用户最常用的20%功能——Pareto原则(也叫80/20原则)?如果某个功能出问题,其对用户的影响有多大?然后根据风险大小确定测试的优先级。优先级高的测试,优先得到执行,一般来讲,针对用户最常用的20%功能(优先级高)的测试会得到完全执行,而低优先级的测试(另外用户不经常用的80%功能)就不是必要的,如果时间或经费不够,就暂时不做或少做。

    版权所有,软件测试演义®

    4.软件测试的经济学观点

    “一个好的测试用例是在于它能发现至今未发现的错误”,体现了软件测试的经济学观点实际上软 件测试经济学问题至今仍是业界关注的问题之一。经济学的核心就是要盈利,盈利的基础就是要有一个清楚的商业性目标。同样,商业性目标是否正确,直接决定了 企业是否盈利的结果。多数情况下,软件测试是在公司内的执行。正是公司的行为目的,决定了软件测试含义或定义的经济性一面。正如,对软件质量的定义不仅仅 局陷于“和客户需求的一致性、适用性”,而且要增加其它的要求——“预算内、按时发布、易于维护”。

    软件测试也一样,要尽快尽早地发现更多的缺陷,并督促和帮助开发人员修正缺陷。原因很简单:平均而言,如果在需求阶段修正一个错误的代价是1,那么,在设计阶段就是它的36倍,在编程阶段是它的10倍,在内部测试阶段是它的2040倍,在外部测试阶段是它的3070倍,而到了产品发布出去时,这个数字就是  40 1000倍。修正错误的代价不是随时间线性增长,而几乎是呈指数级增长的。

    .版权所有,软件测试演义®

    5. 软件测试的标准论

            如果从标准论来看软件测试,可以定义为软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软件测试 = V&V

     “验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。验证过程提供证据表明软件相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)相一致。相当于,以Spec为标准进行软件测试活动,验证软件产品和Spec的一致性。

    “有效性确认”是确认所开发的软件是否满足用户真正需求的活动。相当于,保持对软件需求定义、设计的怀疑,一切从客户出发,理解客户的需求,发现需求定义和产品设计中的问题。这主要通过各种软件评审活动来实现。

    需要说明的是,软件测试的对象是产品(包括阶段性产品,如市场需求说明书、产品规格说明书、技术设计文档、数据字典、程序包、用户文档等),而质量保证和管理的对象集中在软件开发的标准、流程和方法等。

     

    究竟什么是软件测试呢?综上所述,软件测试的定义为:

    软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。


    原著 出自: 软件测试演义——中高级系列(序)

  • 关于缺陷的优先级和严重级别

    songfun 发布于 2007-03-11 02:49:08

    今天看到论坛里一个学员在问“到底应该是谁把缺陷状态置为PostPone,Rejected,Duplicate是Developer还是PM或CCB?”,还有学员对优先级这个字段理解的不够透彻,原话是“优先级的填写要看情况的。因为有时Tester 开的bug 很多,而PM又有好多TESTER,那PM就来不及去一一看那些BUG了,这时Priority就得由tester填写”,而论坛里还有同学找了篇英文的文章来告诉大家“看,老外都是这么做的”。

    我觉得有必要给大家解释透这两个概念,这样不至于在日后的工作中做错。

    以下粉红色部分是对那篇英文的引用,后面则是我的回答(结合微软的实际例子给大家说明)。

    QUOTE:
    原帖由 rivermen 于 2007-3-9 09:12 发表

    c) The tester then selects the priority of the defect:

    Critical - fatal error
    High - require immediate attention
    Medium - needs to be resolved as soon as possible but not a showstopper
    Low - cosmetic error


    从这篇文章来看,这段英文描述是有问题的——不能说不对,至少不合理。
    优先级不应该给tester指定,这也是很多缺陷流程制定者容易忽略到的地方——很大一部分原因是流程制定者没有做过项目管理的工作或者学习过项目管理的知识。

    为什么这么说呢?
    因为Tester只是项目团队的成员之一,对缺陷管理、项目进度和项目风险都不可避免的会“盲人摸象”、“管中窥豹”,只“看”到自己“看”到的那个部分。
    一般来说,一个被测系统往往需要多个tester的,而每个tester往往只关注自己发现的bug,不大会去了解其他tester所发现的bug,那么在这种情况下,他如何能够决定这个bug被修复的优先级别呢?!
    这里再次强调一次,大家必须了解“Priority”真正的含义和作用——它是给管理者来据此做项目决策的,也就是说,缺陷优先级将直接导致工作安排的优先顺序。PM正是通过参考缺陷优先级来安排开发人员的工作顺序(这甚至能在Project里体现),使得项目风险降低、项目成本降低,解决问题更高效。
    其实,这在微软内部就叫做“基于风险的测试”,也就是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。有如下一个图,横轴代表影响,竖轴代表概率,根据一个软件的特点来确定:如果一个功能出了问题,它对整个产品的影响有多大,这个功能出问题的概率有多大?如果出问题的概率很大,出了问题对整个产品的影响也很大,那么在测试时就一定要覆盖到。对于一个用户很少用到的功能,出问题的概率很小,就算出了问题的影响也不是很大,那么如果时间比较紧的话,就可以考虑不测试。

    以下是微软公司的缺陷流程(不知道现在做微软外包的公司是否也采用这套流程),给大家参考参考。
    Bug跟踪过程
         在软件开发项目中,测试人员的一项最重要使命就是对所有已知Bug进行有效的跟踪和管理,保证产品中出现的所有问题都可以得到有效的解决。一般地,项目组发现、定位、处理和最终解决一个Bug的过程包括Bug报告、Bug评估和分配、Bug处理、Bug关闭等四个阶段:
         1)测试工程师在测试过程中发现新的Bug后,应向项目组报告该Bug的位置、表现、当前状态等信息。项目组在Bug数据库中添加该Bug的记录。
        2)开发经理对已发现的Bug进行集中讨论,根据Bug对软件产品的影响来评估Bug的优先级,制定Bug的修正策略。按照Bug的优先级顺序和开发人员的工作安排,开发经理将所有需要立即处理的Bug分配给相应的开发工程师。
         3)开发工程师根据安排对特定的Bug进行处理,找出代码中的错误原因,修改代码,重新生成产品版本。
        4)开发工程师处理了Bug之后,测试人员需要对处理后的结果进行验证,经过验证确认已正确处理的Bug被标记为关闭(Close)状态。测试工程师既需要验证Bug是否已经被修正,也需要确定开发人员有没有在修改代码的同时引入新的Bug。


    话说回来,网上有很多自称专家的人在那里大谈特谈所谓的优先级标准,什么“系统死机是高级别,界面错误是低级别”之类。其实这些指的是缺陷的严重级别(Serverity)!
    当然,一般来说缺陷的严重级别也不是tester“主观判断”决定的,如果公司比较规范的话,会由测试经理、项目经理等组织制订这么一份相关的标准文档,文档是关于对应缺陷严重级别的定义。Tester在测试的时候就根据这么一份文档来决定对应Bug的严重级别。
    我下面粘贴某公司的一个《缺陷等级标准》的文档,大家可以看到其中的“E类——测试建议”正是我上课所说的Enhancement。


    ========================
    缺陷严重级别定义:
         o 最高级--导致运行中断(应用程序崩溃),预期的功能没有得到实现,测试工作无法继续进行等.
         o 紧急---事件非常重要,并且需要马上给予关注.
         o 高级---事件是重要的,并且应该在紧急的事件处理之后尽快得到解决.
         o 中级---事件是重要的,但是由于解决问题需要花费一定的时间,所以可以用较长的时间解决.
         o 低级---事件不重要,可以在时间和资源允许的情况下再解决.
         o 建议性缺陷.

    更为详细的划分如下:

    A类——严重错误,包括:
              o 由于程序所引起的死机,非法退出
              o 死循环
              o 导致数据库发生死锁
              o 数据通讯错误
              o 严重的数值计算错误

    B类——较严重错误,包括:
              o 功能不符
              o 数据流错误
              o 程序接口错误
              o 轻微的数值计算错误

    C类——一般性错误,包括:
              o 界面错误(详细文档)
              o 打印内容、格式错误
              o 简单的输入限制未放在前台进行控制
              o 删除操作未给出提示

    D类——较小错误,包括:
              o 辅助说明描述不清楚
              o 显示格式不规范
              o 长时间操作未给用户进度提示
              o 提示窗口文字未采用行业术语
              o 可输入区域和只读区域没有明显的区分标志
              o 系统处理未优化

    E类——测试建议(非缺陷)



    ===============================
    好了,关于缺陷优先级和严重级别我解释到这儿,我希望同学们在学习的过程中知其然更要知其所以然。流程的制定不是想当然的,更不是因为看到别的公司都这么做自己就跟着做的。项目管理、缺陷管理都需要有很深的技术管理知识作为支撑,否则是作不好的。

  • 2006年上半年软件评测师试题及答案(上)

    jzhao 发布于 2007-01-24 09:27:30

    2006年上半年软件评测师上午试题

    在计算机系统中,存取速度最快的是___(1)___
      (1)ACPU内部寄存器        B.计算机的高速缓存Cache
        C.计算机的主存        D.大容量磁盘

      模块的耦合度描述了___(2)___
      (2)A.模块内各种元素结合的程度  B.模块内多个功能之间的接口
        C.模块之间公共数据的数量   D.模块之间相互关联的程度

      若某计算机系统是由500个元器件构成的串联系统,且每个元器件的失效率均为10-7/H,在不考虑其它因素对可靠性的影响时,该计算机系统的平均故障间隔时间为___(3)___小时。
      (3)A2×1O4     B5×1O4    C2×1O5    D5×105

      内聚是一种指标,表示一个模块___(4)___
      (4)A.代码优化的程度         B.代码功能的集中程度
        C.完成任务时及时程度       D.为了与其他模块连接所要完成的工作量

      为了解决进程间的同步和互斥问题,通常来用一种称为___(5)___机制的方法。若系统中有5个进程共享若干个资源R,每个进程都需要4个资源R,那么使系统不发生死锁的资源R的最少数目是___(6)___ 
      (5)A.调度     B.信号量    C.分派     D.通讯
      (6)A20      B18      C16      D15

      UNIX操作系统中,把输入/输出设备看作是___(7)___
      (7)A.普通文件   B.目录文件   C.索引文件   D.特殊文件

      某磁盘盘组共有10个盘面,每个盘面上有100个磁道,每个磁道有16个扇区,假定分配以扇区为单位。若使用位示图管理磁盘空间,则位示图需要占用___(8)___字节空间。
      (8)A16000     B1000     C2000     D1600

      ●___(9)___描述数据的局部逻辑视图,是数据库用户的数据视图,它是与某一应用有关的数据逻辑表示。
      (9)A.模式     B.逻辑模式   C.外模式    D.内模式

      某数据库中有员工关系E、产品关系P、仓库关系W和库存关系I,其中:
      员工关系E(employeelDnamedepartment)中的属性为:员工编号,姓名,部门;
      产品关系P(productIDnamemodelsizecolor)中的属性为:产品编号,产品名称,型号,尺寸,颜色;
      仓库关系W(warehouselDnameaddressemployeeID)中的属性为:仓库编号,仓库名称,地址,员工编号;
      库存关系I(warehouseIDproductIDquantity)中的属性为仓库编号,产品编号和产品数量。
      a.若要求仓库关系的负责人引用员工关系的员工编号,员工关系E的员工编号、仓库关系W的仓库编号和产品关系P的产品编号不能为空且惟一标识一个记录,并且仓库的地址不能为空,则依次要满足的完整性约束是___(10)___
      b.可得到每种产品伪名称和该产品的总库存量的查询语句为;
       SELELCT nameSUM(quantity)
       FROM P,I
       WHERE___(11)___
      (10)A.实体完整性、参照完整性、用户定义完整性
        B.参照完整性、实体完整性、用户定义完整性
        C.用户定义完整性、实体完整性、参照完整性
        D.实体完整性、用户定义完整性、参照完整性
      (11)AP.productID=I.productlD
        BP.productID=I.product ID ORDER BY name
        CP.productID=Iproduct ID GROUP BY name
        DP.productID=Iproduct ID GROUP BY namequantity

      与多模光纤相比较,单模光纤具有___(12)___等特点。
      (12)A. 较高的传输率、较长的传输距离、较高的成本
        B. 较低的传输率、较短的传输距离、较高的成本
        C. 较高的传输率、较短的传输距离、较低的成本
        D. 较低的传输率、较长的传输距离、较低的成本

      ● “<title style="italic">science</title>”是一个XML 元素的定义,其中元素标记的属性值是___(13)___
      (13)Atitle     Bstyle    Citalic    Dscience

      某校园网用户无法访问外部站点210.102.58.74,管理人员在windows 操作系统下可以使用___(14)___判断故障发生在校园网内还是校园网外。
      (14)A. ping 210.102.58.74        B. tracert 210.102.58.74
        C. netstat 210.102.58.74      D. arp 210.102.58.74

      ● SNMP 所采用的传输层协议是___(15)___
      (15)A. UDP      B. ICMP      C. TCP      D. IP

      渐增式开发方法有利于___(16)___
      (16)A.获取软件需求 B.快速开发软件  C.大型团队开发 D.商业软件开发

      高级程序设计语言中用于描述程序中的运算步骤、控制结构及数据传输的是___(17)___
      (17)A.语句     B.语义      C.语用     D.语法

      ● ___(18)___是面向对象程序设计语言不同于其它语言的主要特点,是否建立了丰富的___(19)___是衡量一个面向对象程序设计语言成熟与否的重要标志之一。
      (18)A. 继承性    B. 消息传递   C. 多态性    D. 静态联编
      (19)A. 函数库    B. 类库     C. 类型库    D. 方法库

      某市标准化行政主管部门制定并发布的工业产品的安全、卫生要求的标准,在其行政区域内是___(20)___
      (20)A.强制性标准  B.推荐性标准  C.自愿性标准  D.指导性标准

      王某购买了一个海之久牌活动硬盘,而且该活动硬盘还包含有一项实用新型专利,那么,王某享有___21___
      (21)A海之久商标专用权      B.该盘的所有权
        C.该盘的实用新型专利权      D.前三项权利之全部

      甲企业委托软件公司程序员王某开发管理软件,并与王某签订了书面协议,但协议中未对软件著作权归属做出明确的约定,其软件著作权属于___(22)___
      (22)A.甲企业    B.软件公司    C.程序员王某  D.软件公司和甲企业

      依据著作权法,计算机软件著作权保护的对象是指___(23)___
      (23)A. 计算机硬件  B. 计算机软件  C. 计算机硬件和软件 D. 计算机文档

      相对于DES算法而言,RSA算法的___(24)___,因此,RSA___(25)___
      (24)A.加密密钥和解密密钥是不相同的  B.加密密钥和解密密钥是相同的
        C.加密速度比DES要高        D.解密速度比DES要高
      (25)A.更适用于对文件加密       B.保密性不如DES
        C.可用于对不同长度的消息生成消息摘要  D.可以用于数字签名

      C++语言中,已知3个类OPQ,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:
       class P : protected O {…};
       class Q : public O {…};
      关于方法F1的描述中正确的是___(26)___;关于方法F2韵描述中正确的是___(27)___;关于方法F3的描述中正确的是___(28)___
      (26)A.方法F1无法被访问          B.只有在类O内才能访问方法F1
        C.只有在类P内才能访问方法F1     D.只有在类Q内才能访问方法F1
      (27)A.类OPQ的对象都可以访问方法F2  B.类PQ的对象都可以访问方法F2
        C.类0Q的对象都可以访问方法F2    D.只有在类P内才能访问方法F2
      (28)A.类0PQ的对象都可以访问方法F3  B.类0PQ的对象都不可以访问方法F3
        C.类0Q的对象都可以访问方法F3    D.类PQ的对象都可以访问方法F3

      正式的技术评审FTR(Formal Technical Review)是软件工程师组织的软件质量保证活动,下面关于FTR指导原则中不正确的是___(29)___
      (29)A.评审产品,而不是评审生产者的能力
        B.要有严格的评审计划,并遵守日程安排
        C.对评审中出现的问题要充分讨论,以求彻底解决
        D.限制参与者人数,并要求评审会之前做好准备

      在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指___(30)___
      (30)A.父图和子图都不得改变数据流的性质
        B.子图不改变父图数据流的致性
        C.父图的输入/输出数据流与子图的输入/输出数据流一致
        D.子图的输出数据流完全由父图的输入数据流确定

      某系统的顶层DFD图如下,其中,加工1细化后的DFD图是___(31)___


      (31)

      下图中的程序由ABCDE 5个模块组成,下表中描述了这些模块之间的接口,每一个接口有一个编号。此外,模块ADE都要引用一个专用数据区。那么AE之间耦合关系是___(32)___

    编号

    参数

    返回值

    1

    数据项

    数据项

    2

    数据项

    数据项

    3

    功能码

    4

    列表

      (32)A.公共耦合    B.数据耦合    C.内容耦合    D.无耦合

      C++语言中,若类C中定义了一个方法int f(int aint b),那么方法___(33)___不能与该方法同时存在于类C中。
      (33)Aint f(int xint y)        Bint f(float aint b)
        Cfloat f(int xfloat y)      Dint f(int xfloat y)

      在面向对象软件开发过程中,采用设计模式___(34)___
      (34)A.允许在非面向对象程序设计语言中使用面向对象的概念
        B.以复用成功的设计和体系结构
        C.以减少设计过程创建的类的个数
        D.以保证程序的运行速度达到最优值

      两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是___(35)___个。
      (35)A25       B30      C50     D60

      对于软件的β测试,下列描述正确的是___(36)___
      (36)Aβ测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试
        Bβ测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试
        Cβ测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试
        Dβ测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试

      ●___(37)___可以作为软件测试结束的标志。
      (37)A.使用了特定的测试用例      B.错误强度曲线下降到预定的水平
        C.查出了预定数目的错误      D.按照测试计划中所规定的时间进行了测试

      下面--是关于软件评测师工作原则的描述,正确的判断是___(38)___
       对于开发人员提交的程序必须进行完全的测试,以确保程序的质量
       必须合理安排测试任务,做好周密的测试计划,平均分配软件各个模块的测试时间
       在测试之前需要与开发人员进行详细的交流,明确开发人员的程序设计思路,并以此为依据开展软件测试工作,最大程度地发现程序中与其设计思路不一致的错误
       要对自己发现的问题负责,确保每一个问题都能被开发人员理解和修改。
      (38)A     B     C    D.无

      在软件生命周期的不同阶段,需要实施不同类型的测试工作,单元测试是对程序设计进行验证,其中___(39)___不是单元测试的主要内容。在进行单元测试过程中,通常测试工程师都需要借助___(40)___来代替所测模块调用的子模块:在单元测试的基础上,需要将所有模块按照概要设计和详细设计说明书的要求进行组装,模块组装成系统的方式有两种,分别是___(41)___
      (39)A.模块接口测试  B.有效性测试  C.路径测试    D.边界测试
      (40)A.桩模块     B.驱动模块   C.桩模块和驱动模块  D.存根模块和驱动模块
      (41)A.一次性组装和增殖性组装      B.自顶向下组装和启底向上组装
        C.单个模块组装和混合模块组装    D.接口组装和功能组装

      黑盒测试是通过软件的外部表现来发现软件缺陷和错误的测试方法,具体地说,黑盒测试用例设计技术包括___(42)___等。现有一个处理单价为1元的盒装饮料的自动售货机软件,若投入1元币,按下可乐雪碧红茶按钮,相应的饮料就送出来,若投入的是2元币,在送出饮料的同时退还1元币。下表是用因果图法设计的部分测试用例,l表示执行该动作,0表示不执行该动作,___(43)___的各位数据,从左到右分别填入空格表中的(1)—(8)是正确的。

    用例序号

    1

    2

    3

    4

    5


    投入1元币

    1

    1

    0

    0

    0

    投入2元币

    0

    0

    1

    0

    0

    可乐按钮

    1

    0

    0

    0

    0

    雪碧按钮

    0

    0

    0

    1

    0

    红茶按钮

    0

    0

    1

    0

    1


    退还1元币

    (1)

    0

    (5)

    (7)

    0

    送出可乐饮料

    (2)

    0

    0

    0

    0

    送出雪碧饮料

    (3)

    0

    0

    (8)

    0

    送出红茶饮料

    (4)

    0

    (6)

    0

    0

      (42)A.等价类划分法、因果图法、边界值分析法、错误推测法、判定表驱动法
        B.等价类划分法、因果图法、边界值分析法、正交试验法、符号法
        C.等价类划分法、因果图法、边界值分析法、功能图法、基本路径法
        D.等价类划分法、因果图法、边界值分析法、静态质量度量法、场景法
      (43)A01001100   B01101100   C01001010   D11001100

      多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足___(44)___级别的:针对布尔表达式
    A&&(B||C)
    执行逻辑覆盖测试,测试用例至少需要___(45)___种组合才能满足多条件覆盖的要求。
      (44)A.语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖
        B.判定覆盖、条件覆盖;条件判定组合覆盖、修正条件判定覆盖
        C.语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆盖
        D.路径覆盖、判定覆盖、条件覆盖、条件判定组合覆盖
      (45)A6       B4       C8       D12

      典型的软件测试过程模型有___(46)___等,在这些模型中,___(47)___强调了测试计划等工作的先行和对系统需求和系统设计的测试,___(48)___对软件测试流程予以了说明。
      (46)AV模型、W模型、H模型、渐进模型
        BV模型、W模型、H模型、螺旋模型
        CX模型、W模型、H模型、前置测试模型
        DX模型、W模型、H模型、增量模型
      (47)AV模型     BW模型     C.渐进模型   D.螺旋模型
      (48)AV模型     BW模型     CH模型     D.增量模型

      下述关于错误处理流程管理的原则,___(49)___的说法是不正确的。
      (49)A.为了保证正确地定位错误,需要有丰富测试经验的测试人员验证发现的错误是否是真正的错误,并且验证错误是否可以再现。
        B.每次对错误的处理都要保留处理信息,包括处理人姓名、处理时间、处理方法、处理意见以及错误状态
        C.错误修复后必须由报告错误的测试人员确认错误已经修复,才能关闭错误
        D.对于无法再现的错误,应该由项目经理,测试经理和设计经理共同讨论决定拒绝或者延期。

      ● GB/T16260—2003《软件工程产品质量》规定的软件产品使用质量特性包括___(50)___
      (50)A.适应性、生产率、可靠性、满意度
        B.有效性、生产率、安全性、满意度
        C.有效性、可靠性、适应性、满意度
        D.适应性、适用性、效率、满意度

      软件可靠性是指在指定的条件下使用时,软件产品维持规定的性能级别的能力,其子特性___(51)___是指在软件发生故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
      (51)A.成熟性     B.易恢复性     C.容错性     D.可靠性依从性

      ● GB/T18905—2002《软件工程 产品评价》中确定的通用评价过程包括四个方面,即:确立评价需求,规定评价,设计评价和执行评价,其中有关规定评价部分包含的内容有___(52)___
      (52)A.选择度量、建立度量评定等级、确立评估准则:
        B.指定质量模型、选择度量、建立度量评定等级
        C.选择度量、建立度量评定等级、制定评价计划
        D.确定产品类型、选择度量、建立度量评定等级

      ● GB/T18905-2002《软件工程 产品评价》提供了软件产品评价的过程,其中GB/T18905—2002《软件工程 产品评价》第五部分评价者用的过程供___(53)___
      (53)A.计划获取或复用某个已有的软件产品的组织予以使用
        B.对软件产品执行独立评估的评价者使用
        C.计划开发新产品或增强现有的产品,以及打算利用他们自己的技术人员进行产品评价的组织使用
        D.编制评价模块的文档提供指南

      用边界值分析法,假定1<X<100,那么X在测试中应该取的边界值是___(54)___
      (54)AX=1X=100   BX=0X=1X=100X=101  CX=2X=99  DX=OX=101

      导致软件缺陷的原因有很多,是可能的原因,其中最主要的原因包括___(55)___
        软件需求说明书编写的不全面,不完整,不准确,而且经常更改
        软件设计说明书
        软件操作人员的水平
        开发人员不能很好的理解需求说明书和沟通不足
      (55)A   B    C    D

      关于软件质量的描述,正确的是___(56)___
      (56)A.软件质量是指软件满足规定用户需求的能力
        B.软件质量特性是指软件的功能性、可靠性、易用性、效率、可维护性、可移植性
        C.软件质量保证过程就是软件测试过程
        D.以上描述都不对

      对于业务流清晰的系统可以利用___(57)___贯穿整个测试用例设计过程广在用例中综合使用各种测试方法,对于参数配置类的软件,要用___(58)___选择较少的组合方式达到最佳效果,如果程序的功能说明中含有输入条件的组合情况,则一开始就可以选用___(59)___和判定表驱动法。
      (57)A.等价类划分    B.因果图法    C.正交试验法   D.场景法
      (58)A.等价类划分    B.因果图法    C.正交试验法   D.场景法
      (59)A.等价类划分    B.因果图法    C.正交试验法   D.场景法

      逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是___(60)___
      语句段:
       if (A && (B||C)) x=l
       else x=O
      用例表:

     

    用例1

    用例2

    A

    TRUE

    FALSE

    B

    FALSE

    C

    TRUE

    A &&(B||C)

    FALSE

      (60)ATRUE FALSE TRUE       BTRUE FALSE FALSE
        CFALSE FALSE TRUE      DTRUE TRUE FALSE

      ● ___(61)___方法根据输出对输入的依赖关系设计测试用例。
      (61)A.路径测试    B.等价类     C.因果图    D.边界值

      针对下面程序段,边界值问题可以定位在___(62)___
       1Rem Create a 10 element integer array
       2Rem lnitialize each element to -1
       3Dim data(10) As Integer
       4Dim i As Integer
       5For i=1 TO 10
       6data(i)=-1
       7Next i
       8End
      (62) A. data(1)   B. data(0)  C. data(9)   D. data(10)

      以下控制流图的圈复杂度V(g)和基本圈复杂度EV(g)___(63)___

      (63)AV(g)=5 EV(g)=1       BV(g)=6 EV(g)=6
        CV(g)=5 EV(g)=5       DV(g)=6 EV(g)=1

      在网络应用测试中,网络延迟是一个重要指标。以下关于网络延迟的理解,正确的是___(64)___
      (64)A.指响应时间
        B.指报文从客户端发出到客户端接收到服务器响应的间隔时间
        C.指报文在网络上的传输时间
        D.指从报文开始进入网络到它开始离开网络之间的时间

      为保证测试活动的可控性,必须在软件测试过程中进行软件测试配置管理,一般来说,软件测试配置管理中最基本的活动包括___(65)___
      (65)A.配置项标识、配置项控制、配置状态报告、配置审计
        B.配置基线确立、配置项控制、配置报告、配置审计
        C.配置项标识、配置项变更、配置审计、配置跟踪
        D.配置项标识、配置项控制、配置状态报告、配置跟踪

      ● Originally introduced by Netscape Communications,___(66)___ are a general mechanism which HTTP Server side applications, such as CGI (67) , can use to both store and retrieve information on the HTTP ___(68)___ side of the connection. Basically, Cookies can be used to compensate for the ___(69)___ nature of HTTP. The addition of a simple, persistent, client-side state significantly extends the capabilities of WWW-based ___(70)___ .
      (66)A. Browsers   B. Cookies     C. Connections   D. scrīpts
      (67)A. graphics   B. processes    C. scrīpts     D. texts
      (68)A. Client    B. Editor      C. Creator     D. Server
      (69)A. fixed     B. flexible     C. stable     D. stateless
      (70)A. programs   B. applications  C. frameworks   D. constrains

      ● WebSQL is a SQL-like ___(71)___ language for extracting information from the web. Its capabilities for performing navigation of web ___(72)___ make it a useful tool for automating several web-related tasks that require the systematic processing of either all the links in a ___(73)___ , all the pages that can be reached from a given URL through ___(74)___ that match a pattern, or a combination of both. WebSQL also provides transparent access to index servers that can be queried via the Common ___(75)___ Interface.
      (71)A. query     B. transaction    C. communication    D. programming
      (72)A. browsers   B. servers      C. hypertexts     D. clients
      (73)A. hypertext   B. page       C. protocol      D. operation
      (74)A. paths     B. chips       C. tools        D. directories
      (75)A. Router    B. Device      C. Computer      D. Gateway

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

     

    上午试题答案

    (1) A (16) B (31) B (46) C (61) C
    (2) D (17) A (32) A (47) B (62) B
    (3) A (18) A (33) A (48) C (63) D
    (4) B (19) B (34) B (49) D (64) D
    (5) B (20) A (35) C (50) B (65) A
    (6) C (21) B (36) D (51) C (66) B
    (7) D (22) C (37) B (52) A (67) C
    (8) C (23) B (38) D (53) B (68) A
    (9) C (24) A (39) B (54) B (69) D
    (10) B (25) D (40) A (55) D (70) B
    (11) C (26) B (41) A (56) D (71) A
    (12) A (27) C (42) A (57) D (72) C
    (13) D (28) B (43) A (58) C (73) B
    (14) B (29) C (44) A (59) B (74) A
    (15) A (30) C (45) C (60) A (75) D

  • 性能测试的步骤

    Spark.lee 发布于 2006-12-08 12:03:54

    性能测试的步骤

          在每种不同的系统架构的实施中,开发人员可能选择不同的实现方式,造成实际情况纷繁复杂。我们不可能对每种技术都详细解说,这里只是介绍一种方法提供给你如何选择测试策略,从而帮助分析软件不同部分的性能指标,进而分析出整体架构的性能指标和性能瓶颈。

          由于工程和项目的不同,所选用的度量,评估方法也有不同之处。不过仍然有一些通用的步骤帮助我们完成一个性能测试项目。步骤如下

    1.  制定目标和分析系统
    2.  选择测试度量的方法
    3.  学习的相关技术和工具
    4.  制定评估标准
    5.  设计测试用例
    6.  运行测试用例
    7.  分析测试结果

    ·制定目标和分析系统

        每一个性能测试计划中第一步都会制定目标和分析系统构成。只有明确目标和了解系统构成才会澄清测试范围,知道在测试中要掌握什么样的技术。   

    目标:

    1.  确定客户需求和期望

    2.  实际业务需求

    3.  系统需求

    系统组成

        系统组成这里包含几方面含义:系统类别,系统构成,系统功能等。了解这些内容的本质其实是帮助我们明确测试的范围,选者适当的测试方法来进行测试。

        系统类别:分清系统类别是我们掌握什么样的技术的前提,掌握相应技术做性能测试才可能成功。例如:系统类别是bs结构,需要掌握 http协议,java,html等技术 。或者是cs结构,可能要了解操作系统,winsock,com等。所以甄别系统类别对于我们来说很重要。

        系统构成:硬件设置,操作系统设置是性能测试的制约条件,一般性能测试都是利用测试工具模仿大量的实际用户操作,系统在超负荷情形下运作。不同的系统构成性能测试就会得到不同的结果。

        系统功能:系统功能指系统提供的不同子系统,办公管理系统中的公文子系统,会议子系统等,系统工能是性能测试中要模拟的环节,了解这些是必要的。

    ·选择测试度量的方法

    经过第一步,将会对系统有清醒的认识。接下来我们将把精力放在软件度量上,收集系统相关的数据。

    度量的相关方面:

    * 制定规范

    * 制定相关流程, 角色,职责

    * 制定改进策略

    * 制定结果对比标准

    ·学习的相关技术和工具

          性能测试是通过工具,模拟大量用户操作,对系统增加负载。所以需要掌握一定的工具知识才能进行性能测试。大家都知道性能测试工具一般通过winsock, http等协议纪录用户操作。而协议选择是基于软件的系统架构实现(web一般选择http协议,cs选择winsock协议),不同的性能测试工具,脚本语言也不同,比如rational robot中vu脚本用类c语言实现。

          开展性能测试需要对各种性能测试工具进行评估,因为每一种性能测试工具都有自身的特点,只有经过工具评估,才能选择符合现有软件架构的性能测试工具。确定测试工具后,需要组织测试人员进行工具的学习,培训相关技术。

    ·制定评估标准

             任何测试的目的都是确保软件符合预先规定的目标和要求。性能测试也不例外。所以必须制定一套标准。

          通常性能测试有四种模型技术可用于评估:

             *线性投射:用大量的过去的,扩展的或者将来可能发生的数据组成散布图,利用这个图表不断和系统的当前状况对比。

             *分析模型:用排队论公式和算法预测响应时间,利用描述工作量的数据和系统本质关联起来

             *模仿:模仿实际用户的使用方法测试你的系统

             *基准:定义测试和你最初的测试作为标准,利用它和所有后来进行的测试结果进行对比

    ·设计测试用例

        设计测试用例是在了解软件业务流程的基础上。设计测试用例的原则是受最小的影响提供最多的测试信息,设计测试用例的目标是一次尽可能的包含多个测试要素。这些测试用例必须是测试工具可以实现的,不同的测试场景将测试不同的功能。因为性能测试不同于平时的测试用例,尽可能把性能测试用例设计的复杂,才有可能发现软件的性能瓶颈。

    ·运行测试用例

        通过性能测试工具运行测试用例。同一环境下作的性能测试得到的测试结果是不准确的,所以在运行这些测试用例的时候,需要用不同的测试环境,不同的机器配置上运行。

    ·分析测试结果

          运行测试用例后,收集相关信息,进行数据统计分析,找到性能瓶颈。通过排除误差和其他因素,让测试结果体现接近真实情况。不同的体系结构分析测试结果的方法也不同,bs结构我们会分析网络带宽,流量对用户操作响应的影响,而cs结构我们可能更关心会系统整体配置对用户操作的影响。
  • 性能测试

    Spark.lee 发布于 2006-12-08 12:08:30

    性能测试

      对于企业应用程序,有许多进行性能测试的方法,其中一些方法实行起来要比其他方法困难。所要进行的性能测试的类型取决于想要达到的结果。例如,对于可再现性,基准测试是最好的方法。而要从当前用户负载的角度测试系统的上限,则应该使用容量规划测试。本文将介绍几种设置和运行性能测试的方法,并讨论这些方法的区别。

      如果不进行合理的规划,对J2EE应用程序进行性能测试将会是一项令人望而生畏且有些混乱的任务。因为对于任何的软件开发流程,都必须收集需求、理解业务需要,并在进行实际测试之前设计出正式的进度表。性能测试的需求由业务需要驱动,并由一组用例阐明。这些用例可以基于历史数据(例如,服务器一周的负载模式)或预测的近似值。弄清楚需要测试的内容之后,就需要知道如何进行测试了。

      在开发阶段前期,应该使用基准测试来确定应用程序中是否出现性能倒退。基准测试可以在一个相对短的时间内收集可重复的结果。进行基准测试的最好方法是,每次测试改变一个且只改变一个参数。例如,如果想知道增加JVM内存是否会影响应用程序的性能,就逐次递增JVM内存(例如,从1024 MB增至1224 MB,然后是1524 MB,最后是2024 MB),在每个阶段收集结果和环境数据,记录信息,然后转到下一阶段。这样在分析测试结果时就有迹可循。下一小节我将介绍什么是基准测试,以及运行基准测试的最佳参数。

      开发阶段后期,在应用程序中的bug已经被解决,应用程序达到一种稳定状态之后,可以运行更为复杂的测试,确定系统在不同的负载模式下的表现。这些测试被称为容量规划测试、渗入测试(soak test)、峰谷测试(peak-rest test),它们旨在通过测试应用程序的可靠性、健壮性和可伸缩性来测试接近于现实世界的场景。对于下面的描述应该从抽象的意义上理解,因为每个应用程序的使用模式都是不同的。例如,容量规划测试通常都使用较缓慢的ramp-up(下文有定义),但是如果应用程序在一天之中的某个时段中有快速突发的流量,那么自然应该修改测试以反映这种情况。但是,要记住,因为更改了测试参数(比如ramp-up周期或用户的考虑时间(think-time)),测试的结果肯定也会改变。一个不错的方法是,运行一系列的基准测试,确立一个已知的可控环境,然后再对变化进行比较。

    基准测试

      基准测试的关键是要获得一致的、可再现的结果。可再现的结果有两个好处:减少重新运行测试的次数;对测试的产品和产生的数字更为确信。使用的性能测试工具可能会对测试结果产生很大影响。假定测试的两个指标是服务器的响应时间和吞吐量,它们会受到服务器上的负载的影响。服务器上的负载受两个因素影响:同时与服务器通信的连接(或虚拟用户)的数目,以及每个虚拟用户请求之间的考虑时间的长短。很明显,与服务器通信的用户越多,负载就越大。同样,请求之间的考虑时间越短,负载也越大。这两个因素的不同组合会产生不同的服务器负载等级。记住,随着服务器上负载的增加,吞吐量会不断攀升,直到到达一个点。
    随着负载的增加,系统吞吐量的曲线(单位:页面/秒)

      注意,吞吐量以稳定的速度增长,然后在某一个点上稳定下来。

      在某一点上,执行队列开始增长,因为服务器上所有的线程都已投入使用,传入的请求不再被立即处理,而是放入队列中,当线程空闲时再处理。


    随着负载的增加,系统执行队列长度的曲线

      注意,最初的一段时间,执行队列的长度为零,然后就开始以稳定的速度增长。这是因为系统中的负载在稳定增长,虽然最初系统有足够的空闲线程去处理增加的负载,最终它还是不能承受,而必须将其排入队列。

      当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限。但是,随着服务器负载的继续增长,系统的响应时间也随之延长,虽然吞吐量保持稳定。


    随着负载的增加,系统中两个事务的响应时间曲线

      注意,在执行队列开始增长的同时,响应时间也开始以递增的速度增长。这是因为请求不能被及时处理。

      为了获得真正可再现的结果,应该将系统置于相同的高负载下。为此,与服务器通信的虚拟用户应该将请求之间的考虑时间设为零。这样服务器会立即超载,并开始构建执行队列。如果请求(虚拟用户)数保持一致,基准测试的结果应该会非常精确,完全可以再现。

      您可能要问的一个问题是:“如何度量结果?”对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。这称为“flat”测试。


    flat测试的情况(所有的用户都是同时加载的)

      与此相对应的是“ramp-up”测试。


    ramp-up测试的情况(在测试期间,用户以稳定速度(每秒x个)增加)

      ramp-up测试中的用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。因此,flat运行是获得基准测试数据的理想模式。

      这不是在贬低ramp-up测试的价值。实际上,ramp-up测试对找出以后要运行的flat测试的范围非常有用。ramp-up测试的优点是,可以看出随着系统负载的改变,测量值是如何改变的。然后可以据此选择以后要运行的flat测试的范围。

      Flat测试的问题是系统会遇到“波动”效果。


     一次flat测试中所测得的系统吞吐量的曲线(单位:页面/秒)

      注意波动的出现,吞吐量不再是平滑的。

      这在系统的各个方面都有所体现,包括CPU的使用量。


    一次flat测试中所测得的系统CPU使用量随时间变化的曲线

      注意,每隔一段时间就会出现一个波形。CPU使用量不再是平滑的,而是有了像吞吐量图那样的尖峰。

      此外,执行队列也承受着不稳定的负载,因此可以看到,随着系统负载的增加和减少,执行队列也在增长和缩减。


    一次flat测试中所测得的系统执行队列的曲线

      注意,每隔一段时间就会出现一个波形。执行队列曲线与上面的CPU使用量图非常相似。

      最后,系统中事务的响应时间也遵循着这个波动模式。


    一次flat测试中所测得的系统事务的响应时间

      注意,每隔一段时间就会出现一个波形。事务的响应时间也与上面的图类似,只不过其效果随着时间的推移逐渐减弱。

      当测试中所有的用户都同时执行几乎相同的操作时,就会发生这种现象。这将会产生非常不可靠和不精确的结果,所以必须采取一些措施防止这种情况的出现。有两种方法可以从这种类型的结果中获得精确的测量值。如果测试可以运行相当长的时间(有时是几个小时,取决于用户的操作持续的时间),最后由于随机事件的本性使然,服务器的吞吐量会被“拉平”。或者,可以只选取波形中两个平息点之间的测量值。该方法的缺点是可以捕获数据的时间非常短。

    性能规划测试

      对于性能规划类型的测试来说,其目标是找出,在特定的环境下,给定应用程序的性能可以达到何种程度。此时可重现性就不如在基准测试中那么重要了,因为测试中通常都会有随机因子。引入随机因子的目的是为了尽量模拟具有真实用户负载的现实世界应用程序。通常,具体的目标是找出系统在特定的服务器响应时间下支持的当前用户的最大数。例如,您可能想知道:如果要以5 秒或更少的响应时间支持8,000个当前用户,需要多少个服务器?要回答这个问题,需要知道系统的更多信息。

      要确定系统的容量,需要考虑几个因素。通常,服务器的用户总数非常大(以十万计),但是实际上,这个数字并不能说明什么。真正需要知道的是,这些用户中有多少是并发与服务器通信的。其次要知道的是,每个用户的“考虑时间”即请求间时间是多少。这非常重要,因为考虑时间越短,系统所能支持的并发用户越少。例如,如果用户的考虑时间是1秒,那么系统可能只能支持数百个这样的并发用户。但是,如果用户的考虑时间是30秒,那么系统则可能支持数万个这样的并发用户(假定硬件和应用程序都是相同的)。在现实世界中,通常难以确定用户的确切考虑时间。还要注意,在现实世界中,用户不会精确地按照间隔时间发出请求。

      于是就引入了随机性。如果知道普通用户的考虑时间是5 秒,误差为20%,那么在设计负载测试时,就要确保请求间的时间为5×(1 +/- 20%)秒。此外,可以利用“调步”的理念向负载场景中引入更多的随机性。它是这样的:在一个虚拟用户完成一整套的请求后,该用户暂停一个设定的时间段,或者一个小的随机时间段(例如,2×(1 +/- 25%)秒),然后再继续执行下一套请求。将这两种随机化方法运用到测试中,可以提供更接近于现实世界的场景。

      现在该进行实际的容量规划测试了。接下来的问题是:如何加载用户以模拟负载状态?最好的方法是模拟高峰时间用户与服务器通信的状况。这种用户负载状态是在一段时间内逐步达到的吗?如果是,应该使用ramp- up类型的测试,每隔几秒增加x个用户。或者,所有用户是在一个非常短的时间内同时与系统通信?如果是这样,就应该使用flat类型的测试,将所有的用户同时加载到服务器。两种不同类型的测试会产生没有可比性的不同测试。例如,如果进行ramp-up类型的测试,系统可以以4秒或更短的响应时间支持 5,000个用户。而执行flat测试,您会发现,对于5,000个用户,系统的平均响应时间要大于4秒。这是由于ramp-up测试固有的不准确性使其不能显示系统可以支持的并发用户的精确数字。以门户应用程序为例,随着门户规模的扩大和集群规模的扩大,这种不确定性就会随之显现。

      这不是说不应该使用ramp-up测试。对于系统负载在一段比较长的时间内缓慢增加的情况,ramp-up测试效果还是不错的。这是因为系统能够随着时间不断调整。如果使用快速ramp-up测试,系统就会滞后,从而报告一个较相同用户负载的flat测试低的响应时间。那么,什么是确定容量的最好方法?结合两种负载类型的优点,并运行一系列的测试,就会产生最好的结果。例如,首先使用ramp-up测试确定系统可以支持的用户范围。确定了范围之后,以该范围内不同的并发用户负载进行一系列的flat测试,更精确地确定系统的容量。

    渗入测试

      渗入测试是一种比较简单的性能测试。渗入测试所需时间较长,它使用固定数目的并发用户测试系统的总体健壮性。这些测试将会通过内存泄漏、增加的垃圾收集(GC)或系统的其他问题,显示因长时间运行而出现的任何性能降低。测试运行的时间越久,您对系统就越了解。运行两次测试是一个好主意——一次使用较低的用户负载(要在系统容量之下,以便不会出现执行队列),一次使用较高的负载(以便出现积极的执行队列)。

      测试应该运行几天的时间,以便真正了解应用程序的长期健康状况。要确保测试的应用程序尽可能接近现实世界的情况,用户场景也要逼真(虚拟用户通过应用程序导航的方式要与现实世界一致),从而测试应用程序的全部特性。确保运行了所有必需的监控工具,以便精确地监测并跟踪问题。

    峰谷测试

      峰谷测试兼有容量规划ramp-up类型测试和渗入测试的特征。其目标是确定从高负载(例如系统高峰时间的负载)恢复、转为几乎空闲、然后再攀升到高负载、再降低的能力。

      实现这种测试的最好方法就是,进行一系列的快速 ramp-up测试,继之以一段时间的平稳状态(取决于业务需求),然后急剧降低负载,此时可以令系统平息一下,然后再进行快速的ramp-up;反复重复这个过程。这样可以确定以下事项:第二次高峰是否重现第一次的峰值?其后的每次高峰是等于还是大于第一次的峰值?在测试过程中,系统是否显示了内存或 GC性能降低的有关迹象?测试运行(不停地重复“峰值/空闲”周期)的时间越长,您对系统的长期健康状况就越了解。

  • 常用的功能测试方法

    Spark.lee 发布于 2006-12-08 11:49:57

    常用的功能测试方法

    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:
    1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。
    2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。
    3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。
    4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
    6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
    7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
    8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致
    9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
    10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.
    11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.
    12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.
    13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。
    14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.
    15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.
    16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.
    17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。
    18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*
    19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
    20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.
  • 设计功能和界面测试用例

    Spark.lee 发布于 2006-12-07 17:26:08

    设计功能和界面测试用例


    1.1 文本框、按钮等控件测试

    1.1.1 文本框的测试

    如何对文本框进行测试

     a,输入正常的字母或数字。
     b,输入已存在的文件的名称;
     c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;
     d,输入默认值,空白,空格;
     e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
     f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
     g,输入特殊字符集,例如,NUL及\n等;
     h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
     i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示

    在测试过程中所用到的测试方法:

     1,输入非法数据;
     2,输入默认值;
     3,输入特殊字符集;
     4,输入使缓冲区溢出的数据;
     5,输入相同的文件名;
    命令按钮控件的测试

    测试方法:

     a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;
     b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
     c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;
    单选按钮控件的测试

    测试方法:

     a,一组单选按钮不能同时选中,只能选中一个。
     b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;
     c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;
    up-down控件文本框的测试

    测试方法:

     a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;
     b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
     c,直接输入超边界值,系统应该提示重新输入;
     d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试;
     e,输入字符。此时系统应提示输入有误。
    组合列表框的测试

    测试方法:

     a,条目内容正确,其详细条目内容可以根据需求说明确定;
     b,逐一执行列表框中每个条目的功能;
     c,检查能否向组合列表框输入数据;
    复选框的测试

    测试方法:

     a,多个复选框可以被同时选中;
     b,多个复选框可以被部分选中;
     c,多个复选框可以都不被选中;
     d,逐一执行每个复选框的功能;
    列表框控件的测试

    测试方法:

     a,条目内容正确;同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;
     b,列表框的内容较多时要使用滚动条;
     c,列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;
    滚动条控件的测试

    要注意一下几点:

     a,滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如,word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;
     b,拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
     c,单击滚动条;
     d,用滚轮控制滚动条;
     e,滚动条的上下按钮。
    各种控件在窗体中混和使用时的测试

     a,控件间的相互作用;
     b,tab键的顺序,一般是从上到下,从左到右;
     c,热键的使用,逐一测试;
     d,enter键和esc键的使用;
    在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。

    ps:密码输入框测试时要特别注意进行字母大写输入的测试。

    查找替换操作
     案例演示:打开word中的"替换"对话框
     测试本功能有通过测试和失败测试两种情况
     通过测试:

     1,输入内容直接查找,或查找全部
     2,在组合框中寻找已经查找过的内容,再次查找并确认文档的内容正确,如,已经查找过"测试用例",再次进入不用重新输入查找内容,直接在文档中搜寻就可以.

    失败测试:
     1,输入过长或过短的查询字符串.如,假设查询的字符串长度为1到255,那么输入0,1,2,256,255和254进行测试;
     2,输入特殊字符集,如,在word中.^g代表图片,^代表分栏符,可以输入这类特殊字符测试;

    替换测试大体相同.
     关于编辑操作窗口的功能测试的用例:
     1,关闭查找替换窗口.不执行任何操作,直接退出;
     2,附件和选项测试.假如,设定"精确搜寻","向后"搜索等附件选项等等来测试;
     3,控件间的相互作用.如,搜寻内容为空时,按钮"搜寻全部","搜寻","全部替换","替换"都为灰色.
     4,热键, Tab键.回车键的使用.

    插入操作
     1,插入文件
     测试的情况
     a,插入文件;
     b,插入图像;
     c,在文档中插入文档本身;
     d,移除插入的源文件;
     e,更换插入的源文件的内容;

    2,链接文件
     测试方法:
     a,插入链接文件;
     b,在文档中链接文档本身;
     c,移除插入的源文件;
     d,更换插入的源文件的内容.

    3,插入对象
     要测试的内容
     a,插入程序允许的对象,如,在word中插入excel工作表;
     b,修改所插入对象的内容.插入的对象仍能正确显示;
     c,卸载生成插入对象的程序,如,在word中插入excel工作表后卸载excel,工作表仍正常使用.

    编辑操作
     编辑操作包括剪切,复制,粘贴操作.

    测试剪切操作的方法
     a,对文本,文本框,图文框进行剪切;
     b,剪切图像
     c,文本图像混合剪切
     复制操作方法与剪切类似.

    测试时,主要是对粘贴操作的测试,方法是:
     a,粘贴剪切的文本,文本框及图文框;
     b,粘贴所剪切的图像;
     c,剪切后,在不同的程序中粘贴
     d,多次粘贴同一内容,如,剪切后,在程序中连续粘贴3次;
     e,利用粘贴操作强制输入程序所不允许输入的数据.

    界面测试用例的设计方法
     1,窗体
     测试窗体的方法:
     a,窗体大小,大小要合适,控件布局合理;
     b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
     c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;
     d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;
     进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;

    2,控件
     测试方法:
     a,窗体或控件的字体和大小要一致;
     b,注意全角,半角混合
     c,无中英文混合.

    菜单

    进行测试时要注意
     a,选择菜单是否可以正常工作,并与实际执行内容一致;
     b,是否有错别字:
     c,快捷键是否重复;
     d,热键是否重复;
     e,快捷键与热键操作是否有效
     f,是否存在中英文混合
     g,菜单要与语境相关,如,不同权限的用户登陆一个应用程序,不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;
     h,鼠标右键快捷菜单

    特殊属性
     1,安装界面应有公司介绍或产品介绍,有公司的图标
     2,主界面及大多数界面最好有公司图标
     3,选择"帮助"->"关于"命令,应 看见相关版权和产品信息
Open Toolbar