本人已做测试将近5年,计划对自己所学所用的测试做一个梳理和巩固。计划从功能测试、自动化测试、性能测试、安全测试几个角度出发来梳理目前在工作中的运用情况,以期望有所提升
本篇是功能测试的开篇,我就从什么是软件测试开始说起
软件测试的定义
对软件测试的定义众说纷纭。业界比较认可的定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估
IEEE给出定义是:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或清楚了解预期结果与实际结果之间的差异
而我自己对它的理解是:在给定的条件下,检验预期结果与实际结果的一个过程,从而侧面反映出软件的质量
软件测试的目的
说到目的,我们对它的认识也经历了几个不同的阶段(来自软件工程的叙述)
-
软件测试与调试基本没什么区别 -
软件测试是为了表明软件能正常工作 -
测试是为了表明软件在哪些情况下不能正常工作 -
测试是为了将已有的风险降低到一个可接受的程度 -
测试不仅仅是一种行为,而是一种理念,一种产生低风险软件的训练
当然也可以从保证软件质量、降低开发成本、减少因缺陷带来的商业风险、树立软件信心等角度来谈
而我觉得测试最重要、最直接的目的:就是找出缺陷,把风险降低到一个可控的范围内
软件测试的原则
-
测试显示软件存在缺陷 测试只能证明软件中存在缺陷,不能证明软件中不存在缺陷。软件测试只是降低了缺陷存在的可能性,并不代表没有找到缺陷,软件就是完美的 -
穷尽测试是不可能的 随着软件的规模越来越大,复杂度越来越高,要做到完全性的测试是不可能的。在测试阶段,我们只能根据重要程度和优先级来进行测试,从而保证软件的质量。因此精准测试就应运而生 -
尽早介入测试 尽早开始测试,尽早发现缺陷,因为缺陷的修复成本与其发现时间成反比,越晚修复其修复成本成指数级增长 ? 所以现在推崇敏捷测试,测试左移等测试思想来提升交付效率 -
缺陷具有集群性 著名的二八定律,对软件测试也适用,基本上80%的缺陷发生在20%的模块中,一个模块发现的缺陷越多,可能未被发现的缺陷也可能越多 -
杀虫剂悖论 重复使用相同的杀虫剂消灭昆虫会导致昆虫对杀虫剂产生抵抗力,从而使杀虫剂对昆虫无效,这同样适用于软件测试。进行相同的重复测试,该方法将无助于发现新的缺陷。因此我们不能简单地依靠现有的测试技术来进行所有的测试,必须不断寻找、或改进现有的测试方法,使测试更有效率 -
没有错误就是好的 有可能99%没有缺陷的软件也是不能使用的。如果我们对错误的需求进行了彻底的测试,这种灾难就发生了。软件测试不仅是找出缺陷,同时也需要确认软件是否满足需求,不满足需求的软件不太可能是好软件 -
测试活动依赖于测试内容 测试工作的开展是依赖于上下文的,这就意味着测试电子商务站的方式将不同于测试游戏的方式。开发的软件都不相同,我们需要根据应用程序类型使用不同的测试方法、测试技术
|