工欲善其事,必先利其器。每每看到这句话会想起孔夫子老人家,此句出自他的论语,是其对子贡的一番话。子贡问为仁,子曰:工欲善其事,必先利其器。居是邦也。事其大夫之贤者,友其士之仁者。孔子告诉子贡,一个做手工或工艺的人,要想把工作完成,做得完善,应该先把工具准备好。那么为仁是用什么工具呢?住在这个,想对这个有所贡献,必须结交上流社会,乃至政坛上的大员,政府的中坚;和这个社会上各种贤达的人,都要交成朋友。换句话说,是要先了解这个的内情,有了良好的关系,然后才能得到有所贡献的机会,完成仁的目的。

  由此可以看出孔子他老人家的思想也是放之四海而皆容,流传千年而皆有用,有点扯远了。说说软件测试,如何做好软件测试呢?如果把软件测试喻之为事,那软件测试的器又是什么?作为QA人员,掌握QA工作的基本知识是必要的,更多的知识也是在工作中不断积累的,此之可谓之器。实际上作为一的QA工程师,还该有丰富的编程经验和相关的计算机网络,数据库,软件工程学,系统、运筹、统计等学科,甚至要学习心理学,美学等以帮助自己了解客户需求和产品分析。

  软件测试是一由底向上、循序渐进的过程,对应于代码、软件设计、用户需求和系统工程,软件测试又可分为四个阶段:单元测试(Unit Test)、集成测试(Integration Test)、有效性测试(Validation Test)和系统测试(System Test)。

  1、单元测试对应于系统的代码,所以一般小公司都会由开发人员完成,在专业的软件公司会有白盒测试,一般和开发人员同部进行对代码进行走查及路径覆盖等测试。

  2、集成测试,将多个模块组合成更大的模块或子系统或产品,然后进行测试,它主要一次性组装方式,自顶向下方式,自底向上方式或混合方式等,一般选自底向上方式,整体测试要等开发人员完成全部代码后才可以进行。

  ● 一次性组装方式,是将所有模块组装在一起测试,它不需要额外的编码,缺点是查错困难;

  ● 自顶向下方式:按系统程序结构、沿控制层次从上往下,一步一步进行。主模块为驱动模块、下属模块用桩模块代替,它能较早发现主要控制方面的问题,缺点是需要建立桩模块,这比较困难,而且算法和I/O在底层、较晚才能发现问题。

  ● 自底向上方式:从程序模块结构的底层模块开始组装和测试,建立驱动模块比桩模块容易,算法和I/O在首先得到测试,并且多个模块能同时并行测试。但程序未能作为一个整体运行,主要的控制后才能测试。

  3、有效性测试 (Validation Test )

  有效性测试,也称确认测试或验收测试,目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着应该进一步验证软件的有效性,即软件的功能和性能如同用户所合理期待的那样。

  有效性测试运用黑盒测试,以验证是否满足所有需求(功能、性能、可移植性、兼容性、可维护性等)、确定输出结果(数据、界面等)是否精确、完整或合理。如数据证实可包括格式检验、完整性检验、合理性检验和范围检验。执行它以确保新的或经过修改的程序是无差错的并可以执行其预定的功能。

  ● 软件配置复查:各成分齐全,具有维护阶段所必需的细节

  ● 检查数据结构、源程序及目标代码、技术文档,用户文档

  ● α测试:开发者通过用户来观察所开发的软件,在受控制的环境下进行(用户在开发环境下)

  ● β测试:由公司的支持产品预发行的外部客户实行,开发者无法控制(实际使用者在实际使用环境下)

  ● 由用户进行的验收测试,让用户验证是否满足需求,由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用实际数据进行测试。

  4、系统测试 (System Test)

  系统测试是将软件作为整个基于计算机系统的一个元素来进行测试,它应与硬件、外设、支持软件、数据、人员等结合起来的综合环境中进行。系统测试主要工作有恢复性、安全性、压力和性能等测试。

  5、α、β测试

  α/β测试 (Alpha/ Beta Testing) ──当开发和测试已基本完成,需要在正式发行之前后寻找毛病而进行的测试。此时还允许有较小的设计修改。通常由终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。

  下篇本博文将介绍些时下流行的测试方法