发布新日志

  • [转]测试老鸟,竟然一个月没发现bug

    2009-07-21 10:34:52

    测试老鸟,新项目,竟然一个月没发现bug,现在你是测试manager,抑或你是这个老鸟??

    呵呵。我觉得这个鸟还不是很老。。。。
    理由如下:
    1. 找不到问题不是没有问题,而是没有发现问题的途径
    2. 受限于测试范围、方法、技术等原因,发现不到新问题——我认为完全有可能
    3. 行业领域的知识有限,导致无法发现问题,所谓老鸟,应是在行业领域中有一定的认知度的人士,如果涉足不深入,往往会误导其执行行为。

    如果我是PM,下一步动作就是:
    1. 重新审查老鸟的测试报告,从范围、设计到最后的bug提交,看看流程是否存在漏洞,方法是否存在问题,方案是否存在缺陷?
    2. 和老鸟谈谈,听听其对项目的看法和找不到bug原因的解释;
    3. 和项目的客户方交换意见,听取他们的改进意见和需求说明;
    4. 如果以上确认下来没有问题,配合客户方的其他项目(若存在与其他项目的交互接口)进行版本封闭,做上线前准备。
     
    很不幸,如果我是那只鸟,那么这样
    1. 自省。回顾所做过的工作,和周围的同事及客户沟通对项目的意见
    2. 自查。对过往的工作做个检查,确认流程和方法上的完整性和正确性
    3. 变换角度重试。这个过程需要获得其他同事的支持,尤其是那些能对项目提出问题的同事,从他们那里获取新的思路和切入点。

    如果以上三条满足还是发现不了问题,恭喜你,你找到了一个不错的团队!   :)
  • 如何重现测试中不再出现的bug?

    2008-11-17 14:47:39

    文章来自以下链接:
    http://skinapi.cnblogs.com/archive/2005/08/07/209426.html     
          从标题来看大家可能会觉得晕,这里说到的不可复现是指这些Bug有时出现,有时候不出现。相信大家在测试过程中肯定遇到过这种Bug,不少这种不可复现的Bug定位起来非常困难,可能很长时间都不能得到解决。能否复现这些不可复现的Bug成为大家关注的一个话题,最近国外的测试专家James Bach、Jonathan Kohl等对这个话题进行了一些探讨,这里把他们的一些思路理出来和大家分享。
          要想复现不可复现的Bug,需要先提到一个概念就是ET(Exploring Test),也就是探索式测试,这种测试方法是由James Bach首先提出来的,在所掌握的被测对象的信息不是很充分的情况下,这是一种很有效的测试方法,如果大家感兴趣,我再整理一篇ET的文章出来。
          在给大家阐述如何复现不可复现的Bug的思路之前,先说说为什么要复现这些不可复现的Bug(废话两句^_^)。对于整个项目或者产品而言,如果这些不可复现的Bug是很严重的Bug,比如导致系统崩溃等,如果不能及时、准确的定位和解决,最终发布出来的软件到达用户手中后,一旦出现势必会影响软件已经公司在用户心中的形象,严重的会“迫使”用户选择竞争对手的产品,这些显然都是公司所不愿看到的。而对于测试人员而言,出现了这些不可复现的Bug,实际上是一次很好的锻炼和提高机会,如果只是提交缺陷报告将这个大皮球踢给开发人员,不仅丧失了一次提高测试水平的机会,还有可能破坏和开发人员之间的关系。
          废话完了,进入正题。当出现不可复现的Bug时,大家可以从以下五个方面来进行考虑:
    1、被测对象的版本信息
          我测试的到底是哪个版本,这主要是有两个作用:一是确认我测试的是正式的软件版本,如果不是就先记录下该问题,然后选择正式的版本进行测试(开发人员基于尝试的一次非正规的修改可能会导致不可复现的Bug);二是可以和其它版本进行对比,如果其它的版本没有类似的问题,就可以去对比这两个版本之间的区别。
    2、环境
          这里的环境是指出现不可复现的Bug时所对应的测试环境等,比如测试所用的计算机,如果出现不可复现的Bug,那我换一台机器是不是还会出现类似的问题,也就是说通过环境的改变来进一步搜集不可复现Bug的相关信息。
    3、模式
          这里的模式是指我对这个Bug如何出现的一个理解,先给这个Bug设定一个模式,比如是不是数据库通信中断,然后再进行测试,收集更多的信息去修改和完善这个模式,这样不断进行,最终直到Bug能完全复现为止,这个时候只要使用这个模式就可以复现出Bug了。
    4、人
          这里提到的人有两个含义:一是测试是由人来进行的,人的操作、人的思维方式会有不同,通过分析这些信息也有可能找到这些不可复现的Bug的蛛丝马迹;二是想复现不可复现的Bug,往往需要多个人之间的相互协作,比如测试人员、开发人员等,通过大家的沟通和协作就能更容易去复现了。
    5、测试工具
          通过一些debug工具或者log工具等搜集内存等信息,根据这些信息来进行分析,找出不同信息之间的共同点,比如某一块内存始终都会被改写等,通过这种方式来去复现Bug。
          上面的五个方面都是和ET的思想紧密相关的,通过不断的测试和不断的信息收集和分析,逐步的把模糊的、不确定的测试变成清晰的、确定的测试,这样就能复现那些不能复现的Bug了。考虑信息时可以从以上五个方面来进行考虑。
          相应的文章链接:
    http://www.kohl.ca/blog/archives/000115.html
    http://blackbox.cs.fit.edu/blog/james/archives/000197.html

  • 没有需求文档的时候如何来设计测试用例?

    2008-07-12 14:34:31

    1.根据客户的功能点整理测试需求追朔表:
    一般的客户都要把要开发软件的功能点写成一个表格交给市场部,让市场部门转交研发部。所以客户的功能点是编写测试用例一个最最重要的依据。

    2.根据开发人员的Software Specification List整理我们的功能测试点:
    一般来说,开发人员实现一个功能都要把该功能分成几个子模块来实现,所以Software Specification List也是我们参考的另一个比较重要的依据。

    3.开展项目跨部门讨论会:
    可以抽出时间,叫市场部的项目负责人、产品经理、项目经理、软件开发经理和软件开发人员,分别讲讲他们对整个产品的认识和设计模式,对每个功能点的理解和认识,理顺思路,达成共识,测试人员负责记录,测试Leader负责整理汇总,形成测试的部分参考文档。

    4.测试人员整理用例需求疑问递交项目组和客户代表回复:
    测试人员根据项目讨论会后的理解,测试过程中可能碰到的问题(如:边界值、输入数据类型等等)和需求不明确的问题,整理用例需求疑问,让相关的模块负责人在“用例需求疑问”表格中回复,并给出详细解释和说明。

    5.项目内部用例评审:
    测试人员根据对项目的理解,编写测试用例要点,测试组内部评审修改后,可以召集项目组的成员,帮助Review一下,然后进行修改。经过多次修改和评审以后,测试用例要点可能会更加全面一些。

    6.邮件和客户代表确认部分争议问题:
    测试人员与开发人员、项目组成员,在需求问题上讨论有时候观点不一致,各说各有理,这种情况下最好把争议问题写成邮件,发给客户让客户来拍板,确定那种需求合理,到底如何做?抄送项目组的全体成员,方便大家都了解客户的意见。最后编写测试用例的时候,以客户的邮件内容为准。

    7.项目Demo和部分已开发系统:
    大部分的系统,由于没有需求,为了避免项目风险,开发方一般都要做成Demo,不断让客户确认后签字,不断展现新开发的功能,以达到吸引客户的目的。如果项目中有Demo,Demo也是参考标准。如果什么都没有,那已经开发的部分功能模块,要去随时让用户了解了解,并提出部分修改意见,也可以为我们熟悉系统提供部分依据。

    8.参考同行业和竞争对手的类似产品:
    假如说是做一个网上书店类似的网站,我们编写测试用例的时候,可以看看“当当网”,“China—pub”等等类似成熟相关的网站。很容易发现本公司产品的问题,无意识给产品添加了竞争力。对于竞争对手的了解一定不能够少。

    9.交叉模块的测试1.根据客户的功能点整理测试需求追朔表:
    一般的客户都要把要开发软件的功能点写成一个表格交给市场部,让市场部门转交研发部。所以客户的功能点是编写测试用例一个最最重要的依据。

    9.交叉模块的测试,最容易被人忽略:
    一般的产品,功能部分的交叉,即是说在A模块中设置了参数,在B模块和C模块中体现该参数的实际运用。比较难的如我们现在测试的“银行系统”中的交叉模块,还可能牵涉到不同的用户,3个以上的模块之间的调用。即是有了需求也很少写,同时也是需求编写的一个薄弱环节。这样的测试用例编写问题,一般初级测试工程师很难考虑全。对于有这种交叉功能的模块,必须要求项目组中的精兵强将,画出相关的调用关系图,表明调用关系,方便后面编写测试用例。

    10.可以使用电话、MSN、Skype等网络聊天工具咨询部分需求:
    我们做的产品,大多数的客户都在国外,测试经理也可以用这些网络聊天工具和客户确认部分需求疑问。不过要要事先越好时间,并注意异地的“时差”。

Open Toolbar