在过去半个世纪,软件获得了空前的发展,逐渐渗透到各个领域,从早的科学计算、文字处理、数据库管理、银行业务处理到工业自动控制和生产、办公自动化、新闻媒体、通信、汽车、消费电子、娱乐等等,软件无处不在,改变了人类生活与生产方式。随着计算机软件在各行各业的普及应用,人们对软件质量的要求也越来越高,专业化和多样化的特点越来越显著。但同时,我们看到软件产业还不够成熟,软件质量状况不容乐观,软件在运行和使用过程中出现的问题还比较多。例如,2008年互联网web发展十大失败的事件中,其中90%的失败都是由质量问题造成的,与“宕机”、“停机”、“崩溃”等一系列严重的质量问题联系在一起。

   软件质量一直是软件工程中的一个焦点,成为人们几十年来不断研究、探索的领域。为了改善软件质量,人们不仅从企业文化、软件过程模型、需求工程、设计模式等不同方面来获取有效的方法和佳的实践,而且开始重视软件测试、在软件测试上有更多的考虑和投入。虽然质量是内建的,但软件测试依旧承担着非常重要的作用。软件测试自身也在发生变化,已经不再只充当门卫??在软件发布之前进行检验,而是正在成为一个持续的反馈机制,贯穿软件开发的整个过程,尽早地发现问题,降低开发成本,提高软件开发生产力。软件测试人员不再是软件开发的辅助人员,而是软件开发团队的主体之一、积极的参与者。从项目开始的第,测试人员参与项目需求和设计的讨论、评审等各种活动,尽早发现软件需求定义和设计实现上的问题,及时发现软件项目中存在的质量风险。软件开发团队必须尽可能地在交付产品之前控制未来的质量风险,这必然需要依赖于卓有成效的软件测试。将传统的程序测试的狭义概念扩展到业界逐渐认可的、广义的软件测试概念,测试涵盖了需求验证(评审)、设计验证(评审)等活动。软件测试贯穿整个软件生命周期,从需求评审、设计评审开始,介入到软件产品的开发活动或软件项目实施中,和其它开发团队相互协作、相互补充,构成软件生命周期中的有机整体。

    软件测试不是一项简单的工作,远比人们所直观想象的要复杂。高效、高质量地完成一个软件系统的测试,涉及的因素很多,也会碰到各种各样的问题,并且要在测试效率和测试风险之间找到佳平衡点和有效的测试策略,这些都需要测试人员一一克服。要做好软件测试,不仅需要站在客户的角度思考问题,真正理解客户的需求,具有良好的分析能力和创造性的思维能力,完成功能测试和用户界面的测试,而且能理解软件系统的实现机理和各种使用场景,具有扎实的技术功底,通过测试工具完成相应的性能测试、安全性测试、兼容性测试和可靠性测试等更具挑战性的任务。软件测试主要目的是发现软件中的缺陷,坚持“质量第一”的原则,在实际操作中会遇到一些阻力,需要测试人员去克服。从这些角度看,要成为一个的测试工程师,其实比对设计、编程人员的要求还要高,不仅要体现高超的技术能力,如系统平台设置、架构设计分析、编程等方面的能力,而且要展示自己的业务分析能力、对客户需求的理解能力和团队沟通协作的能力。