将"测试"进行到底!~!

发布新日志

  • 面试题----软件测试的80-20原则(转载ysnliy的Blog)

    2008-04-11 18:50:08

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

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

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

    为效益而测试

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

    缺陷的必然性

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

    软件测试必须有预期结果

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

    软件测试的意义 - 事后分析 (个人觉得这一点非常重要)

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

    结论:

    软件测试是一个需要 “ 自觉 ” 的过程,作为一个测试人员,遇事沉着,把持尺度,从根本上应对软件测试有着正确的认识,希望本文对读者对软件测试的认识有所帮助

  • 软件测试面试题目一

    2008-04-05 23:01:35

    1.阶段评审与同行评审的区别?
    参考答案:
        同行评审目的:发现小规模工作产品的错误,只要是找错误;
        阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

        同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
        阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

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

        同行评审时间:一小部分工作产品完成
        阶段评审时间: 通常是设置在关键路径的时间点上

    2.什么是软件测试及其目的?
    参考答案:
       软件测试是使用人工或自动化手段来运行或测定某个系统的过程.其目的是:在于检验它是否能满足规定的需求或是弄清楚预期结果与实际结果之间的差别.
    3.简述集成测试的过程?
    参考答案:
        集成测试流程:
         在完成软件的概要设计后,即开始制定集成测试计划-》设计集成测试用例和测试过程-》实施集成测试,设计所需驱动和桩-》执行集成测试,记录测试结果-》评估集成测试,根据测试结果评估此次测试,生成评估报告文档。(驱动或桩函数是做单元测试时要用到的.驱动函数是所测4函数的主程序,它接收测试数据,并把数据传送给所测试单元,最后再输出实测结果.当被测单元能完成相关功能时,也可以不要驱动单元.
    桩,是用来代替所测试单元调用的子单元
    .)
    4.白盒测试有那几种方法:代码审查,语句覆盖,判定覆盖,条件覆盖,组合覆盖,基本路径,形式化方法,符号执行
    5.简述测试目标有哪些类型?
    参考答案:
        功能测试,负载测试,性能测试,安全性测试,恢复测试,安装测试,兼容性测试,可用性测试,可靠性测试,国际化测试,本地化测试.
    6.怎么样做好文档测试?
    参考答案:
        文档的测试主要采用静态测试即走查的方法,可以依据的是同行评审,列出一个检查表,然后大家一起坐下来对着被测试的文档进行阅读排错。通常文档都很长,而一般的建议是一次同行评审步的时间不能超过两个小时,因此可以对被测试文档执行测试时,列个计划,将总的文档分解,按照计划多次对被测试的文档进行走查。
    7.测试结束的标准是什么?
    参考答案:
    从项目周期看:
    1、超出了所分配的测试时间;
    2、用尽了分配的测试资源;
    3、到达了某一个固定的里程碑(如合同规定的交付日期)。

    从测试角度看:
    1、测试需求覆盖率;
    2、测试代码覆盖率;
    3、测试用例度量;
    4、缺陷检查度量
    8.Alpha 测试与Beta测试的区别?
    参考答案:
        Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。

    Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。

    9.系统测试计划是否需要同行审批,为什么
    参考答案:
    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

    10.比较负载测试,容量测试和强度测试的区别?
    参考答案:
    负载测试:在一定的工作负荷下,系统的负荷及响应时间。
    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
    容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

Open Toolbar