在过去半个世纪,软件获得了空前的发展,逐渐渗透到各个领域,从最早的科学计算、文字处理、数据库管理、银行业务处理到工业自动控制和生产、办公自动化、新闻媒体、通信、汽车、消费电子、娱乐等等,软件无处不在,改变了人类生活与生产方式。随着计算机软件在各行各业的普及应用,人们对软件质量的要求也越来越高,专业化和多样化的特点越来越显著。但同时,我们看到软件产业还不够成熟,软件质量状况不容乐观,软件在运行和使用过程中出现的问题还比较多。例如,2008年互联网web发展十大失败的事件中,其中90%的失败都是由质量问题造成的,与“宕机”、“停机”、“崩溃”等一系列严重的质量问题联系在一起。
软件质量一直是软件工程中的一个焦点,成为人们几十年来不断研究、探索的领域。为了改善软件质量,人们不仅从企业文化、软件过程模型、需求工程、设计模式等不同方面来获取有效的方法和最佳的实践,而且开始重视软件测试、在软件测试上有更多的考虑和投入。虽然质量是内建的,但软件测试依旧承担着非常重要的作用。软件测试自身也在发生变化,已经不再只充当门卫——在软件发布之前进行检验,而是正在成为一个持续的反馈机制,贯穿软件开发的整个过程,尽早地发现问题,降低开发成本,提高软件开发生产力。软件测试人员不再是软件开发的辅助人员,而是软件开发团队的主体之一、积极的参与者。从项目开始的第一天,测试人员就参与项目需求和设计的讨论、评审等各种活动,尽早发现软件需求定义和设计实现上的问题,及时发现软件项目中存在的质量风险。软件开发团队必须尽可能地在交付产品之前控制未来的质量风险,这就必然需要依赖于卓有成效的软件测试。将传统的程序测试的狭义概念扩展到今日业界逐渐认可的、广义的软件测试概念,测试涵盖了需求验证(评审)、设计验证(评审)等活动。软件测试贯穿整个软件生命周期,从需求评审、设计评审开始,就介入到软件产品的开发活动或软件项目实施中,和其它开发团队相互协作、相互补充,构成软件生命周期中的有机整体。
软件测试不是一项简单的工作,远比人们所直观想象的要复杂。高效、高质量地完成一个软件系统的测试,涉及的因素很多,也会碰到各种各样的问题,并且要在测试效率和测试风险之间找到最佳平衡点和有效的测试策略,这些都需要测试人员一一克服。要做好软件测试,不仅需要站在客户的角度思考问题,真正理解客户的需求,具有良好的分析能力和创造性的思维能力,完成功能测试和用户界面的测试,而且能理解软件系统的实现机理和各种使用场景,具有扎实的技术功底,通过测试工具完成相应的性能测试、安全性测试、兼容性测试和可靠性测试等更具挑战性的任务。软件测试主要目的是发现软件中的缺陷,坚持“质量第一”的原则,在实际操作中会遇到一些阻力,需要测试人员去克服。从这些角度看,要成为一个优秀的测试工程师,其实比对设计、编程人员的要求还要高,不仅要体现高超的技术能力,如系统平台设置、架构设计分析、编程等方面的能力,而且要展示自己的业务分析能力、对客户需求的理解能力和团队沟通协作的能力。
以上是我的新书《软件测试》前言的节选。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15232605/viewspace-600514/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15232605/viewspace-600514/