软件缺陷详述

Posted lqwcxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件缺陷详述相关的知识,希望对你有一定的参考价值。

软件缺陷产生的原因

软件缺陷就是通常所说的Bug,它是指软件中(包括程序和文档)存在的影响软件正常运行的问题。IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师协会)729—1983标准对软件缺陷有一个标准的定义:从产品内部看,缺陷是产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统运行过程中某种功能的失效或违背。
软件缺陷的产生主要是由软件产品的特点和开发过程决定的,比如需求不清晰、需求频繁变更、开发人员水平有限等。归结起来,软件缺陷产生的原因主要有以下几点。
(1)需求不明确。软件需求不清晰或者开发人员对需求理解不明确,导致软件在设计时偏离客户的需求目标,造成软件功能或特征上的缺陷。此外,在开发过程中,客户频繁变更需求也会影响软件最终的质量。
(2)软件结构复杂。如果软件系统结构比较复杂,很难设计出一个具有很好层次结构或组件结构的框架,这就会导致软件在开发、扩充、系统维护上的困难。即使能够设计出一个很好的架构,复杂的系统在实现时也会隐藏着相互作用的难题,而导致隐藏的软件缺陷。
(3)编码问题。在软件开发过程中,程序员水平参差不齐,再加上开发过程中缺乏有效的沟通和监督,问题累积越来越多,如果不能逐一解决这些问题,会导致最终软件中存在很多缺陷。
(4)项目期限短。现在大部分软件产品开发周期都很短,开发团队要在有限的时间内完成软件产品的开发,压力非常大,因此开发人员往往是在疲劳、压力大、受到干扰的状态下开发软件,这样的状态下,开发人员对待软件问题的态度是“不严重就不解决”。
(5)使用新技术。现代社会,每种技术发展都日新月异。使用新技术进行软件开发时,如果新技术本身存在不足或开发人员对新技术掌握不精,也会影响软件产品的开发过程,导致软件存在缺陷。

软件缺陷的分类

软件缺陷的处理流程


软件测试过程中,每个公司都制订了软件的缺陷处理流程,每个公司的软件缺陷处理流程不尽相同,但是它们遵循的最基本流程是一样的,都要经过提交、分配、确认、处理、复测、关闭等环节

(1)提交:测试人员发现缺陷之后,将缺陷提交给测试组长。
(2)分配:测试组长接收到测试人员提交的缺陷之后,将其移交给开发人员。
(3)确认:开发人员接收到移交的缺陷之后,会与团队甚至测试人员一起商议,确定该缺陷是否是一个缺陷。
(4)拒绝/延期:如果经过商议之后,缺陷不是一个真正的缺陷则拒绝处理,关闭缺陷;如果经过商议之后,确定其是一个真正的缺陷,则可以根据缺陷的严重程度或优先级等选择立即处理或延期处理。
(5)处理:开发人员修改缺陷。
(6)复测:开发人员修改好缺陷之后,测试人员重新进行测试(复测),检测缺陷是否确实已经修改。如果未被正确修改,则重新提交缺陷。
(7)关闭:测试人员重新测试之后,如果缺陷已经被正确修改,则将缺陷关闭,整个缺陷处理完成。 

常见的软件缺陷管理工具 

禅道,redmine

微软软件定义网络HNV PA和CA地址详述

NVGRE协议

        NVGRE(Network Virtualization Generic RoutingEncapsulation)是常用的隧道封装协议之一,NVGRE是使用通用的封装格式将二层网络数据包封装到三层网络数据包。NVGRE在Hyper-V网络虚拟化中扮演虚拟化IP的角色,HNV使用NVGRE作为隧道报头,源虚机发送数据包过程中先被启用了HNV的交换机重新封装到另外一个数据包里。新的数据包报头包含源和目标新的IP地址(IP虚拟化)及其对应的MAC地址和VSID信息,VSID存储在GRE的报头的Key区域,如图1所示。数据发送到目标物理机交换机后,目标HNV交换机将数据包拆开,然后将数据发送到目标虚机。

