|
知识路径: > 自动化测试 > 自动化测试的优缺点 >
|
被考次数:5次
被考频率:中频率
总体答错率:38%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:掌握
相关知识点:15个
|
|
|
|
|
自动化测试能够替代大量手工测试工作,避免重复测试,同时,它还能够完成大量手工无法完成的测试工作,如并发用户测试、大数据量测试、长时间运行可靠性测试等,概括地说,自动化测试具有如下优点。
|
|
|
. 提高测试质量:软件开发的过程就是一个持续集成和改进的过程,而每一次修改都有可能产生错误。因此,当软件产品的一部分,或者全部,或者应用环境被修改时都需要对软件产品重新进行测试,其目的是验证修改后的系统或者产品的质量是否符合规格说明。例如,对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,由于自动测试工具提供了简便的回归测试,能以便利的方式验证是否有新的错误进入软件产品,既节省了重复手工输入的工作量,保证了测试案例的一致性,避免了人为因素,也可以使测试达到测试每个质量特性的目的,从而提高软件测试的质量。
|
|
|
. 提高测试效率,缩短测试工作时间:软件系统的规模越来越大,功能点越来越多,达到几千个上万个,人工测试非常耗时和繁琐,这样必然会导致测试效率低下,而自动化测试工具可以较好地执行这些频繁的测试任务。在充分并合理地使用了测试工具以后,可以减轻测试工程师的手工测试工作,同时,测试工具还可以把控制和管理引入整个测试过程,能够保证测试的进度。
|
|
|
. 提高测试覆盖率:通过自动化测试工具的录制回放及数据驱动来测试功能,可以提高测试覆盖率。通过测试工具的辅助分析功能,可以提高测试的深度。
|
|
|
. 执行手工测试不能完成的测试任务:有些非功能性方面的测试,例如,压力测试、负载测试、大数据量测试、崩溃性测试等,人工测试是不可能实现的。例如,找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下反应时间,这样的手工作坊式的测试方法不切实际且无法捕捉程序内部变化情况。
|
|
|
. 更好地重现软件缺陷的能力:自动化测试具有更好的一致性和可重复性,由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,人是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。
|
|
|
. 更好地利用资源:理想的自动化测试能够按计划完全自动地运行,在开发人员和测试人员不可能实行三班倒的情况下,自动化测试可以胜任这个任务,例如,完全可以在周末或者晚上执行测试。这样充分地利用资源,也避免了开发和测试之间的冲突。
|
|
|
. 增进测试人员与开发人员之间的合作伙伴关系:测试工程师为了更好地使用自动化测试工具,需要对开发技术有深入的理解和实践,因此测试工程师也有了与开发工程师更多、更平等地交流的机会,自动化测试为测试工程师与程序开发人员协同工作提供了一种便利的手段,双方将有更多的合作与尊重。
|
|
|
测试工具能够提高软件质量,改进测试过程,因此在许多公司中得到了广泛应用,由于自动化测试工具自身的特点,为达到较高的投资回报率,在以下项目和环境中更适合使用自动化测试工具。
|
|
|
. 需要反复进行的工作。在持续修改软件功能的项目中,对功能的测试需要反复进行,人工测试工作量极大。功能性测试工具能够自动进行重复性的工作,验证软件的修改是否引入了新的缺陷,旧的缺陷是否已经修改。减少人工测试的工作量。
|
|
|
. 负载压力测试。负载压力测试需要模拟大量并发用户和大数据量,这样的测试用手工不能完成或不能很好地完成,而自动化测试工具则可以很好地解决这个问题,在测试脚本运行过程中也不需要人工干预,能够充分利用非工作时间。
|
|
|
. 公司有大量的测试人员和开发人员,他们合作完成一个产品,那么如何在产品的生命周期中进行有效管理和合作,借助于自动化的测试管理工具,会取得事半功倍的效果。
|
|
|
. 如果需要进行测试系统后台或者内部的性能特性,进而进行故障定位和性能调优,自动化测试工具会是一个不错的选择。
|
|
|
|
虽然自动化测试可以提高测试效率,能够完成手工测试不能完成的工作,但自动化测试在实际应用中也存在局限性,并不能完全替代手工测试,在下面的领域中自动化测试会有一定的局限性。
|
|
|
. 定制型项目:为客户定制的项目,甚至采用的开发语言、运行环境也是客户特别要求的,开发公司在这方面的测试积累少,这样的项目不适合作自动化功能测试。
|
|
|
. 周期很短的项目:项目周期很短,相应的测试周期也很短,因此花大量精力准备的测试脚本,不能得到重复地利用。当然,为了某种特定的测试目的专门执行的测试任务除外,比如,针对特定应用的性能测试等。
|
|
|
. 业务规则复杂的对象:业务规则复杂的对象有复杂的逻辑关系和运算关系,工具很难实现,或者要实现这些测试过程,需要投入的测试准备时间比直接进行手工测试所需的时间更长。
|
|
|
. 人体感观与易用性测试:界面的美观、声音的体验、易用性的测试,无法用测试工具来实现。
|
|
|
. 不稳定的软件:如果软件不稳定,则会由于这些不稳定因素导致自动化测试失败,或者致使测试结果本身就是无效的。
|
|
|
. 涉及物理交互:自动化测试工具不能很好地完成与物理设备的交互,比如刷卡器的测试等。
|
|
|
任何工具都有它的可用范围,就像我们不能拿剪刀去劈柴,不能拿斧头去裁减布料一样,面对任何一个待测系统,我们也应该考虑选用的测试工具是否合适,引入测试工具是否有利于该项目的开发等,否则,有可能适得其反。
|
|
|
以上介绍了自动化测试的局限性,因此,作为测试工程师,在考虑选用自动化测试的过程中,还需要了解公司领导、项目负责人等对于自动化测试的期望并消除他们一些不正确的期望,如下所示。
|
|
|
. 自动化测试可以完成一切测试工作:很多人一听到测试自动化,就认为自动化测试工具可以完成一切测试工作,从测试计划到测试执行,再到测试结果分析,不需要任何人工干预等,很显然,这是一种理想状态,现实中还没有哪个测试工具有这个能力,并且将来也不会有。在现实中有关的测试设计、测试案例以及一些关键的测试任务还是需要人工参与的,即自动化测试是对手工测试的辅助和补充,它永远不可能取代手工测试。
|
|
|
. 测试工具可适于所有的测试:每种自动化测试工具都有它的应用范围和可用对象,所以不能认为一种自动化测试工具能够满足所有的测试需求。针对不同的测试目的和测试对象,我们应该选择合适的测试工具来对它进行测试,在很多情况下,需要利用多种测试工具才能完成测试工作。
|
|
|
. 测试工具能使工作量大幅度降低:事实上,引入自动化测试工具不会马上减轻测试工作,相反,在更多情况下,首次将自动化测试工具引入企业时,测试工作实际上变得更艰巨了。只有在正确合理地使用测试工具,并有一定的技术积累后,测试工作量才能逐渐减轻。
|
|
|
. 测试工具能实现百分之百的测试覆盖率:由于自动化测试可以增加测试覆盖的深度和广度,比如,利用白盒测试工具可能实现语句全覆盖、逻辑路径全覆盖等,但因为穷举测试必须使用所有可能的数据,包括有效的和无效的测试数据,所以在有限的资源下也不可能进行百分之百的彻底测试。
|
|
|
. 自动化测试工具容易使用:对于这一点,很多测试工程师也有同样的错误观点,认为测试工具可以简单地通过捕获(录制)客户端操作生成脚本,且脚本不加编辑就可用于回放使用。事实上,自动化测试不是那么简单,捕获的操作是否正确以及脚本编辑是否合理都会影响测试结果,因此,自动化测试需要更多的技能,也需要更多的培训。
|
|
|
. 自动化测试能发现大量的新缺陷:发现更多的新缺陷应该是手工测试的主要目的,不能期望自动化测试去发现更多新缺陷,事实上自动化测试主要用于发现老缺陷。
|
|
|