zoukankan      html  css  js  c++  java
  • 软件测试的艺术(读书笔记1)

    最近一直在看《软件测试的艺术》,以下是我关于本书框架划分

    第一部分 软件测试经济和心理学问题及测试原则

      包括第1章和第2章

    第二部分 软件测试基础

      包括第4章 测试用例的设计;第5章 单元(模块)测试;第6章 更高级别的测试。

    第三部分 软件测试中的人工测试方法

      包括第3章 代码检查、走查与评审;第7章 用户体验测试

    第四部分 开发中的调试和测试思想

      第8章 调试;第9章 极限测试思想

    第五部分 软件测试运用场景

      包括第10章 互联网应用测试;第11章的移动应用测试。

     下面先对第一部分进行简要介绍

    第一部分 软件测试经济和心理学问题及测试原则

      首先,作者让读者做一个小测验,通过测试一个简单的程序,来设计测试用例,进而说明测试不是一件容易的事;然后,作者分别从软件测试的心理学和经济学方面对软件测试进行探讨;最后,作者归纳出一系列重要的测试指导原则。

      因为设计测试用例和进行软件测试并不是一件容易的事情,所以需要在心理学和经济学上进行进行考虑。在心理上,测试人员需要有正确的态度,在某些情况下,测试人员的态度可能比实际的测试过程本身还要重要;在经济上,对复杂的应用程序进行完全的测试,将耗费大量的时间和人力资源,这在经济上时不可行的。

      1、软件测试的心理学

      软件测试不是证明不存在错误的过程;软件测试不是证明软件能够正确完成其预定的功能;软件测试不是建立“软件做了其应该做的”信心的过程。

      软件测试是为发现错误而执行程序的过程。要假设程序中隐藏着错误(对所有的程序都成立),然后测试程序,发现尽可能多的错误。

      要通过测试程序增加程序的价值,而增加程序的价值是指提高了程序的可靠性或质量。提高了程序的可靠性,是指找出并最终修改了程序的错误。

      人类的行为总是倾向于具有高度目标性,确立一个目标有重要心理学影响。如果我们的目的是证明程序中不存在错误,就会倾向于选择较少导致程序失效的测试数据;如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能更多的发现问题。

      一次成功的测试可以从两方面进行确定:1)能够发现程序中隐藏的错误;2)能够最终确定没有可以查出的错误;

      软件测试应该建立某种程度的信心:软件做了其应该做的,未做其不应该做的。

      2、软件测试的经济学

      因为软件测试不可能发现所有的错误,所以需要在测试前建立某些策略,应对测试的经济学挑战。策略包括:黑盒测试和白盒测试。

      1)黑盒测试:将程序看做一个黑盒子进行测试,而不需要了解程序内部逻辑。

      测试数据来源于软件规范,比如需求说明,需求分析,软件说明等。因为黑盒测试可以将所有的输入条件作为测试用例,但穷举所有的输入条件是无法实现的,所以就需要通过设计有限的测试用例,最大程度地提高发现问题的数量,以取得最好的测试效果。常见黑盒测试用例设计方法:等价类划分方法,边界值分析方法,错误猜测法等。

      2)白盒测试:通过对程序逻辑结构进行检查,从中获取测试数据。

      将程序中每条语句至少执行一次,也称为穷举路径测试。白盒测试也不完善,会出现三个问题:1.不能保证程序符合设计规范;2.不能发现程序缺少那些路径;3.不会暴露数据敏感错误。

      常用白盒测试用例设计方法:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,多重条件覆盖。

      综上,需要将黑盒测试和白盒测试结合起来,形成一个合理但不十分完美的测试策略,才能尽可能的发现程序中的问题。

      3、软件测试的原则

      1)测试用例中需对预期输出或结果进行定义

        用例设计中,只有对预期输出进行实现定义,才能引导测试人员对输出进行检查,如果没有对输出进行定义,你就不知道你测试的结果到底正确不正确。最好定义两个部分:a) 输入数据的描述;b) 在输入数据下输出结果的精确描述;

      2)程序员应当避免测试自己编写的程序

        程序员对于自己编写的代码都有谜一般的自信,同时他们也可能会错误地理解软件规范和定义,所以让其他人来测试程序更有效。(注意和“调试”不能混为一谈,调试是修正已知的错误)

      3)编写软件的组织不应当测试自己编写的软件

        例如某个公司编写的软件应该交由第三方测试机构进行测试。

      4)应当彻底检查每个测试的执行结果

        认真核对每个测试结果,同定义的预期结果到底符合不符合。

      5)测试用例的编写需要考虑有效和预期输入情况,同时也应考虑无效和未预料到的输入情况

        有效输入和无效输入同时进行验证,更能发现程序中问题。

      6)检查程序应包括其应该做的,同时也要检查其做了不应该做的

      7)测试用例使用完后应保留下来,方便下次使用

        保留测试用例,目的是当程序其他模块改动后,可以进行回归测试。

      8)编写测试计划时不应假定不会发现错误

        测试,是为了发现错误而执行程序的过程。

      9)程序中某部分存在错误的可能性,与该部分已发现错误的数量成正比

        某个程序由两个模块组成,模块A发现了5个错误,模块B发现了1个错误,那么模块A相比模块B,存在更多错误的可能性。另一个说法是,错误总是聚集存在。这种现象告诉我们,为了使测试获得更大的成效,最好对这些容易存在错误的部分进行额外的测试。

        

      10)软件测试时一项极富创造性、极具挑战性的工作

      

  • 相关阅读:
    信息系统项目管理系列之十:项目人力资源管理
    信息系统项目管理系列之六:项目范围管理
    记大型商业软件<<国土档案管理信息系统>>之系统简介
    信息系统项目管理系列之九:项目质量管理
    ORACLE常见问题一千问(提供下载)(不怕学不成、就怕心不诚!)
    (推荐)(提供下载)ORACLE常见问题一千问(不怕学不成、就怕心不诚!)
    [推荐]ORACLE SQL:经典查询练手第四篇(不懂装懂,永世饭桶!)
    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
    [提供源码下载]在大型软件中用Word做报表:书签的应用(提供一种思路)
    (推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
  • 原文地址:https://www.cnblogs.com/chengabc/p/11215552.html
Copyright © 2011-2022 走看看