摘自《软件测试架构实践与精准测试》
软件测试的发展遭遇尴尬境地,其主要原因是面临的一些测试技术瓶颈问题目前没有突破。其实,造成软件维护困难的深层次的原因在于软件测试的整个过程和方法完全面对一个不知内部结构的 BLACK BOX。而测试的难点就体现在以下几个方面。
(1)系统级的测试用例基本都是黑盒测试方法,从根本上导致了基于黑盒测试的方法没有办法直接面对计算机所真正理解的程序层面去解决软件测试问题。
(2)测试过程中所产生的数据基本都是人工或半工具半人工的方式录入,数据的准确性在一定程度上不能保证。在极端情况下,软件测试是否真正有效地开展和执行都是非常难以判断的。软件测试和开发的最大区别是它没有明确的产出物,开发工作目标也不清晰,结果的不可信和成果的不可见性,使得软件测试经常处于被动的局面。
(3)传统的功能测试依赖于测试人员的业务能力和专业技能,即使很优秀的测试人员也会因为状态问题而导致测试用例设计水准出现波动,对于企业来讲,如果将产品质量依赖于个人的经验水平,那会有很大的危险性。同时企业强调的是技术体系,而依赖于经验的测试方法则非常难以传承,同时从工程角度,普通的测试工程师可能即使投入很多的工作时间,短期也难以达到高级测试工程师的测试水准。
(4)业界几乎将自动化测试作为解决软件测试效率和覆盖率的灵丹妙药,但实质上自动化测试无外乎是机械执行人的经验而已,很难解决测试的根本症结。对于绝大部分企业,自动化测试因为存在和被测程序很强的相关性和耦合性,对程序的变化适应性差以及开发难度大等因素,自动化测试通常仅用来解决主干业务流程的测试,真正有效实施的案例也比较少。
(5)最后再分析被认为“高端”的白盒测试技术,白盒测试技术由来已久也并不缺乏优秀的商业工具,但其在企业内的应用范围非常狭窄。其主要有以下的原因。
白盒测试难以脱离开发环境,很难适应系统级的测试,并且难以实施。通常测试工程师在对代码内部不是很了解的情况下,很难有效地进行测试。
结果依赖于代码版本,代码发生改变后很多数据都会失效,无法适应快速迭代的
敏捷开发。白盒测试技术诞生的时候,软件迭代周期非常慢,具有明显的开发与
测试交替的界限,而这些界限在当今的软件开发界随着敏捷开发模式的推行已经
非常模糊。当今的软件测试周期内,很难有足够的时间针对一个版本做完整的白
盒测试。
以单机在开发环境内测试方式为主,不支持团队的分布式测试和分析,不适合大型软件的测试,这一点显然也是传统白盒测试不能有效应用的原因。
以单元测试为主要方式,无法有效地适应大型和复杂软件的测试,构造驱动和桩程序以及完成所有单元的测试,其时间消耗和周期都是企业无法承受的。同时对于复
杂系统,更多的逻辑错误发生在系统各模块串接和组合以后,而不仅仅是发生在单
元内部。
网友评论