软件缺陷的种类划分

按照软件缺陷的产生原因,可以将其划分为不同的缺陷类别:

  1、功能不正常

  简单地说就是所应提供的功能,在使用上并不符合产品设计规格说明书中规定的要求,或是根本无法使用。这个错误常常会发生在测试过程的初期和中期,有许多在设计规格说明书中规定的功能无法运行,或是运行结果达不到预期设计。最明显的例子就是在用户接口上所提供的选项及动作,使用者操作后毫无反应。

  2、软件在使用上感觉不方便

  只要是不知如何使用或难以使用的软件,在产品设计上一定是出了问题。所谓好用的软件,就是使用上尽量方便,使用户易于操作。如微软推出的软件,在用户接口及使用操作上确实是下了一番功夫。有许多软件公司推出的软件产品,在彼此的接口上完全不同,这样其实只会增加使用者的学习难度,另一方面也凸显了这些软件公司的集成能力不足。

  3、软件的结构未做良好规划

  这里主要指软件是以自顶向下方式开发,还是以自底向上方式开发。如果是以自顶向下的结构或方法开发的软件,在功能的规划及组织上比较完整,相反以自底向上的组合式方法开发处的软件则功能较为分散,容易出现缺陷。

  4、提供的功能不充分

  这个问题与功能不正常不同,这里指的是软件提供的功能在运作上正常,但对于使用者而言却不完整。即使软件的功能运作结果符合设计规格的要求,系统测试人员在测试结果的判断上,也必须从使用者的角度进行思考,这就是所谓的“从用户体验出发”。

  5、与软件操作者的互动不良

  一个好的软件必须与操作者之间可以实现正常互动。在操作者使用软件的过程中,软件必须很好地响应。例如在浏览网页时,如果操作者在某一网页填写信息,但是输入的信息不足或有误。当点击“确定”按钮后,网页此时提示操作者输入信息有误,却并未指出错误的哪里,操作者只好回到上一页重新填写,或直接放弃离开。这个问题就是典型的在软件对操作互动方面未做完整的设计。

  6、使用性能不佳

  被测软件功能正常,但使用性能不佳,这也是一个问题。此类缺陷通常是由于开发人员采用了错误的解决方案,或使用了不恰当的算法导致的,在实际测试中有很多缺陷都是因为采用了错误的解决方法,需要加以注意!

  7、为做好错误处理

  软件除了避免出错之外,还要做好错误处理,许多软件之所以会产生错误,就是因为程序本身对于错误和异常处理的缺失。例如被测软件读取外部的信息文件并已做了一些分类整理,但刚好所读取的外部信息文件内容已被损毁。当程序读取这个损毁的信息文件时,程序发现问题,此时操作系统不知该如何处理这个情况,为保护系统自身只好中断程序。由此可见设立错误和异常处理机制的重要性!

  8、边界错误

  缓冲区溢出问题在这几年已成为网络攻击的常用方式,而这个缺陷就属于边界错误的一种。简单来说,程序本身无法处理超越边界所导致的错误。而这个问题,除了编程语言所提供的函数有问题之外,很多情况下是由于开发人员在声明变量或使用边界范围时不小心引起的。

  下面是一个典型的缓冲区溢出的边界错误:

 