技术分享

图1  NVGRE封装隧道

 

PA和CA

        在同一个物理网络体系中,可以不借助VLAN技术,让环境里存在多个重复但不冲突的IP地址,取而代之的是Overlay技术实现网络虚拟化,在HNV里,每块虚拟网卡可关联两个IP地址—也就是CA和PA地址。

  • Customer Address(CA)。也称之为客户地址,因为这个IP地址是从租户自己创建的虚拟子网的IP地址池里获取的地址,CA地址就是分配给虚机操作系统的IP地址,可以使用ipconfig或者ifconfig等命令查看。客户的虚机部署在多租户的数据中心里使用CA IP地址时,并无感知虚机使用了网络虚拟化技术,从虚机自身的角度来看,和传统的网络并无差别。

  • Provider Address(PA)也称之为服务商地址,因为这个地址是在网络虚拟化架构里定义并且不是分配给虚机而是分配给物理主机的,PA地址的作用是NVGRE用于重新封装数据的IP地址,起到IP地址虚拟化的功能。PA地址无法在虚机操作系统里面使用ipconfig或者ifconfig等命令查看。PA地址空间用于运行虚机的物理机之间通信,只能在物理网络中查看。

        如果客户将虚机从自己数据中心迁移到多租户公有数据中心,那么CA地址帮助客户维持着已有的网络拓扑,在迁移到公有数据中心后,CA地址通过IP地址虚拟化公有数据中心基础网络结构保持着松耦合关系,这个IP虚拟化的过程由PA地址完成。因此HNV的本质其实是通过IP地址虚拟化的方式实现的。

       PA地址不是固定分配给物理机,物理机在PA地址空间里动态获取和释放PA地址。物理机要能分配PA地址,首先要将包含HNV逻辑网络的逻辑交换机分配给物理机,一旦有关联HNV逻辑网络的虚机创建在物理机上,这台物理机就会从PA IP地址池里获取一个PA IP地址。可使用Get-NetVirtualizationProviderAddress命令查看物理机所分配的PA地址,结果如下示例所示。

PS C:\>Get-NetVirtualizationProviderAddress      
ProviderAddress   : 10.2.22.14     
InterfaceIndex    : 31    
PrefixLength      : 24    
VlanID            : 222    
AddressState      : Preferred    
MACAddress        : 001dd8b71c6f    
ManagedByCluster  : False

       PA IP地址不是固定分配给物理机的而是动态变化的,只要有使用HNV逻辑网络的虚机运行,那么该虚机所在的物理机就会从地址池里拿一个PA地址,如果群集里的其他节点没有使用HNV的虚机网络则暂时不会分配PA地址。只有把虚机实时迁移到某台物理机节点后,这台物理机才会分配PA地址。失效的PA地址还会被回收,如果虚机发生迁移到其他节点,那么之前分配给物理机分配的PA地址可能会被回收,当虚机回迁到这台物理机时,则会重新分配一个新的PA地址。

       接下来我们通过实际案例来验证PA的动态分配。在群集中有两台物理服务器,分别是HYP06,HYP07。创建子网为10.2.22.0/24的PA逻辑网络并创建IP地址池,将该逻辑网络关联上逻辑交换机,并将逻辑交换机分配给这两台物理机。接着创建两台虚机,全部运行在HYP06物理机上,虚机一定要使用HNV逻辑网络,如图2所示。

技术分享

图2 两台虚机最初运行在同一台物理机HYP06

        先使用Get-NetAdapter命令查看逻辑网络的索引编号,然后使用Get-NetVirtualizationProviderAddress命令查询分配给物理机的PA地址,可见这个PA地址是分配给网卡编号为29的逻辑交换机(启用了HNV)而非其他网卡。在返回的结果中,可以看到HYP06的网卡编号为29的逻辑交换机已经分配了两个PA地址,分别是10.2.22.18和10.2.22.19,如下示例所示。

