手动测试与自动化测试

18

测试可以主要分为手动测试和自动化测试。关于这一点,会出现以下问题:

包括:

  • 两种类型测试的基本区别是什么?

  • 手动测试和自动化测试都存在哪些挑战元素?

  • 对于手动测试和自动化测试,软件测试人员需要什么不同的技能集?

  • 在进行手动测试和自动化测试的软件测试人员中,不同的工作前景和职业发展机会有何区别?

  • 手动测试在任何方面上是否被低估了? 如果是的话,是怎样的情况?

  • 在企业世界中,手动测试人员与自动化测试人员在待遇上有何不同?(如果他们确实在某些方面上有所区别)

7个回答

15

自动化测试是使用一段代码/程序来测试另一段代码/程序的任何类型测试。这可以是像上面描述的单元测试,也可以通过特定的自动化工具来完成,例如TestComplete、QTP、Selenium等。单元测试往往是由开发人员创建和执行的,而GUI自动化将更可能由软件QA专家执行。某些类型的测试,如性能和回归测试,非常适合自动化,而其他类型的测试,如可用性测试,则不适合。

手动测试是一个过程,在此过程中,人直接测试软件,通常通过执行最终用户可能要执行的操作。许多专业测试人员(如那些参与探索性测试的测试人员)会建议您,尽管单元测试具有成本效益,但手动测试同样重要且具有成本效益。

如果您想了解自动化测试的缺陷,可以阅读Linda Wilkinson的最新博客。其他好的资源包括来自软件测试俱乐部的讨论以及SQAForums的自动化测试部分

如果您还没有这样做,加入SQAforums是值得的,可以询问与测试有关的任何问题,以及就业前景。


7

我只能谈谈我的观点和经验,而我只是一名与测试人员和QA工程师合作过很多的开发人员。无论如何,以下是我的看法:

最基本的区别是手动测试是由人工完成的,自动测试是由计算机完成的 :) 因此,手动测试过程可能比完全自动化的测试慢几个数量级。另一方面,自动化测试只能检测到它们应该检测到的问题,并且不能检测系统的根本新行为。这基本上意味着自动化测试非常适合回归测试,当已知应该做什么、如何做以及输出应该是什么时。

至于技能集,任何有正确心态的人都可以进行手动测试,而自动化测试必须由至少具有一些开发经验的人制作。例如,有一些框架可以轻松记录自动化Web测试,但通常需要调整记录的场景以更好地满足测试需求。当然,任何想要从事QA工作的人都必须具备必要的基本测试技能,如耐心、注重细节、出色的组织能力、出色的沟通能力等...

最后,我认为手动测试并没有被低估,如果说有的话,我认为自动化测试在我看到的大多数公司环境中被低估了。但是,是的,有些人(主要是经理,老实说)会把我的前一段解释为“任何人都可以进行手动测试”。


4
自动化测试(尤其是自动化单元测试)非常有用,因为它意味着您可以更早地在开发周期中进行测试,并可以保持定期测试;它允许开发人员在涉及QA团队之前就能够识别出他们可能犯的错误。但这并不意味着QA是不必要的。除了确保自动化测试本身适合外,还需要确定应用程序是否执行了应该执行的操作;这通常不能完全理解。
此外,自动测试用户界面也很困难。例如,评估图标是否具有足够的含义并且位置合适是人的事情而不是计算机的事情,因为计算机不关心但用户关心。

为了记录并指出应该多频繁地运行单元测试,每次我编译(编译成功)后都会重新运行我的单元测试。一旦我有一个我比较满意的构建版本,我就会重新运行我的集成测试(我有一个单独的程序来做这件事)。其他人运行用户验收测试;毕竟,问题不在于是否对它们满意,而在于他们是否满意。 - Donal Fellows

4
  • 自动化测试的主要优点是可以快速进行回归测试。开发人员可以验证之前的功能是否正常工作,是否在系统中添加新功能后仍然正常。
  • 因此,当您面临紧迫的截止日期时,通过使用自动化工具,您可以减少测试工作量。因此,在那个时候,您只需要检查那些尚未创建自动化测试脚本的功能。(例如电子邮件/短信通知测试、浏览器兼容性/UI等等)
  • 今天,许多公司都在使用开源自动化工具(如Selenium、OpenSTA、JMeter等)进行常规测试。因此,如果您知道如何使用这些免费工具测试应用程序,那就更好了,而不是使用付费工具。

1

最基本的区别在于测试的验证方式。是通过程序检查还是进行人工检查?

自动化测试的最大挑战在于将手动测试转为自动化,并确保不需要对结果进行人工解释,例如,如果一个程序涉及音频或视频输出,这可能非常难以准确验证。

无论是自动化测试还是手动测试都需要注重细节、耐心和组织能力,才能说出“是的,这是一个高质量的产品/服务”。差异在于自动化测试通常使用特殊软件。

手动测试可能会成本较高,因为需要有人观察测试的运行情况,而自动化测试通常可以在无人监督的情况下运行。然而,在那些主观性较强的领域,如网页样式或者我们对这首歌进行改变后的音效如何,手动测试可能被低估了。在这些情况下,我认为人类比机器更受青睐。

关于职业路径和工作机会,这在某种程度上是一个开放性问题。由于并非每个地方都雇用测试人员,有时测试人员只是在需要项目时被引入,因此对于测试存在不同的观点。这还没有涉及到开发人员应该编写多少自己的测试,以及这是否也使开发人员成为了测试人员这个问题。我想我没有回答你的问题,因为我正在从更大的角度来看待这个问题,即谁在进行测试,因为这也是需要考虑的另一件事。

嗨JB King..:)感谢您回答这些问题..您的答案非常有用...顺便说一句,您在某些方面的答案确实没有考虑到增长、就业前景和最后一个问题..但无论如何,非常感谢您分享您的经验,先生..对于回复您的帖子我很抱歉晚了。 - boddhisattva

0
唯一客观编写所有测试的方法是省略实际确保软件适用性所需的大部分细节。结果几乎总是需要支付按小时计费的人员才能使用的软件。
这可能并不总是一个问题,但它是软件行业中相当大的一部分案例。

-2
仅回答您的第一个问题:基本区别在于手动测试就像是测试,而自动化测试(通常)就是测试。如果您无法编写完整详细的测试规范,则实际上并没有进行测试。如果您能这样做,您就可以进行自动化测试。无论您的测试脚本是由程序还是碳基生命体执行,这都是正确的。

我将让您通过我所阐述的基本前提来理解我的其他问题的答案。


不是所有的规范都可以由计算机运行。例如,“确保颜色合适”仍然更适合通过碳而不是硅进行检查。 - SWeko
1
@SWeko:“确保颜色合适”不是一个测试,更像是选美比赛,但它说明了我没有指出的细节之一:除非你能使你的测试客观,否则它们就不是真正的测试。 - High Performance Mark
2
那么在软件开发中,可用性不是一个问题吗?因为它是一个纯主观的概念?或者我们可以制定一些屏幕美学指数 :) 有很多东西可以通过人工测试轻松地进行检测,但是无法自动化测试。有时,软件本身的感觉就是完全错误的。 - SWeko
2
很抱歉,但我不同意你对手动测试只是“看起来像”测试的观点。 - boddhisattva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接