1.什么是软件测试?
使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验该软件系统是否满足规定的需求或弄清实际结果与预期结果之间的差异。简单来说就是,执行程序,检验结果的过程。
2.软件测试的基本原则是什么?
(1)软件测试不能由开发人员自己进行,必须由第三方来完成。
(理由:开发人员对自己编写的代码已经形成了思维定势,测试系统时会无意识的趋向于那些能够让系统正常运行的数据或操作。对于系统的运行往往更关注于功能的实现,即使发现了一些系统的不足也会认为这些缺陷的存在是可以理解的,因为他们对于自己的劳动成果会以欣赏的眼观去看待,而不是贬低它。而测试人员在测试过程中会更加客观也更加严谨和挑剔,同时测试人员是站在用户的角度去使用软件,不仅会关注功能的实现,还会注意软件的易用性,安全性等。)
(2)测试应该尽早开始
(理由:发现bug越晚,修复起来越麻烦,投入的资源越多。从需求分析阶段测试人员就应该参与其中,尽早的展开测试,避免先开发完成再测试)
(3)测试应该追溯到用户需求
(理由:只有知道用户想要什么样的产品,才能知道用户会怎样去使用软件,从而了解测试人员在测试时的标准是什么。只有站在用户的角度去看待软件,才能开发出让用户满意的软件产品。)
(4)严格制定测试计划
(理由:测试计划应该对测试过程中的各个影响因素做出合理的预测或安排,包括测试策略,风险评估,资源分配,进度控制等,这样才能保证测试工作的有序展开。如果不在计划阶段做好分析研究,在测试过程中突然出现如测试时间不足,测试风险过大等问题,很可能导致整个项目的延误。)
(5)基于“质量第一”的思想来展开工作
(理由:测试的最终目的是保证产品的质量要求,在实际工作过程中若出现时间与质量的冲突,时间应当服从质量,不能因为时间紧张而放弃或降低测试要求)
(6)好的测试用例是设计出来的,而不是写出来的
(理由:测试用例的设计方法有很多,针对不同的测试对象应当根据其特性选择最适合的测试用例设计方法,而不是一概而论的照搬过去的测试用例。好的测试用例不仅能够保证测试的覆盖率,还能提高测试效率,节约测试资源)
(7)保证测试用例有着足够的覆盖率
(理由:穷举测试是不可能的,这是由于数据的无穷性和实际操作中的多样性。但是对于需求说明书所规定的功能必须要实现完全覆盖,除此之外对于软件的性能,软件的安全性等方面也应当设计相应的测试用例。)
(8)测试不仅需要考虑软件应该做什么还要考虑软件不应该做什么
(理由:测试的目的是发现软件存在的缺陷,如果只考虑它该做什么,从而只选择能够使系统正常运行的数据或操作,表面上系统是正常无缺陷的,可用户不是技术人员,不一定知道什么是系统允许的数据,他们可能会输入系统无法接受的数据或进行系统禁止的操作。在测试时考虑系统不该做什么可以发现系统对于错误数据或操作的处理能力。)
(9)必须严格按照测试用例来进行测试
(理由:在实际测试的过程中如果不按照测试用例来展开测试,测试人员很可能会出现漏测或重复测试等错误操作,导致测试资源浪费甚至影响产品质量,因此测试人员在工作过程中必须避免随意性。)
(10)不能为了方便测试擅自更改程序
(理由:测试人员的职责是找出程序中的缺陷,如果更改了程序,将可能改变整个系统的运行。)
(11)注意错误集群现象
(理由:一般情况下,某一模块出现了大量的错误,那么这一部分很可能还存在其他错误,对于这样的模块需要重点关注,重复测试。)