让/测/试/人/更/加/卓/越
“嘿测试人,今天的你过得还好吗?”
“在无人问津的地方用尊严换钱又在人声鼎沸的地方用钱换尊严”
-.06.28-
软件测试基础知识是行业入门的基石。在面试过程中,面试官会经常考察我们的理论知识是否熟练掌握;在工作中,也需要我们采用一定的测试策略来进行测试工作。熟练使用这些策略,可以帮助我们更高效地进行工作,有助于我们发现更多的bug,提高我们的个人价值。
目前,业界对软件测试的看法不尽相同,甚至对软件测试的定义也不完全一致。其中比较公认的以下三个:
广义的软件测试定义是:贯穿在整个开发各阶段的复查、评估与检验活动,这远远超出了程序范围,可以统称为确认、验证与测试活动(V,VT一一Validation,VerificationandTesting)。
而狭义的测试定义为:软件测试是为了发现错误而执行程序的过程。软件测试是根据软件开发的规格说明和程序的内部结构而精心设计的测试用例,并利用这些测试用例去运行程序,以发现错误的过程。
软件测试在年定义是:使用人工或自动手段来进行或测定某个系统的过程,其目的在于检验它足规定的需求或是弄清预期结果与实际结果之间的差别。“软件测试是以检验是否满足需求为目标的”
关于“什么是软件测试”我们在上一节中已经充分地描述过了,所以就不再重复再描述相同的内容了,想再次浏览的伙伴们可以点击下方的文章链接!
◆◆软件测试的7个原则◆◆
原则(Principles),是每个人在行事中所遵循的准则。每个人都有自己的原则,或成人,或尚处襁褓。软件测试也有一套原则让每位软件测试从业人员去遵循,这些原则是前辈们前仆后继在无数的坑坑洼洼中总结出来的。软件测试的原则是指帮助测试团队有效地利用他们的时间和精力来发现测试项目的隐藏Bug的指导方针。从实际的实践和研究中,研究了以下7条软件测试的基本原则,以便测试人员在软件测试领域广泛应用。
原则一:测试证明软件存在缺陷
Testingshowspresenceofdefects时至今日,依然有不少人容易犯错:没有发现错误的测试说明软件没有缺陷。这个原则可以用另一种方式来描述:测试的本质是证明软件存在缺陷,而不是说软件没有任何缺陷。
测试只能证明软件是存在缺陷的(证伪),而不是证明软件是没有缺陷的(证实)。软件测试只能找出应用程序或软件中存在的缺陷,测试是为了辅助开发,降低缺陷存在的可能性而开展的活动,即便对产品或者应用程序进行了多次的、比较彻底的测试都没有发现任何缺陷,也不能证明软件是%完美的。
原则二:穷尽测试是不可能的
Exhaustivetestingisimpossible测试数据、输入和测试场景的所有组合是不可能的,因为它需要大量的时间。相反,测试团队只能专注于一些重要的指标,例如:设置测试策略的风险和优先级。一般来说,项目周期里永远不可能允许测试团队在项目中进行大量有效的组合测试。比如测试一个简单的计算器,你可以尝试1+1,1+2,1+3,1+n……,但是时间上允许你把所有的数字都考虑进去做详尽测试吗?显然是不可能的,从功能本身出发也算是多余的操作。随着系统承载业务越多,代码规模也越庞大,算法逻辑复杂度也越高。要让测试完全覆盖是不可能的。那难道不测?非也!我们可以采取以下策略:1、精准测试:改动什么测什么;2、二八原则:只测重点;3、等价划分等等;
原则三:尽早介入测试
TestingEarly这条很重要,但是对测试的要求也会更高。“早期的鸟儿有虫吃”或者是“早起的虫子被鸟吃”,对,说的就是这个理儿,早,是我们解决问题的有效办法。必须尽早介入测试活动,为软件开发的下一阶段做好准备。只要生成产品需求或文档,测试人员就可以开始测试。据调查,缺陷的修复成本与其发现时间成反比,且越晚修复其修复成本将会成指数级增长。
显然,从一开始就解决问题总是更容易、更便宜,而不是如果发现错误太晚就改变整个系统。因此,通过早期测试,测试人员可以检测到错误,并帮助开发团队以更少的成本和精力解决问题。
另外,尽早介入测试,测试人员能够更全面地了解需求和项目整体进度,知己知彼百战不殆,说的就是这个理儿。尽早介入测试原则与测试左移和测试前移具有异曲同工之妙。
原则四:缺陷具有集群性
DefectClustering之前听过一种理论,二八原则,即:80%的错误是由20%的模块引起的。缺陷聚类指的是在几个模块中发现了大部分缺陷。这一原则要求测试团队利用自己的知识和经验,确定要测试的潜在模块。这一预测有助于节省时间和精力,因为团队只需要