手动测试和自动化测试之间的更深差异。
什么是手动测试
对软件进行手工测试以发现缺陷的过程。测试人员是站在用户的视角,并确保所有功能都按照需求文档中那样工作。在这个过程中,测试人员执行测试用例并在不使用任何自动化工具的情况下手动生成报告。
手动测试类型
-
黑盒测试: 黑盒测试是一种软件测试方法,测试人员在测试中测试被测软件的功能,而不查看内部代码结构。这可以应用于软件测试的各个层次,如单元、集成、系统和验收测试。
-
白盒测试: 它是基于应用程序内部的代码结构的测试。在白盒测试中,系统的内部视角以及编程技巧被用来设计测试用例。这种测试通常在单元级别进行。
-
单元测试: 也称模块测试或组件测试。这样做是为了检查源代码的单个单元或模块是否正常工作。通常它是由开发人员在开发人员的环境中完成的。
-
系统测试: 测试完整的应用程序,以评估系统是否符合其客户的需求,我们称之为系统测试,也称为端到端测试。目标是已完成的系统,以确保软件是否按预期工作。
-
集成测试: 集成测试是测试两个软件单元之间接口的过程。集成测试有三种方式。大爆炸法,自上而下法,自下而上法。
-
验收测试: 通常它由最终用户和测试人员一起完成的,以验证软件的功能是否按照用户需求来实现。进行测试后,客户可以接受或拒绝所提供的软件功能。验收测试的类型有Alpha、Beta和Gamma测试。
何时适用手动测试
-
探索性测试: 由行业专家进行探索性测试。他们通过探索应用程序的功能来执行测试,而不了解详细的需求。
-
可用性测试: 验证软件是否用户友好,是否被最终用户舒适地使用。主要重点是检查最终用户是否能够轻松理解和操作软件。一个好的软件应该是自我探索的,具有引导性的,并且不需要太多的培训来操作它。
-
随机测试: 测试人员在不遵循任何文档和测试设计技术的情况下随机测试软件。如果试人员的知识非常丰富,则主要执行此类测试,测试人员在没有任何测试用例或业务需求文档的情况下随机测试应用程序。
何时使用手动测试,非自动化测试
-
当项目处于初始开发阶段时,测试框架搭建完成前;
-
当测试用户界面;
-
当需要进行探索性或随机性测试;
-
如果项目是短期的,与手动测试相比,编写脚本和搭建测试框架非常耗时的时候;
-
如果测试用例不能自动执行验证码示例。
手动测试的优劣
优:
- 适用范围广,可以在各种软件上进行手动测试;
- 对于短生命周期产品更可取;
- 新设计的测试用例应该手动执行,以确保用例的正确性;
- 应用程序在自动化之前必须手动测试;
- 在需求频繁变化的项目和GUI不断变化的产品;
- 与自动化测试相比,它的初始投资更便宜;
- 开始手动测试所需的时间和费用更少;
- 它允许测试人员执行随机测试;
- 测试人员没有必要了解自动化工具和框架。
劣:
-
手工测试主要是在做回归测试时耗时,而且重复性很大;
-
与自动化测试相比,手动测试不太可靠,因为有人的影响;所以总会有人为因素导致的一些错误;
-
从长远来看,相比于自动化测试代价更高;
-
无法重用,因为无法记录整个测试过程。
什么是自动化测试
自动化测试是使用自动化工具来发现软件缺陷的测试过程。在这个过程中,自动化工具会自动执行测试脚本并生成结果。一些最流行的自动化测试工具是QTP、Selenium Webdriver,Jmeter, TC等。
常用的自动化工具:
-
HP QTP;
-
Selenium;
-
LoadRunner;
-
SilkTest;
-
TestComplete;
-
WinRunner;
-
Jmeter。
何时适用自动化测试
-
回归测试: 对一个已经测试过的缺陷,在修改后进行的重复测试,目的是用于发现由于软件或其他相关或不相关的软件组件的变化而引入的任何缺陷。回归测试非常适合做自动化测试,因为软件经常更改代码,而且需要进行及时的测试。
-
性能测试: 测试软件的速度、可伸缩性和稳定性。性能是指实现满足项目或产品性能目标的响应时间、吞吐量和资源利用率级别。它非常适合自动化测试。
可同时进行手动和自动化测试类型
-
系统测试: 测试软件是否符合其指定的要求实现,也称端到端测试。目标是验证已完成的系统,以确保应用程序是否按预期工作。
-
单元测试: 单元测试也称为模块测试或组件测试。为了检查代码的单元或模块是否正常工作。通常由开发人员在开发人员的环境中完成的。
-
验收测试: 通常它由最终用户和测试人员一起完成的,以验证软件的功能是否按照用户需求来实现。进行测试后,客户可以接受或拒绝所提供的软件功能。验收测试的类型有Alpha、Beta和Gamma测试。
哪些场景不适合自动化测试
-
探索性测试;
-
用户界面测试;
-
随机测试。
何时使用自动化测试,非手动测试
-
处理重复和耗时的任务;
-
并发测试;
-
非功能性测试,如负载、性能、压力测试;
-
避免人为错误。
自动化测试的优劣 优:
- 自动化测试的执行速度更快;
- 从长远来看,它比手工测试便宜;
- 自动化测试更可靠;
- 自动化测试可扩展性好和更通用;
- 用于回归测试;
- 可重用,因为自动化过程可以被记录;
- 它不需要人为干预。测试脚本可以在无人参与的情况下运行;
- 它有助于提高测试覆盖率。
劣:
- 仅推荐用于大型,稳定的产品;
- 自动化测试最初费用很昂贵;
- 大多数自动化工具都很昂贵,当然除开源软件外;
- 它会有有一些限制,例如处理验证码,获取ui的视觉方面的信息;
- 需求反复变化时;
- 不是所有的工具都支持各种测试如windows、web、移动性、性能/负载测试。