软件工程——理论、方法与实践 之 软件测试
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,你就是软件中有错误,这是这些错误导致了软件开发在成本、进度和质量上的失控。
有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人来做的工作都不会是完美无缺的。问题在于如何去避免错误的产生和消除已经产生的错误。使程序中的错误密度达到尽可能低的程度。为把握软件开发各个环节的正确性,需要进行各种确认和验证工作。验证和确认是贯穿软件生命周期的规范化评估方法。
广义上讲,测试是指软件产品生存周期内所有的检查、评审和确认活动,如设计评审、系统评审、系统测试。狭义上讲,测试是对软件产品质量的检测和评价,它一方面检查软件产品质量中存在的问题,同时对产品进行客观评价。
软件产品在交付使用之前,一般需要经过单元测试、集成测试、确认测试和系统测试。
软件测试的方法是多种多样的,可以从不同的角度加以分类。从是否需要执行被测试软件的角度来看,可分为静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。
面向对象是目前一种主流的软件开发技术,已经基本代替了面向过程开发方法,被看成是解决软件危机的一种先进技术。但是无论采取什么样的方法开发软件,对于软件高质量的要求不会改变,因而软件测试的目标也不会改变。
软件测试在软件开发的整个过程中占有非常重要的位置,如同其他的过程和活动一样,测试也有其专门的CASE工具。目前市场上主流的测试工具主要覆盖以下几个方面:功能测试工具、性能测试工具、缺陷管理工具、测试管理工具。包括Junit、LoadRunner。