发布新日志

  • 《软件测试》读书总结

    2007-08-30 19:42:00

    利用两周时间,阅读了Ron Patton著的《软件测试》,这是一本讲解软件测试的入门书籍,本书借助Windows95/98windowsNT/2000附带的计算器、记事本和写字板等常用的小应用程序介绍了软件测试的通用方法。本书内容,包括了软件测试的基础知识,软件测试的基本和高级的技术,自动化测试,外国语言测试,计划和编制测试目标,报告发现的问题,评估测试目标和产品进度,以及测试和质量认证的区别。可以说涵盖了测试的各个方面,虽然对每部分内容都是很少的篇幅,但是,本书却用浅显易懂的概念定义,简单实用的例子,将软件测试看似深奥的知识体系清晰明了的讲解出来,就算是对软件测试一点概念也没有的人,读过此书以后,也会对软件测试是什么,软件测试需要哪些技能,软件测试有哪些方法,软件测试流程,软件测试相关的文档等知识体系有一个系统的,感性的认识。

    读过此书,使自己更清晰的认识到软件测试的理论体系,而在阅读的过程中,通过思考,能更透彻的理解软件测试知识,或者说,能够形成自己的一些理解,思考过后,还能知道自己需要延伸阅读的内容,这就是阅读此书的收获。这样说,似乎有点简单,分层次详细叙述如下。

        本书讲解的软件测试的知识都比较简单,很容易理解,但是,却涵盖了整个软件相关的知识体系,而且,本书对软件相关的概念定义清晰明白,而且比较权威,通过阅读本书,自己以前不能够理解的,或者理解偏差的关于软件测试的概念,都有了完整的认知,关于这个方面可以简单的举一个例子。

    此书关于软件缺陷的定义认为,符合下边5个规则的才能叫做软件缺陷。

    1.软件未达到产品说明书标明的功能。

    2.软件出现了产品说明书指明不会出现的错误。

    3.软件功能超出产品说明书指明范围。

    4.软件未达到产品说明书虽未指出但应达到的目标。

    5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。

         关于软件测试,很多书籍都是从软件质量的角度去阐述的,认为,软件如果正确实现了它所要求的功能,并且用户对该软件是满意的,那么该软件就是满足质量要求的,然后根据这个延伸来定义软件缺陷的。但在,在这里,关于软件缺陷的定义,却能够详细的将每一种情况都考虑到,无论怎么定义软件质量,只要软件当中出现了以上规则中的任意一条,则可以认为该软件是有缺陷的,如此,测试人员对软件缺陷就会有一个清晰的认知,而不会因为对软件缺陷的定义不同而出现不是缺陷的缺陷,或者遗留缺陷。

         本书解决了自己认知模糊,或者说,认知不清晰的关于软件测试的知识,主要有如下内容。

    1.     软件测试原则

    以前对软件测试原则没有概念,但是,通过阅读该书,知道了软件测试的一些原则。

    1. 完全测试是不可能的。因为:A.输入量太大;B.输出结果太多;C.软件实现途径太多;D.软件说明书没有客观标准。从不同角度看,软件缺陷标准不同。

    2. 软件测试是有风险行为。

    3. 测试无法显示潜伏的软件缺陷。

    4. 找到的软件缺陷越多,就说明软件缺陷越多。

    5. 用一种药,害虫都有抵抗力,程序也如此,如在螺旋开发模式中,每一个轮回都会对软件进行测试,几回合后,该发现的都发现了,找不到什么错误了。这要求我们必须不断编写不同的新测试程序,对程序的不同部分进行测试,以找到更多的缺陷。

    6. 并非所有的软件缺陷都能修复:A.没有足够的时间;B.不算真正的缺陷;C.修复风险太大;D.不值得修复

    7. 难以说清的软件缺陷

    8. 产品说明书不断变化:软件测试员必须想到产品说明书可能改变。

    9. 测试员做的工作不受欢迎,因为工作就是挑错!所以我们要懂得怎么和开发的相处:A.早点找出缺陷;B.控制情绪;C.多交流,不要总是报告坏消息。

    10. 软件测试是一项讲究条理的技术专业。

    在以上关于软件测试的原则当中,有些内容,我是知道的,比如不能完全测试,测试员做的工作不受欢迎等,但是,对这些原则的认识却不是在软件测试实质这个内容体系当中认知的,而是在阅读与软件测试相关文章的时候,孤立的认识的,这样孤立的认识,对软件测试并没有什么实质的内容,因为,就算不是从事软件测试的人,也大概知道这些内容。在本书中,作者以单独的一章详细的介绍了软件测试的实质,说明了测试的原则,可以说是对软件测试员的一个提纲性的指导,明确了软件测试人员在测试的时候需要注意的内容,也使得软件测试人员知道了软件测试中哪些能测,哪些不能测,哪些重点测,哪些不用测,这是很多关于软件测试的书中无法企及的。

    2.     数据测试

    本书在关于黑盒测试方法的讲解中,并没有单独去讲解每一种测试方法,而是将这些测试方法结合到以前讲解,因为在实际的测试当中,也不是孤立的去使用一种测试方法,而是多种测试方法结合使用。

    本书以软件测试中的数据测试为讲解对象,讲解了数据测试中,关于边界值如何确定的很多方法,其中的很多细节都是我通过该书,才了解的,叙述如下。

    测试边界线  次边界条件  2的乘方  ASCLL   默认、空白、空值、零值和无

             非法、错误、不正确的和垃圾数据

             这些关于边界值划分的细节当中,2的乘方  ASCLL,这两个内容在阅读书之前完全没有概念,但是通过此书的讲解,可以明白的理解,虽然这两个方法涉及到了程序相关的内容,但是,作为一个黑盒测试方法细节,能够开拓测试用例的设计方式。

    3.     检查代码

    检查代码是白盒测试的一个方法,自己虽然知道该方法,但是,检查代码的时候具体检查什么?作者给出来详细的列表,如下:

    1.数据引用错误数据引用错误是指使用未经正确地初始化的变量、常量、数组、字符串或记录。

    2.数据声明错误

    数据声明错误是指不正确地声明或使用变量和常量。

    3.计算错误

    计算错误是指基本的数学逻辑问题。

    4.比较错误

    小于、大于、等于、不等于、真、假、比较和判断错误很可能是边界条件问题。

    5.控制流程错误

    控制流程错误是指编程语言中循环等控制结构未按预期方式工作,通常由计算或者比较错误直接或间接造成。

    6.子程序参数错误

    子程序参数错误的来源是软件子程序不正确地传递数据。

    7.输入/输出错误

    输入/输出错误包括文件读取、接受键盘或鼠标输入以及向输出设备写入错误等。

    8.其他错误

    这里仅仅列出了标题,作者对每个清单都有详细的描述,结合这个清单,测试员可以很明白的知道,在代码审查的时候该做什么。

    4.     外国语言测试

    关于外国语言测试,在以前的阅读当中并没有接触到,自己的理解单单就是翻译的问题,但是在本文中,作者不但给出了外国语言测试中,关于翻译应该测试的问题,还给出了本地化问题,配置和兼容问题的介绍,使得自己对外国语言测试有了了解,而且,可以在当前的工作当中,有意识的向这个方面考虑

    5.     易用性测试

    对于易用性测试每个人都有自己的理解,不能说是谁对谁错,作者却从细节问题上去描述,以清单的方式对关于易用性测试涉及到的内容进行描述,使得看过此书的人知道如何测试易用性,进行易用性测试要找什么,虽然很简单,但是,如果没有作者的描述,测试员对易用性的测试可能就完全按照自己想的去进行,错误和遗漏就在所难免了。

    6.     文档测试

        包括文档测试的类型,文档测试的要点,文档测试的实质

    7.     网站测试

           包括网站测试的方法,网站的配置和兼容性测试,网站的易用性测试

    以上内容都是自己通过本书学习到的新知识,本书描述的其他知识,自己在以前的学习当中都有过了解和掌握,但是,在学习过程中,本书的学习缺十分的轻松,并不需要如何去思考,如何去理解,只要你看了作者的描述,那么你就可以理解作者所写的内容了。总结一下,作者能够如此简单明了的讲述知识体系,主要有以下几个独特的方法。

    1.     提问

    每章开始都有关于本章内容的重点介绍,重点内容介绍中很多并不是叙述而是提问,通过提问,引导读者思考,通过提问,读者就知道本章要解决哪些问题,而且,这样的提问方式,也是读者想要问的问题,作者把读者问的问题列出来,然后,在正文中,又以回答问题的方式回答,这样的一问一答式,却能使读者很好的理解文章。

    2.     清单

    软件测试的每个主题会细分为多个小主题,而每个小主题可能又会包含多个方面,而作者在讲解的时候,层层描述,结合前面讲解的提问方式,将各个主题所包含的所有内容都一一讲解,最重要的是,作者以清单的方式列出测试的每个方面,比如,关于网站易用性测试,作者将网站易用性测试涉及的各个方面以清单的方式列出,而阅读此书,就会发现几乎每一章都有这样的清单,通过清单,读者很容易知道对于这个主题,该做什么,不该做什么,重点做什么,一目了然。

         作者写书以这样的方式去写,那么在测试的时候我们也可以按照这样的方式去测,应该要测什么,测试的时候用什么方法,这些方法有什么优缺点,使用这些方法的时候有什么限制等等,然后给出这些问题的答案,通过这样的一问一答式,关于测试的各个方面都能够详细的考虑,然后,对每个测试的方面,都给出需要测试的清单,如此测试就是一个有条理的工作,就不会遗漏什么或者浪费什么。

         这只是我根据本书而对测试做的一些思考,在实际的时候,当然还是需要按照测试的流程来进行,其实,如果按照以上的方式来,也就是按照测试流程进行了。

    当然,如果我需要写一些工作心得,写一些工作经验相关的文章,我也会借鉴作者的写作方式,将所描述的内容条理化,简单化。让读者愿意读,容易理解。

    就实际来说,本书讲解的内容,对于没有从事过测试工作的人来说,是十分实用的,读过本书后,可以知道软件测试的概念,知道怎么去进行测试,知道测试的时候应该测试哪些内容,知道测试完以后还有哪些工作要去做。这本书相当于是一本指导书,指导你如何快速的进入软件测试这个工作当中,并能够完成测试工作。

    但是,本书讲解的内容也有缺陷,通过本书的学习,你可以开始实际的测试工作了,这个测试工作是别人告诉你测试哪个软件,你可以利用本书讲解的内容去测试,如果没有人告诉你测试哪个软件,也就是说,如果没有具体的工作内容,也许你就不知道应该怎么去做了,我认为这就是本书的一个缺陷。

    本书没有讲解风险评估的内容,而对于测试计划和测试用例讲解并没有明确告诉读者怎么去做,或许这不是本书的内容,因为这些都属于资深测试人员或者测试组长了解的内容。本书作为一个入门书,就是指导新手进入测试,完成测试,如果从这个方面来书,本书是成功的。

    读过本书,知道了应该知道的内容,清晰了已经模糊的内容,了解了还需要加强的内容。做个总结,梳理一下,以后的工作当中就会有更明确的方向。

Open Toolbar