软件测试的必要性已经完全为业内决策人士所接收。这是因为软件工业已经发展到了与其他主要工业相当的规模。经过十几年的发展,少数天才们手工作坊的世界已经转化为大工业生产的天下。由于JAVA的流行,我们更看到了组装生产线的模式。
在工业生产的传统行业里,测试是生产的有机组成环节,各道工序的测试、组装测试、出厂测试及致破坏性试验是生产目的实现的重要保证。
软件测试和硬件测试在实现上没有真正意义上的区别,在虚拟空间上的实现也不是软件测试独有的特征。
软件测试过程的主要部分在于模拟用户对软件产品的使用过程:
1、模拟最终用户通过WEB、GUI对软件的使用。(具体软件会有很多功能。另外测试还要模拟用户的误操作,好的软件系统应该能够应付误操作。)
2、模拟用户方操作系统,数据库、网络管理专家对软件进行安装、设置、移植(Installation, Configuration and Migration)。
3、模拟用户方软件程序员应用编程界面调用各种功能。(目前相当多的出厂软件产品不是可执行程序,而是API。)
4、模拟用户对软件使用说明的使用。
软件测试的另一个方面是针对用户在正常使用软件可能遇到的麻烦进行测试、分析(High Avaiablility Test、Performance Test)。
贯穿始终的测试活动则包括软件设计文档评估、测试规划、测试结果报告。
软件测试是软件质量控制(QC,QA)的具体实现环节。把软件测试有效地组织进软件的生产流程,是软件质量控制规划的主要内容。
质量控制是控制的一种;符合控制系统的一般规律。多重小闭环反馈控制是一种控制精度高并且对控制系统各模块品质要求低的一种控制方案。这种控制模式应用到软件生产上,就形成了对软件生产的分阶段测试。它最大限度的减少了开发者个人因素对软件生产的影响。这正是以北美为基地的大多数主要成规模软件生产商所引用的RUP (Rational Unified Process)。
目前市场上流行大量的测试软件,较为有效的主要应用在Unit Test, Intergration Test, Regression Test 和 Performance Test 等几个方面。
在Unit Test and Intergration Test 方面, 在网络上有免费的“软件测试工具包”可以帮助测试人员结构测试框架, 用于测试JAVA API。使用者要求具备WebLogic,Websphere, TomCat或其它WEB 服务器平台软件的知识。
在Regression Test 方面, 市场上有众多的capture-playback 类型的测试软件如Win Runner, Rational Robot, Rational JRobot, etc. 这类工具易学易用。要想使用这类工具实现测试目的,使用者依然需要对被测软件本身有深入的了解。
在 Performance Test 方面, 市场上有模拟多用户类形的测试工具如LoadRunner,Side Tester。还有分析memery leak形的JProbe。 在网络上也有免费的“软件测试工具包”可以帮助测试人员结构测试框架,但主要是针对以Java实现的应用软件。
二、北美软件测试的用人市场现状:
软件的大工业生产决定了软件测试是生产的必不可少的环节。对於人员配置,一直以来流行一种五比一的标准说法。 从公司内部看任何时候都是远高于这一比例。从近一个时期看,开发与测试工作量的比重甚至达到了二比一。同类型成熟产品之间的竞争最容易取胜的方法是提高质量。
软件的大工业化并不是在消灭个体户和小作坊,只是减少了他们直接与最终用户打交道的机会和必要。如今他们生产和包装软件的目的在於等待大公司的收购。为此,在最后阶段需要进行“最终用户测试”。
三、软件测试对从业人员的技术要求
相对于其他软件工程人员, 软件测试工程师的知识面应该非常宽广,但最重要的品质应该是能够在第一时间内接受新技术。