热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自动化测试项目失败的原因及调查结果

本文介绍了自动化测试专家ElfriedeDustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。

自动化测试专家

Elfriede Dustin



2008



10

月的《

Software Testing and Performance

》杂志上发表文章,深入探讨了为什么如此多的自动化测试项目会最终失败。

 



1





IDT


的自动化测试调查


        

IDT



Innovative Defense Technologies

)在

2007

年进行了一次软件自动化测试的研究调查。调查研究表明:虽然很多公司都认为自动化测试是非常有用的,但是很少有公司真正成功地实施了自动化测试。在问及没有很好地开展自动化测试的原因时,大部分人回答是由于缺乏资源,例如:时间、预算、技术等,其中:


   

 

37%

认为缺乏时间。


   

 

17%

认为缺乏足够的预算。


   

 

11%

认为缺乏合适的工具。


   

 

20%

认为缺乏专家的技术指导。

        研发领域的技术在过去

20



30

年间得到了高速的发展。然而我们对这些技术的测试能力并没有跟上发展的速度。现实告诉我们,测试变得越来越重要。

IDT

研究测试技术多年,发现一些有趣的东西:





1


)软件测试开始和软件开发一起驱动着业务。

        以前,业务驱动着软件和测试的技术发展。现在,软件和测试技术逐渐对业务起着驱动作用。业务部门可以有很好的业务

idea

,但是如果软件开发和测试部门不能很好地交付产品,或者测试能力有所欠缺的话,业务的竞争力会很快地消失。抢占市场的先机很重要,但是应该给予产品开发和质量保证更多的关注。





2


)应该给予“感知质量”更多的测试

        质量过程和标准往往过于关注数据,例如出现了多少个

Bug

、缺陷的密度等数据,而忽略了顾客的“感知质量”。例如,对于一个产品,频繁出现的

10

个缺陷,并且会影响到关键的功能运行,这往往会被顾客认为是一个低质量的产品,即使相对于整个项目而言,缺陷密度是非常低的。

        相反地,如果发布的产品中有

100

个缺陷,但是不经常出现,而且几乎不影响正常的功能操作,顾客则会认为这是个高质量的产品,即便从数据看来,其缺陷率非常高。

        到目前为止,并没有太多“基于使用的测试”的研究。“基于使用的测试”探索感知质量的内涵,追求高的感知质量,从而获得更高的顾客满意度。在 

Elfriede Dustin

看来,

amazon.com

相比起其他在线书店网站,拥有更高的顾客感知质量,因为

amazon.com

的用户体验非常友好。

        我们的目标是提高产品的感知质量。提高的途径是:让测试专注在那些最常使用的功能上(确保正常工作,没有任何缺陷),专注于测试那些最常用功能的可用性、可靠性。





3


)测试人员总是会受到责备

        

Deadline

临近,而在多种环境下的测试周期看起来是无止境的。测试人员通常会因为

Deadline

而受到责备,还会因为项目超出预算、没有覆盖产品的所有

Bug

、缺乏创新等,受到责备。

        但是,通常造成这种结果的真正原因是因为缺乏系统工程的过程。例如,对于一个上百万行代码、包含大量功能模块的产品,仅仅依靠测试组的黑盒测试,费尽九牛二虎之力才找到一些

Bug


        从另外一个角度来看,测试对项目进度拖延的真正原因是:不良的开发习惯导致充满

Bug

的代码,需要很长的、重复的修改周期。

        还有一个原因是:缺乏单元测试。调查分析表明:单元测试越充分、越有效,则系统测试会开展得越顺利,系统测试的周期也会越短。

        不能忽略的一个问题是产品构建。构建(

Build

)和发布(

Release

)的过程应该自动化。如果没有实现构建的自动化,那么软件构建的过程将会是非常浪费时间、并且容易出错的一件事情。

        另外,如果

Deadline

本身设置得就不合理,那么导致失败的可能性就非常大。有些

Deadline

的设置没有考虑清楚究竟需要多长的时间来开发和测试软件。





4


)开发人员不做测试

        虽然已经有不少的开发人员采用单元测试、测试驱动的开发方式,他们确实做得不错。但是开发人员仍然缺少集成和系统方面的测试。开发人员往往倾向于关注自己编写的功能模块的问题,缺乏对整个系统的全局观。

        为什么开发人员不做一下系统测试呢?他们没有时间,他们不是专业的测试人员,他们缺少测试的技巧,他们忙着开发新的代码和功能,并且测试系统整合部分的代码不是他们的职责。

        开发人员疲于应付新功能的开发,以便满足那些不合理的

