一、软件缺陷的定义
一个软件至少满足以下5个规则之一才称发生了一个软件缺陷:
(1)软件未实现产品说明书要求的功能。
(2)软件出现了产品说明书指出不应该出现的错误。
(3)软件实现了产品说明书未提到的功能。
(4)软件未实现产品说明书虽未明确提及但应该实现的目标。
(5)软件难以理解、不易使用、运行缓慢或者从测试员的角度看----最终用户会认为不好。
二、测试的原则
2.1 完全测试程序是不可能的
找出所有的软件缺陷是不可能的,即使最简单的程序也不行,主要有以下4个原因:
(1)输入量太大。
(2)输出结果太多。
(3)软件执行路径太多。
(4)软件说明书是主观的,可以说从旁观者来看是缺陷。
2.2 软件测试是有风险的行为
软件测试员要学会的一个关键思想是如何把数量巨大的可能测试减少到可以控制的范围,判断出那些测试重要,哪些测试不重要。
每一个软件项目都有一个最优的测试量,如下图所示:
2.3 测试无法显示潜伏的软件缺陷
软件测试员可以报告软件缺陷存在,但是不可以报告软件缺陷不存在。
2.4 找到的软件缺陷越多,就说明软件缺陷越多
软件缺陷和生活中的害虫一样,都是成群出现。所以在日常测试中,如果在某个地方发现了缺陷,可以以该缺陷为出发点继续寻找隐藏的缺陷。
2.5 杀虫剂怪事
农药杀虫,总是用一种农药的话,杀虫就会对这种农药有免疫作用,就需要使用不同的农药进行杀虫。同样,软件测试员也必须编写不同的、新的测试程序,对程序的不同部分进行测试,以找出更多软件缺陷。
2.6 并非所有软件缺陷都要修复
不需要修复软件缺陷的原因大概有以下几个:
(1)没有足够的时间
(2)不算真正的软件缺陷
(3)修复的风险太大
(4)不值得修复
软件测试员必须要具备的素质之一就是要进行良好的判断,弄清楚在什么情况下不能追求完美。
2.7 什么时候才叫缺陷难以说清
如果一个软件中存在问题,程序员没有发现,测试员没有发现,用户也没有发现,那么这个问题算不算软件缺陷呢?很难说清楚,每个人都有自己独特的见解,也没有标准答案。
2.8 产品说明书从没有最终版本
时代变化太快,软件变的更庞大、更复杂、功能更多,导致软件开发周期越来越长。除了紧跟变化别无他法。
2.9 软件测试员在产品小组中不受欢迎
软件测试员的工作就是挑别人的毛病,挑产品的毛病、挑业务的毛病、挑研发的毛病。嗯........这......
所以软件测试员也需要有保持团队/小组和睦的能力,比如以下几种方式:
(1)早点找出缺陷
(2)控制情绪。发现bug不要“虚张声势”。
(3)不要总是报告坏消息,可以多找研发聊天,共同探讨学习!!!!
2.10 软件测试是一个讲究条理的技术职业
随着时代的变化,软件行业已经发展到必须使用专业的软件测试员程度了。