您的位置 首页 > 数码极客

如何发现软件缺陷——发现质量缺陷如何处理!

软件缺陷的分类标准

软件缺陷一般分为输入/输出缺陷、逻辑缺陷、计算缺陷、接口缺陷、数据缺陷。本小节简单介绍软件缺陷的基本分类。

(1)I/O缺陷

I/O缺陷是业务流中最常见到的一种缺陷,也是数据流传递中首先遇到的缺陷。如项目开发中开发者未考虑数据输入的有效性,就会导致数据输入缺陷。例如,在网站的登录或注册页面中,登入功能的程序编写就要考虑到用户名的有效性,如果网站要求使用邮箱登入,邮箱的有效性就是开发者要考虑的主要内容。

输入缺陷主要包括不正确的输入缺陷、描述错误信息或者有遗漏缺陷等。国内网站每天会受到几十万至几百万次攻击,如果网站在上线前没有经过严格的测试,那么保障网站的安全将成为无稽之谈,所以要对输入的数据进行严格限制。

输出缺陷主要包括输出格式错误缺陷、结果错误缺陷、数据具有不一致和遗漏性缺陷、不合乎逻辑输出缺陷等。对输出缺陷进行检测需要测试人员具备良好的测试修养,测试中不仅要关注逻辑,还要关注提示信息。例如,在密码安全等级的提醒测试中,密码越复杂,提示的安全等级应该越高。提示功能的优劣关系到用户体验,也关系到项目在市场上的生存周期。

(2)接口缺陷

接口缺陷会造成典型的功能问题,使产品的基本功能与开发文档不符。接口缺陷主要包括I/O 调用错误缺陷、内置功能接口调用错误缺陷、参数传递不符合 API 文档缺陷、兼容效果差缺陷等。接口缺陷的存在直接影响项目的逻辑变化,很可能导致项目的数据流传递失败。接口缺陷是项目开发一定要避免的缺陷。

(3)逻辑缺陷

逻辑缺陷是造成数据流缺陷的根本问题,逻辑缺陷的存在会导致业务流程中的数据出错。逻辑缺陷主要包括遗漏条件判断缺陷、重复判断缺陷、程序编写时极端条件判断出错缺陷,还有可能会出现判断条件的丢失缺陷、错误的操作符缺陷。

一般出现逻辑缺陷的可能性较小,但是一旦出现逻辑缺陷,就会对整个项目的核心数据流产生比较大的影响,危害整个数据的业务流。

(4)计算缺陷

计算缺陷主要包括不正确的算法缺陷、遗漏计算缺陷、不正确的操作缺陷、错误的括号缺陷、精度问题缺陷、错误的内置函数缺陷等。检查计算缺陷时需要测试人员根据项目的开发文档,从计算的业务需求出发,对计算公式与计算方式进行核对,对计算的整个流程、相关参数进行简单的校验。

(5)数据缺陷

数据缺陷主要包括数据的有效范围缺陷、数据类型不正确缺陷、数据的基本不一致缺陷、数据引用的错误等基本错误类型。数据缺陷可能导致业务展示效果差,出现统计偏差。

软件缺陷的严重性和优先级

严重性,顾名思义,是指软件缺陷影响软件运行的严重程度;优先级,表示软件缺陷修复时的先后顺序。严重性与优先级都是软件测试缺陷的重要表征,不仅影响软件缺陷的统计结果,还会影响修正缺陷的先后顺序,甚至关系到软件是否能够如期发布。

软件测试初学者或没有软件开发经验的测试工程师往往不能很透彻地理解这两个概念的作用和处理方式,导致在实际测试工作中不能正确表达缺陷的严重性和优先级。这将严重影响软件缺陷报告的质量,且不利于有效处理严重的软件缺陷,可能会延误处理软件缺陷的时机。

1.缺陷的严重性和优先级

严重性就是软件缺陷对软件质量的破坏程度,即此软件缺陷的存在将对软件的功能和性能产生何种影响。在软件测试中,判断软件缺陷的严重性应该从软件最终用户的角度出发,即判断软件缺陷严重性的时候要为用户考虑,关注软件缺陷对用户体验的恶劣影响。

优先级指处理和修复软件缺陷的先后顺序,即何种缺陷需要优先修复,何种缺陷可以稍后修复。在确定软件缺陷优先级时,应更多站在软件开发工程师的角度去思考问题,因为缺陷的修复是个复杂的过程,有些软件缺陷并不单单是技术上的问题,而且开发工程师更熟悉软件的代码,更清楚修复缺陷的难度和风险。

2.严重性和优先级的关系

软件缺陷的严重性和优先级是含义不同但紧密联系的两个概念,两者从不同的角度描述了软件缺陷对软件质量和最终用户的影响程度和处理方式。

一般情况下,严重程度高的软件缺陷会具有较高的修复优先级。软件缺陷的严重程度高,对软件造成的质量危害就大,必须优先处理;相反,严重程度低的软件缺陷可能只是影响用户的视觉体验,可以稍后处理。但是,严重性与优先级并不总是一一对应的。特殊情况下严重程度高的软件缺陷,优先级却不一定高,而一些严重程度低的缺陷却需要及时处理,具有较高的优先级(例如:某款软件的帮助按钮无法显示,严重程度高,修复优先级低;公司名称打错,严重性低,修复优先级高)。