Void func (void)
{
        int I;
        char buffer[256];      //Buffer定位为256
        for (I=0;I<512;I++)     //越界
        buffer[I]=’t’;
….}
 9、计算错误

  只要是计算机程序,就必定包括数学计算。软件之所以会出现计算错误,大部分出错的原因是由于采用了错误的数学运算工时或未将累加器初始化为0.

  10、使用一段时间所产生的错误

  这类问题是程序开始运行正常,但运行一段时间后却出现了故障。最典型的例子就是数据库的查找功能。某些软件在刚开始使用时,所提供的信息查找功能运作良好,但在使用一段时间后发现,进行信息查找所需的时间越来越长。经分析查明,程序采用的信息查找方式是顺序查找,随着数据库信息的增加,查找时间自然会变长。这就需要改变解决方案了!

  11、控制流程的错误

  控制流程的好坏,在于开发人员对软件开发的态度及程序设计是否严谨。软件在状态间的转变是否合理,要依据业务流程进行控制。例如,用软件安装程序解释这类问题最方便直观。用户在进行软件安装时,输入用户名和一些信息后,软件就直接进行了安装,未提示用户变更安装路径、目的地等。这就是软件控制流程不完整导致的错误问题。

  12、在大数据量压力下所产生的错误

  程序在处于大数据量状态下运行出现问题,就属于这类软件错误。大数据量压力测试对于Server级的软件是必须进行的一项测试,因为服务器级的软件对稳定性的要求远比其它软件要高。通常连续的大数据量压力测试是必须实施的,如让程序处理超过10万笔数据信息,再来观察程序运行的结果。

  13、在不同硬件环境下产生的错误

  这类问题的产生与硬件环境的不同相关。如果软件与硬件设备有直接关系,这样的问题就是数量相当多。例如有些软件在特殊品牌的服务器上运行就会出错,这是由于不同的Server内部硬件了不同的处理机制。

  14、版本控制不良导致的错误

  出现这样的问题属于项目管理的疏忽,当然测试人员未能尽忠职守也是原因之一。例如一个软件被反映有安全上的漏洞,后来软件公司也很快将修复版本提供给用户。但在一年后他们推出新版本时,却忘记将这个已解决的bug-fix加入到新版本中。所以对用户来说,原本的问题已经解决了,但想不到新版本升级之后,问题又出现了。这就是由于版本控制问题,导致不同基线的merge出现误差,使得产品质量也出现了偏差。

  15、软件文档的错误

  最后这类缺陷是软件文档错误。这里所提及的错误,除了软件所附带的使用手册、说明文档及其它相关的软件文档内容错误之外,还包括软件使用接口上的错误文字和错误用语、产品需求设计PD、UI Spec等的错误。错误的软件文档内容除了降低产品质量外,最主要的问题是会误导用户!








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python——no module named XX

加PYTHONPATH吧&#xff0c;新建一个系统环境变量&#xff0c;把你的目录复制进去即可转载于:https://www.cnblogs.com/MarsMercury/p/4992629.html

CodeVS 1081 线段树练习 2

1081 线段树练习 2 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作 1&#xff1a;给区间[a,b]的所有数都增加X 2&#xff1a;询问第i个数是什么&#xff1f; 输入描述 Input Description第一行一个正整数n&#…

bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集

bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集 1、这道题我们主要就是要求出距离一个油站的最近的油站 首先我们dijkstra 求出任意一个点到 离他最近的油站的距离 2、然后会发现 如果一条边的两个端点 的最近油站不同的话 那么这条边就会在这两个油站的最短路上 3、然后对于…

python函数理解,python对函数的理解

函数函数可以提高编写代码效率、代码的重用、让程序更小、模块化可以将一段独立功能的代码集成在一个块中、封装独立功能# 函数定义(参数名为形式参数)def 函数名(参数名):函数体# 调用函数(享受封装的成功)函数名(实际参数)例&#xff1a;print函数print(sep,end) sep(元素中分…

06:空格分隔输出

描述 读入一个字符&#xff0c;一个整数&#xff0c;一个单精度浮点数&#xff0c;一个双精度浮点数&#xff0c;然后按顺序输出它们&#xff0c;并且要求在他们之间用一个空格分隔。输出浮点数时保留6位小数。 输入共有四行&#xff1a;第一行是一个字符&#xff1b;第二行是一…

iOS开发UI篇—九宫格坐标计算

iOS开发UI篇—九宫格坐标计算 一、要求 完成下面的布局 二、分析 寻找左边的规律&#xff0c;每一个uiview的x坐标和y坐标。 三、实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系&#xff0c;每个视图都只有一个父视图&#xff0c;拥有很多的子视图。 (3)…

工业4.0时代企业如何用CRM实现模式变革

当前&#xff0c;全球经济正处于变革的巨大浪潮之中&#xff0c;对于制造业来说&#xff0c;德国提出工业4.0&#xff0c;美国提出工业互联网&#xff0c;而我国&#xff0c;正在大力推进“中国制造2025”。制造业实现转型升级势在必行。我国政府提出&#xff0c;要大力支持传统…

oracle 9.2.0.2,在RedHat enterprise server 3 安装oracle9i 2.0.0.1 并升级到9.2.0.6

oracle9i 2.0.4上个月从oracle网站下载没有安装在els3上。参考了网上的一些文章&#xff0c;并根据文章的提示找了一些资料和补丁&#xff0c;完成了这次的安装。[more]1.安装RedHat EL3现在的安装界面都做的很好了,一路NEXT就可以安装了.如果有困难,请参考其他linux安装文档进…

spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式

spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式 在类名,接口头上注解使用在 JsonIgnoreProperties(value{"comid"}) //希望动态过滤掉的属性 例 JsonIgnoreProperties(value{"comid"}) public interface 接口名称{ } JsonIgnorePro…

HawkHost老鹰主机更换主域名方法

http://www.yd631.com/change-hawkhost-primary-domain/圣诞节优惠期间&#xff0c;很多童鞋们购买了老鹰主机&#xff0c;可能由于大家初次使用海外主机或者是CP面板的空间。购买主机的时候主域名是随便输入的或者是输入后想换一个。我们可以通过以下方法进行操作。之前我们QQ…

ERP CRM与SCM整合过程中的知识转移

ERP(Enterprise Resource Planning&#xff0c;企业资源计划)、CRM(Customer Relationship Management&#xff0c;客户关系管理)、SCM、CRM(Customer Relationship Management&#xff0c;客户关系管理)、SCM(supply chain management&#xff0c;供应链管理)作为现代企业管理…

ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安装oracle xe 11 x86_64

1.下载oracle xe我下载的是oracle-xe-11.2.0-1.0.x86_64.rpm.zip2. 安装必要程序或文件$sudo apt-get install unzip chkconfig libaio1 alien3.解压上面的oraclexxx.zip文件,然后进行转换$sudo alien -d --scripts oracle-xe-11.2.0-1.0.x86_64.rpm上面转换完成后会生成一个 o…

IEnumerable 遍历用法

咋一看到IEnumerable这个接口&#xff0c;我们可能会觉得很神奇&#xff0c;在一般的编程时&#xff0c;基本上我们是想不到去用它的&#xff0c;可是&#xff0c;俗话说得好&#xff0c;存在便是道理&#xff0c;那么&#xff0c;它对我们来说&#xff0c;能够带来哪些奇妙的事…

DELPHI设置枚举类型size

delphi枚举类型长度默认为2个字节(单字)&#xff0c;而在C中枚举为4个字节(双字)&#xff0c;如果需要跨这两个平台编程&#xff0c;传输结构时会由于数据长度不一造成灾难。 经过查找资料&#xff0c;原来delphi可以通过{$Z} {$Z-} {$Z1} {$Z4} 等宏设置枚举类型的长度&#x…

Nginx 反向代理 websocket 协议

为什么80%的码农都做不了架构师&#xff1f;>>> 主要配置内容 server {listen 80;server_name xxx.xxx.xxx;location / {try_files $uri $uri/ /index.html;root /workspace/www;index index.html index.htm;}location ^~/letchat/ {proxy_pass http:/…

oracle中区间大小,Oracle的逻辑结构(表空间、段、区间、块)——总结

Oracle逻辑结构全景结构图以下为个人整理的一些关于Oracle逻辑结构的相关数据字典&#xff1a;SELECT * FROMDBA_TABLESPACES--记录各个表空间的详细信息SELECT * FROMDBA_TABLESPACE_USAGE_METRICS--记录各个表空间的使用状况SELECT * FROMDBA_DATA_FILES --记录各个数据文件的…

C#3.0之神奇的Lambda表达式和Lambda语句

“Lambda 表达式”是一个匿名函数&#xff0c;它可以包含表达式和语句&#xff0c;并且可用于创建委托或表达式目录树类型。所有 Lambda 表达式都使用 Lambda 运算符 >&#xff0c;该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数&#xff08;如果有&#xff09…

[C++] Nested Radical Constant

做高数助教被天煞的大一学生坑了&#xff0c;发现是个未解问题&#xff0c;没有解析解。。 用C搞了下&#xff0c;就是这样。。。 No closed-form expression is known for this constant (Finch 2003, p. 8; S. Plouffe, pers. comm., Aug. 29, 2008). /*********************…

api-gateway实践(03)新服务网关 - 网关请求拦截检查

参考链接&#xff1a;http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html 一、为什么要拦截检查请求&#xff1f; 防止重放攻击、篡改重放&#xff0c;进行使用规格检查 1、请求可能是重放攻击 重放攻击的基本原理就是把以前窃听到的数据原封不动地重新发送给接收方…

oracle存储过程关键字有哪些,ORACLESTREAMS存储过程中的一些参数有哪些?

1&#xff0c;maintain_mode参数可取golbal或transportable tablepsaces&#xff0c;当该参数取global时&#xff0c;表示streams进行全库复制&#xff0c;否则表示streams进行表空间复制&#xff0c;需要在tablespace_names参数中指定待复制的一个或多个表空间。2&#xff0c;…