Deadline

。毕竟,大部分人认为抢占市场是很关键的。然而,事实证明,我们不仅仅要关注 

R&D

,还要关注

R&D&T


 



2


、自动化测试的最佳实践


        很自然地,大家希望借助于自动化测试来缩短系统测试的周期,缓解测试的压力。但是,如果在设计和代码开发的过程中缺乏对自动化测试的考虑,例如提高应用程序的可测试性,我们可能会掉入自动化测试的陷阱中去。

        为了避免掉入自动化测试的陷阱,

Elfriede Dustin

总结了几个最佳实践,其中包括:





1


)提高应用程序的可测试性。

        软件开发人员可以通过在程序中构建更多的可测试特性,来帮助测试人员开展自动化测试。可以有多种方式来提高可测试性,其中一种比较常见的方式是提供日志或 跟踪机制,从而提供关于程序正在做什么的信息,包括正在操作的数据,以及关于应用程序状态、运行中的错误等方面的信息。测试工程师可以利用这些信息来判断 错误是否发生,跟踪测试执行过程中的各种处理流程。

        在应用程序执行过程中,所有模块都会写入关于方法、函数、当前处理对象等详细的日志信息。通常日志会写到文件或数据库中,并且按一定的格式写入,以便后期地分析和调试。

        在某些复杂的

C/S

结构系统或

Web

系统中,日志文件可能会写到多个机器上,因此日志中应该包含足够的信息用于判断在机器之间执行的顺序和路径。但是也不能包含太多的信息,否则将影响后期的分析过程。这些日志信息对于开发人员定位问题的本质有重要的作用,可以减少问题分析和定位、调试的时间。





2





GUI


和接口测试的建议

        录制回放型的测试工具通过脚本语言记录测试工程师在程序界面上的操作,然后通过回放来做一些基本的验证。由于需要与

GUI

打交道,任何

GUI

的细微变化都可能引起脚本回放的失败。因此,如果是基于位图的录制,则要注意下面几个方面:


   

 控件的字体不要随便改动。


   

 界面的颜色不要随便改动。


   

 显示的设置需要保持不变。


   

 如果可能,应该保持操作系统的标准设置。

        开发人员在做界面层的修改之前,需要考虑到界面的修改对自动化测试脚本的影响,尤其是在界面基线已经建立起来之后,需要慎重考虑

GUI

的修改。

        

GUI

测试工具通常是基于对象的属性来识别对象的,因此开发人员最好能知道

GUI

测试工具的工作原理,这样可以在修改

GUI

时尽量避免对自动化测试脚本造成的影响。

 



3


、小结


        为了避免掉入那些主要的自动化测试陷阱,

R&D

应该在开发过程中把测试这个“

T”

也考虑进去,而不仅仅考虑那些最新最酷的开发技术。如果发明并使用了最新最好的技术,但是不能被充分测试或者很难被测试到,那么我们如何知道它们的质量水平呢?!


 


 


 


 测试自动化是个很关键的技术,在开发软件的过程中,程序员需要把测试效果和可测试性等因素考虑进去。并且,还应该明白修改


GUI


的内容对于自动化测试脚本的影响。


自动化测试:为什么受伤的总是我?




推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文总结了设计、开发和部署Web应用程序时应遵循的一些最佳实践,这些实践结合了个人经验和权威资料,旨在帮助开发者提高Web应用的安全性。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在拉斯维加斯举行的Interop 2011大会上,Bitcurrent的Alistair Croll发表了一场主题为“如何以云计算的视角进行思考”的演讲。该演讲深入探讨了传统IT思维与云计算思维之间的差异,并提出了在云计算环境下应具备的新思维方式。Croll强调了灵活性、可扩展性和成本效益等关键要素,以及如何通过这些要素来优化企业IT架构和运营。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 亚马逊老板杰夫·贝佐斯
    本文主要介绍关于的知识点,对【亚马逊创始人或成地球首位万亿富豪,起底贝佐斯创业之路】和【亚马逊老板杰夫·贝佐斯】有兴趣的朋友可以看下由【CSDN资讯】投稿的技术文章,希望该技术和经验能帮到你解决你所遇 ... [详细]
author-avatar
zjy135781012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有