修复软件缺陷并不是纯技术工作,有时需要综合考虑发布市场以及质量风险等因素。例如,某个十分严重的软件缺陷仅在十分极端的情况下才会显现,这样的软件缺陷就没必要马上解决。另外,如果修复一个软件缺陷,会影响到该软件的整体架构,可能引发更多潜在的软件缺陷,并且该软件由于各方面的压力必须尽快发布,此时即使缺陷的严重程度很高,该缺陷是否还要继续修复也需要全盘考虑。

3.如何确定缺陷的严重性和优先级

软件缺陷的严重性一般由测试人员来确定,优先级由软件开发人员确定较为合适。但在实际测试工作中,通常都是由软件测试人员在提交的软件缺陷报告中同时确定软件缺陷的严重性和优先级。

在确定软件缺陷的严重性和优先级时,首先要全面了解该软件缺陷的特征,综合考虑用户、开发人员及市场等因素。功能性的软件缺陷通常较为严重,具有较高的优先级,而软件界面中的缺陷的严重性一般较低,优先级也较低。

软件缺陷的严重性可分为4个等级,以下是等级划分参考。

(1)致命的缺陷(S1):软件任何一个主要功能完全丧失,用户数据受到破坏,软件崩溃、悬挂或者危及用户人身安全(如软件崩溃造成硬件设备漏电等)。

(2)严重的缺陷(S2):软件的主要功能部分丧失,数据不能保存,软件的次要功能完全丧失,系统所提供的功能或服务受到明显的影响(如软件的某个菜单不起作用)。

(3)一般的缺陷(S3):软件的次要功能没有完全实现,但不影响用户的正常使用(如软件内的某些文字编写不正确)。

(4)较小的缺陷(S4):用户操作不方便,软件内出现错别字或排版不整齐,但不影响功能操作和执行。

软件缺陷的优先级可分为4个等级,以下是等级划分参考。

(1)立即解决(P1):缺陷导致软件几乎不能使用或测试不能继续,需立即修复(如软件的主要功能错误或者造成软件崩溃、数据丢失的缺陷)。

(2)高优先级(P2):缺陷严重影响测试,需要优先考虑修复(如影响软件功能和性能的一般缺陷)。

(3)正常排队(P3):缺陷需要正常排队等待修复(如本地化软件的某些字符没有翻译或者翻译不准确的缺陷)。

(4)低优先级(P4):缺陷可以在开发人员有时间时被修复(如对软件的质量影响非常轻微或出现概率很低的缺陷)。

4.处理缺陷的严重性和优先级时常见的错误

正确处理缺陷的严重性和优先级并非易事,一些经验不丰富的测试和开发人员在处理缺陷时经常犯的错误有以下几种。

(1)将较轻微的软件缺陷报告成高严重性和高优先级,这将影响对软件质量的正确评估,同时也耗费开发人员辨别和修复软件缺陷的时间。

(2)将十分严重的软件缺陷报告成低严重性和低优先级,这样可能会有很多严重的缺陷不能得到及时的修复。如果在软件发布前,发现还有很多由于误判软件缺陷严重性和优先级而遗留的严重缺陷,将需要投入很多人力、物力以及时间来进行修复,甚至会影响软件的正常发布。

因此,正确区分和处理软件缺陷的严重性和优先级,是软件测试人员、开发人员,乃至项目组全体人员的头等大事。处理软件缺陷的严重性和优先级是保证软件质量的重要环节,应该引起足够的重视。

5.如何表示缺陷的严重性和优先级

软件缺陷的严重性和优先级一般按照等级划分,每家公司和每个项目的具体划分方式有所不同。为了更加准确地表示缺陷的信息,一般将缺陷的严重性和优先级划分为4个等级。假如划分的等级超过4个,则会造成分类和判断尺度过于复杂;如果少于4个,精确性有时就不能保证。

严重性与优先级的具体表示方法为:用数字表示,用文字表示,用文字加数字表示。例如,普遍使用S1、S2、S3、S4分别表示致命、严重、一般和较小,使用P1、P2、P3、P4分别表示立即解决、高优先级、正常排队和低优先级。

6.其他注意事项

比较规范的软件测试工作,一般都会使用软件缺陷管理数据库进行软件缺陷的报告和处理,同时需要在测试工作开始前对所有参与项目的测试人员和开发人员进行相应的培训,针对软件缺陷的严重性和优先级的划分方法做出统一的规定。

在测试工作进行过程中和项目接收后,应充分利用统计功能进行缺陷严重性的统计,确定每一个软件模块的开发质量,并统计出软件缺陷修复优先级的分布情况,把控好测试进度,使测试按照计划有序进行,有效处理缺陷,降低开发风险和成本。

经验丰富的测试人员通常可以正确地表示软件缺陷的严重性和优先级,为软件缺陷的处理提供及时并且准确的相关信息。经验丰富的开发人员造成严重缺陷的情况较少,但是千万不要将软件缺陷的严重性作为衡量某一开发人员开发水平高低的主要依据,因为软件每一个模块的开发难度各不相同,每个模块的质量要求也有所差异。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何发现软件缺陷,发现质量缺陷如何处理,如何预防软件缺陷,如何描述软件缺陷?,发现软件缺陷的方法,如何定义软件缺陷呢?”边界阅读