PS C:\> Get-NetAdapter     
Name             InterfaceDescription                     IfIndex    Status    
----             --------------------                     -------    ------    
LogicalSwitch    Microsoft Network Adapter Multiplex..    29         Up
PS C:\>Get-NetVirtualizationProviderAddress      
ProviderAddress      :10.2.22.19     
InterfaceIndex       :29    
PrefixLength         :24    
VlanID               :222    
AddressState         :Preferred    
MACAddress           :001dd8b71c77    
ManagedByCluster     :False    
ProviderAddress      :10.2.22.18     
InterfaceIndex       :29    
PrefixLength         :24    
VlanID               :222    
AddressState         :Preferred    
MACAddress           :001dd8b71c76    
ManagedByCluster     :False

        因为在HYP07上没有任何使用HNV的虚机,使用Get-NetAdapter命令检索到逻辑交换机的索引编号为31,以及使用Get-NetVirtualizationProviderAddress检索这个索引编号的逻辑交换机是否分配PA地址时,返回的结果为空,如下示例所示,意味着HYP07的逻辑交换机并未分配PA地址。

PS C:\> Get-NetVirtualizationProviderAddress 
PS C:\> Get-NetAdapter      
Name             InterfaceDescription                     IfIndex    Status    
----             --------------------                     -------    ------    
LogicalSwitch    Microsoft Network Adapter Multiplex..    31          Up


        使用实时迁移将虚机从HYP06迁移到HYP07,迁移结束,虚机运行在新的主机HYP07之上,如图3所示。

技术分享

图3 虚机从HYP06迁移到HYP07

        等待迁移结束后,登录HYP07上运行命令查看PA地址分配情况,返回的结果中,可以看到HYP07已经分配了两个PA地址,分别是10.2.22.20和10.2.22.21,如下示例所示。

PS C:\>Get-NetVirtualizationProviderAddress      
ProviderAddress    :10.2.22.21     
InterfaceIndex     :31    
PrefixLength       :24    
VlanID             :222    
AddressState       :Preferred    
MACAddress         :001dd8b71c79    
ManagedByCluster   :False   
 
ProviderAddress    :10.2.22.20     
InterfaceIndex     :31    
PrefixLength       :24    
VlanID             :222    
AddressState       :Preferred    
MACAddress         :001dd8b71c78    
ManagedByCluster   :False

        再将虚机实时回迁到HYP06上,虚机重新运行在HYP06上,如图4所示。

技术分享

图4 虚机重新运行在HYP06上

       这时候,再次登录HYP06主机,运行命令查看PA地址时,会发现分配的PA地址已经发生了变化,新的分别是10.2.22.22和10.2.22.23,如下示例所示。之前分配给HYP06的PA地址也会在稍后被回收到IP地址池里。

PS C:\>Get-NetVirtualizationProviderAddress      
ProviderAddress    :10.2.22.19     
InterfaceIndex     :29    
……               ……    
MACAddress         :001dd8b71c77    
……               ……    
ProviderAddress    :10.2.22.18     
InterfaceIndex     :29    
……               ……    
MACAddress         :001dd8b71c76    
……               ……    

PS C:\>Get-NetVirtualizationProviderAddress      
ProviderAddress    :10.2.22.23     
InterfaceIndex     :29    
……               ……    
MACAddress         :001dd8b71c7b    
……               :……    
ProviderAddress    :10.2.22.22     
InterfaceIndex     :29    
……               ……    
MACAddress         :001dd8b71c7a    
……               ……

        虚机经过多次在物理机之间实时迁移,导致物理机的PA多次重新分配和回收,在SCVMM里面运行Get-SCIPAddress命令查看时会发现PA地址逐渐被SCVMM回收到PA IP地址池。

 

 


本文出自 “黄利军的博客” 博客,转载请与作者联系!

以上是关于软件缺陷详述的主要内容,如果未能解决你的问题,请参考以下文章

《高级软件测试》实践作业3学习记录12月21日

探索式测试

软件测试-测试分类

aaa

单元测试发现是问题不是缺陷

单元测试发现是问题不是缺陷