精华内容
下载资源
问答
  • 分析了初始缺陷的存在对混凝土动强度影响规律,结果显示:在加载初期,加载速率越高,初始缺陷对材料动强度影响越明显,但是在加载后期此影响减弱;当荷载达到材料强度点时,不同加载速率下,初始缺陷对混凝...
  • 本文介绍了如何使用两个经典的分析模型,来控制缺陷跟踪过程。这两个模型叫做《活动bug走势图》、《bug打开关闭图》。另外,在文章中还会提到两个概念:“bug收敛”、“零bug反弹”,具体含义会在介  缺陷跟踪...
  • 缺陷接地结构(DGS)在微带线等...文章分别对具有代表性哑铃型DGS结构和螺旋线型DGS结构进行详尽的模型分析,分析和总结了各个因素变化对DGS频率特性和等效模型影响,并进行投版测试,测试结果与分析结果近似一致。
  • 测试缺陷模型分析

    2015-09-17 10:03:19
    下面是转载测试模型分析。  测试目标是要发现错误,因此在编写测试用例时候也要遵循这个目标,尽量在软件最薄弱环节多编写测试用例。虽然测试时有很多单个输入变量、多个输入变量组合,但优秀软件测试...

    下面是转载的测试模型分析。

     测试的目标是要发现错误,因此在编写测试用例的时候也要遵循这个目标,尽量在软件的最薄弱环节多编写测试用例。虽然测试时有很多单个输入变量、多个输入变量的组合,但优秀的软件测试人员不会依靠运气,
    他们有着丰富的经验和直觉,可以从中找到哪些是需要进行测试的,哪些不需要测试,哪些操作可能会引起软件失效。把这些测试人员的经验和直觉尽量归纳和固化,就形成了一些故障模型。
    故障模型指明了故障是如何以及为什么会在软件执行时引起软件失效。在测试过程中,我们可以按照这些故障模型所提供的缺陷类型和寻找该类缺陷的方法找到尽量多的缺陷。


      ---------------------------------------------------------------------------------------------------


      1、输入非法数据


      1.1 缺陷产生原因


      开发人员通常用以下3种技术来处理非法输入:


      ◆ 防止不正确的输入进入被测软件。过滤掉不正确的输入,只允许合法输入通过界面。


      ◆ 输入了不正确的数据后,软件提示错误信息,拒绝不正确的输入。


      ◆ 允许不正确的输入进入系统并进行处理,软件失效时调用异常处理程序,显示一些错误信息。


      可见开发人员除了编写主要的功能代码外,还必须编写对非法输入的检查代码,这些代码经常被遗忘,或者编写完这部分代码后,开发人员很少认真检查,导致处理非法输入经常出错。


      1.2 如何发现这类问题


      进行测试时从输入值的属性出发,一般考虑以下三点:


      ◆ 输入类型:键入无效的类型常会产生错误信息。


      ◆ 输入长度:对于字符型,键入太多的字符常会引出错误信息。


      ◆ 边界值:输入边界值或超过边界值的数据。


      1.3 测试方法小结


      ◆ 应用场合:GUI的输入。


      ◆ 测试方法:分别从输入数据的类型、长度、边界值等方面进行考虑。


      ◆ 测试信息检查:


        ● 错误信息和错误要一致。


        ● 错误信息的内容为空,用户不知道为什么出错。


        ● 显示的错误信息是给开发人员调试使用的,例如“Error 5-unknown data”,开发人员可以通过该信息很容易找到错误类型,但是用户根本不明白,不知道做错了什么。


      ◆ 测试知识储备:牢记各基本数据类型的边界值。


      ---------------------------------------------------------------------------------------------------


      2、输入默认值


      2.1 缺陷产生原因


      一旦软件中使用了变量,就必须赋给初始值,如果在赋值之前就使用了这些变量,软件就会失效,正确地使用变量的顺序是:声明变量à给变量赋值à使用变量。通常会由于以下两个原因使变量的默认值不正确:


      ◆ 给变量赋值这一步经常会被开发人员不经意地路过。


      ◆ 开发人员有时不确定到底要赋什么初始值,就随便给了一个值,但用户并不认可该值,这种情况下,软件并不一定会失效,但对用户的使用会带来很多不便。例如某程序把打印默认输出份数设置为2份,会给用户造成很大麻烦。


    2.2 如何发现这类问题


      确定应用软件中所使用的数据有以下一些基本原则:


      ◆ 查找选项按钮、配置面板、安装屏幕等。这种屏幕上显示的数据常常在应用程序的许多地方用到。


      ◆ 查阅源代码的数据声明部分(如果可以得到)。


      ◆ 确定了要测试的数据,可以通过以下操作来强制使用或不使用默认的值:


        ● 接受软件显示的默认值。有时软件需要用户输入一个值,如果没有输入任何值,软件就可能失效。这时可以只是简单的单击“确定”按钮来接受默认值,完成这个功能测试。


        ● 键入空值。删掉默认值,使输入域变成空值。


        ● 将默认值改为另一个值,这样会使应用程序以不同的值来运行。


        ● 将输入值改为另一个值,然后再变以空值。


      一个好的软件会这样处理以上情况,将输入的不合法内容默认为合法边界内的某个合理值,或者返回错误提示信息。


      2.3 测试方法小结


      ◆ 应用场合:需要有默认值的地方。


      ◆ 测试方法:分别从选项按钮、配置面板、安装配置、开始界面等方面进行考虑,强制使用或不使用默认值等。


      ◆ 测试知识储备:全面理解需求规格说明书中对默认值的要求;同时深刻理解被测软件的行业背景。


      ---------------------------------------------------------------------------------------------------


      3、输入特殊字符集


      3.1 缺陷产生原因


      应用程序接受字符串输入,如果程序没有针对特殊输入进行特殊编程,那么就有可能导致程序


      挂起,主要包括以下3种情况:


      ◆ 字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。应用程序有时只能处理普通字符,当输入特殊字符时就会出现错误。


      ◆ 实现应用程序的程序设计语言有特定的处理一些字符和字符串的方法。例如,C语言把\n、++和&这样的字符用于特殊目的。如果将这些字符串键入到对话框中,程序必须进行错误处理,否则容易产生错误。


      ◆ 应用程序有时也使用设置名称、系统对象和程序的保留字符串集合。只要在程序中使用了这些字符串,就可能导致失效。


      3.2 如何发现这类问题


      ◆ 根据被测软件所处的操作系统、使用的程序设计语言、字符集等信息列出表格,通过测试小组的讨论,标明应用表格中的哪些字符和数据类型作为输入来测试。


      ◆ 根据经验,软件很少会因为这种操作而崩溃,通常它会挂起没有响应。


      3.3 测试方法小结


      ◆ 应用场合:需要接受字符输入的地方。


      ◆ 测试方法:根据被测软件的具体情况输入非法字符。


      ◆ 测试知识储备:尽可能多地了多地了解字符集、程序设计语言和操作系统中的保留字符串及其特定含义,可以使我们更好地分辨这类缺陷。


    4、输入使缓冲区溢出的数据


      4.1 缺陷产生原因


      开发人员没有考虑传送给内存缓冲区的字符串的大小。如果缓冲区只能保留固定长度的字符串,输入更长的字符串就会改写其他的内存存储单元,引起操作系统强制性地终止应用程序。


      4.2 如何发现这类问题


      当应用程序允许输入字母、数字时,通过GUI控件(如文本框),或者通过API调用的参数来进行这种测试。


      ◆ 首先弄清楚要测试的输入域的长度,输入最大字符串测试。


      ◆ 输入一个比最大字符串长的字符串,应用程序可能出现错误提示信息,提示不允许输入;或者输入了更长的字符串使应用程序崩溃。


      4.3 测试方法小结


      ◆ 应用场合:需要接受字符输入的地方。


      ◆ 测试方法:根据被测软件的具体情况输入最大字符串或输入一个比最大字符串更长的字符串。


      ◆ 测试知识储备:尽可能多地和开发人员讨论,以了解和确定输入域的合理长度。


      ---------------------------------------------------------------------------------------------------


      5、输入产生错误的合法数据组合


      5.1 缺陷产生原因


      测试多个输入值的组合,每个输入值已被单独测试过,但是这些值的组合可能会互相影响而引起软件失效。


      5.2 如何发现这类问题


      首先要确定测试哪些输入组合,并弄清楚它们之间的“关系”。如果具备以下任一特性,就可以认为这些变量是有“关系”的。


      ◆ 描述的是有关单个内部数据结构的属性和内容。例如,输入面板需要用户输入列表的“行”和“列”,这时测试人员要输入单个内部数据结构“列表”的属性“行和列”。


      ◆ 一起用在了一个计算中,也就是将多个输入用做一个内部计算的操作数,因此这些输入变量具有了相互“关系”。


      5.3 测试方法小结


      ◆ 应用场合:输入值之间存在依赖关系。


      ◆ 测试方法:输入可能是存在问题的组合值。


      ◆ 测试知识储备:尽可能多的内部数据结构的属性和内容,并与开发人员探讨,以确定输入的数据值。


      ---------------------------------------------------------------------------------------------------


      6、产生同一个输入的各种可能输出


      6.1 缺陷产生原因


      单个输入产生多种输出的情况与先前的输入和被测系统的状态都有关系。例如,在文字处理程序中单击“关闭”按钮,如果文件被编辑且未被保存,程序将提示是否保存文件。如果文件已被保存过,则文件直接关闭。


      6.2 如何发现这类问题


      测试人员必须具有关于被测系统软件的业务方面的知识,具备各种程序文档,明确一个输入可以产生何种输出。我们可以据此列出关于程序输入与输出的一个列表,然后进行测试。


      6.3 测试方法小结


      ◆ 应用场合:同一输入对应多个输出的情况。


      ◆ 测试方法:测试输入对应的每一个输出。


      ◆ 测试知识储备:全面理解需求规格说明书中的内容,找出输入与输出之间的关系。


    7、输出不符合业务规则的无效输出


      7.1 缺陷产生原因


      有时开发人员也可能对业务了解不深刻,对有些问题也是一知半解,因此编写出的软件就会产生不符合业务逻辑的问题。另外在绝大多数情况下开发人员会忽略处理没有遵循一般规则的输入,如果不对这些特殊情况进行编程处理,软件就会产生错误的结果。


      7.2 如何发现这类问题


      ◆ 测试人员应该尽可能地学习的涉及问题的领域。


      ◆ 有时在列举出无效输出后,也很难知道哪些输入组合能强制这些输出产生。这时测试人员必须先要确定哪些输入与输出有关,然后用产生意外结果的输入组合进行测试,测试过程中要注意输入执行顺序,用不同的顺序执行可能得到不同的结果。如果不能强制无效的输出产生,就说明软件没有这方面的缺陷。


      7.3 测试方法小结


      ◆ 应用场合:强制产生不符合业务背景的知识。


      ◆ 测试方法:列举出所有的无效输出,然后逐一测试。


      ◆ 测试知识储备:全面理解需求规格说明书中的内容,熟悉行业背景知识。


      ---------------------------------------------------------------------------------------------------


      8、输出属性修改后的结果


      8.1 缺陷产生原因


      输出常常具有可修改的属性,如颜色、形状、维数及大小等,用户可以修改这些属性。在这种情况下,开发人员必须编码、设立初始或默认属性值,然后编码允许用户编辑这些属性。当用户改变了这些属性后,内部的相应变量值也随着变化,再次进行处理时,这些值没有被重新恢复为默认值,输出的属性就被强制改变了。


      8.2 如何发现这类问题


      该测试方法可以使用在那些输出具有可编辑性、可修改性的功能中。测试人员首先要仔细了解能够产生的输出,特别要注意具有可编辑属性的输出。测试人员的任务就是强制每个输出产生,并编辑其属性,然后再次强制输出产生。


      8.3 测试方法小结


      ◆ 应用场合:输出的结果,可以由用户修改属性得出。


      ◆ 测试方法:强制每个输出产生,并编辑其属性,然后再次强制产生输出。


      ◆ 测试知识储备:全面理解需求规格说明书中的内容,了解能够产生的输出。


      ---------------------------------------------------------------------------------------------------


      9、屏幕刷新显示


      9.1 缺陷产生原因


      通常GUI软件会产生刷新问题,因为GUI在对窗口进行覆盖、移动和调整大小时,必须刷新屏幕才能使对象重新显示。但是如果经常刷新,容易减慢应用程序的运行速度;如果不刷新,又会影响用户对程序的使用,使用户必须停止工作,去寻找刷新的方法才可以继续工作。所以开发人员有时候不能很好地确定什么时候需要刷新,需要刷新多大范围的区域,这就发生了令人烦恼的刷新问题。


      9.2 如何发现这类问题


      测试刷新问题的方法是增加、删除称移动屏幕上的对象,这样会使某些对象重新显示。如果不能正确、及时地进行重新显示,就产生了软件缺陷。我们可以通过以下几个方法来检查刷新:


      ◆ 从起始位置移动对象。先移动一点,然后增加移动幅度;先移动一次或两次,然后多次移动,确保覆盖了所有区域。


      ◆ 从覆盖对象的边界开始一点点覆盖,使其中一个对象遮住别一个对象。


      ◆ 使用不同类型的对象。如果应用程序支持多种类型的对象,如文本对象、图形对象等,就把这些不同对象混在一起使用。


    9.3 测试方法小结


      ◆ 应用场合:一个对象包含在另一个对象中,拖动被包含对象时,可能出现刷新问题。


      ◆ 测试方法:增加、删除和移动屏幕上的对象。


      ◆ 测试知识储备:全面理解需求规格说明书中的内容,了解程序中对象之间的关系。


      ---------------------------------------------------------------------------------------------------


      10、数据结构溢出


      10.1 缺陷产生原因


      所有数据结构的大小都有上限。一些数据结构会逐步增加长度以充满机器内存容量或磁盘空间,而其它数据结构具有固定的上限。开发人员经常对有关数据结构的内容进行编码,忘记结构本身的物理局限。


      10.2 如何发现这类问题


      ◆ 确定数据结构的界限,尝试将过多的值输入数据结构。应该特别注意界限为数据类型的边界256、1024、32768等上溢的测试。


      ◆ 对于下溢的测试,可以尝试多删除一个数据,例如当结构为空时,尝试再删除,或者添加一个数据,尝试删除两个数据时的情况。


      10.3 测试方法小结


      ◆ 应用场合:程序中存在数组。


      ◆ 测试方法:尝试将过多的值输入数据结构,测试上溢;对于下溢的测试,可以尝试多删除一个数据。


      ◆ 测试知识准备:全面理解需求规格说明书中的内容,确定数据结构的界限。


      ---------------------------------------------------------------------------------------------------


      11、数据结构不符合约束


      11.1 缺陷产生原因


      在编程过程中对内部数据结构都有所约束,包括大小、维数、类型、形状、屏幕上的位置等。我们测试的重点就是用户能够设置的属性,这些属性使用了一组参数来约束。在建立数据项和随后对数据项进行修改的任何时刻都要对数据属性的约束进行检查。初始化代码中修改后的代码有错误,在修改错误的时候只修改了初始化部分,而忽略了对其他部分的修改,使得其修改不完全,不彻底。


      11.2 如何发现这类问题


      ◆ 确认候选数据,并列出其可修改的属性。对每个属性列出有效值的允许范围、约束的条件等。


      ◆ 确定所有可修改属性的功能位置。


      ◆ 对数据进行初始化,改变每个属性以确定是否正确进行了约束。


      如果数据约束遭到破坏,可能导致系统崩溃,或者表现为响应时间延迟,错误信息不正确以及使用错误数据产生的无效输出。


      11.3 测试方法小结


      ◆ 应用场合:应用程序内部的数据结构存在约束。


      ◆ 测试方法:破坏内部数据结构的约束。


      ◆ 测试知识储备:全面理解需求规格说明书中的内容,确定内部数据结构的所有约束。


    12、操作数与操作符不符


      12.1 缺陷产生原因


      几乎每个运算符都有它无效的操作数,对于具体的操作符,开发人员在使用它们时,必须编写错误检查代码。例如:除以零的问题。


      12.2 如何发现这类问题


      找到程序中包含的数据或输入(即操作数)的计算(即操作符)、数学表达式(即操作符和操作数的组合)及对图形的操作。另外,对多个操作数进行组合也更容易发生错误。例如,字符和数字都可以使用“+”操作符。对字符通过“+”把它们连成一串;对数字通过“+”来进行加法运算。如果系统尝试把字符和数字相加,即进行相互矛盾的操作,就会引起软件失效。


      12.3 测试方法小结


      ◆ 应用场合:需要进行数值计算的程序或图形操作的程序。


      ◆ 测试方法:对于数值计算考虑操作数和操作符之间的限定关系,对于图形计算还要考虑各种输入数据之间的组合关系。


      ◆ 测试知识储备:全面掌握被测软件中操作符对操作数的要求。掌握不同的操作符和操作数具有的不同的有效和无效的取值范围。


      ---------------------------------------------------------------------------------------------------


      13、递归调用自身


      13.1 缺陷产生原因


      函数有时会递归调用自身,如果不限制执行次数,递归就会出现问题,它不断地调用自身,很快地占用机器资源,最终产生溢出,使程序崩溃或挂起。产生这类问题的主要原因是开发人员没有编码来保证循环和递归调用的终止,通常是在循环的开始或结束时缺少检查条件。


      13.2 如何发现问题


      在软件中寻找可以使用递归调用的功能。这时可以制作一个列表,标明软件中可能嵌入递归的功能的列表,然后自己引用自己来检查程序是否能正确处理。


      13.3 测试方法小结


      ◆ 应用场合:需要和其它对象进行交互的地方。


      ◆ 测试方法:考虑对象的自我交互或复制。


      ◆ 测试知识储备:全面掌握被测软件的需求。


      14、计算结果溢出


      14.1 缺陷产生原因


      当所有的输入和数据都有效时,计算的最终结果也可以是无效的。所有变量都有值域范围,有时开发人员在执行计算时会忘记检查这些上限。


      14.2 如何发现这类问题


      一次又一次地执行计算或使用很大或很小的输入和数据进行计算,重点测试数据类型的初始值或边界值附近的值。


      14.3 测试方法小结


      ◆ 应用场合:应用程序执行能够导出待产生结果并进行内部存储的计算。


      ◆ 测试方法:强制数据产生上溢或下溢。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解计算变量的上下限。


    15、数据共享或关联功能计算错误


      15.1 缺陷产生原因


      通常对孤立的功能进行测试时不会发生很多缺陷,而当把单独的功能和同一软件中的其它功能结合时,就可能出现很多软件缺陷。这种缺陷的产生往往是在两个或更多的功能使用了共享数据集,而每个功能允许使用的数据范围不同引起的。例如,一个功能可能会将某数据项设置为特定大小,然而另一个功能却允许该数据项的大小可以超过第一个功能的处理能力。开发人员根本没考虑到该数据项在其它功能处也可以修改,他们只是编码保证在该功能中数据的合法性,而当使用该数据时,没有再编码来检查可以使用的范围;而此时,另一个功能修改了共享数据,当再使用这些数据时就产生了缺陷。


      15.2 如何发现这类问题


      当应用程序在同一时间完成一个以上的功能或当一个以上的功能在同一时间处于运行状态时,就可以使用该方法进行测试。利用一个功能影响输入、输入数据或另一个功能的计算。在测试前要确定哪些功能是相互依赖或共享数据的:


      ◆ 能应用同样输入的每个功能。如果这些功能有相互重叠的输入域,就可能存在交互问题。


      ◆ 有类似的输出产生功能。如果某些功能结合起来产生单个输出,就说明这些部件之间存在关系,应该被一起测试。


      ◆ 一个功能被包含在另一个功能的计算中。例如要测试鼠标选取对象的功能,不仅要测度鼠标选取屏幕上的文本的功能,还可以把包含超链接文本、粗体、斜体、符号及图形元素放在一起,测试鼠标选取这些元素的功能。


      15.3 测试方法小结


      ◆ 应用场合:一个以上的功能在同一时间处于运行状态。


      ◆ 测试方法:以点代面,重点测试某一功能,对可能与这个功能相连的其它功能附带测试。


      ◆ 测试知识储备:全面掌握被测软件的需求,在测试之前对被测功能之间的依赖关联有所掌握,另外还需要对共享数据有所掌握。


      ---------------------------------------------------------------------------------------------------


      16、文件系统超载


      16.1 缺陷产生原因


      开发人员可能会忘记编写代码处理满状态的文件系统,忽略了诸如CreateFile,WriteFile等操作系统API的错误检查代码,没有这样的代码,当显示满状态的文件系统时,API调用就会失败,软件就会在没有任何警告的情况下崩溃。


      16.2 如何发现这类问题


      创建满容量或近乎满容量的文件系统,然后强制执行各种通过输入或输出访问文件系统的操作;或者打开足够多的文件,打开文件时会强制备份创建的副本,从而占用双倍的存储空间,这种操作达到一定程度时,会达到该系统的容量,于是就能测试应用程序处理超载状态的文件系统的能力。(通常通过磁盘配额实现)


      16.3 测试方法小结


      ◆ 应用场合:系统较大,运行时需要较大的空间。


      ◆ 测试方法:强制磁盘系统满容量或容量小于等于被测软件运行时所需容量后,运行被测软件或利用测试工具模拟磁盘状况。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解被测软件处理超载状态的文件系统的能力。


      ---------------------------------------------------------------------------------------------------


      17、介质忙或不可用


      17.1 缺陷产生原因


      当多个应用程序同时访问硬盘(或其它存储器),操作系统为提供多请求服务会慢下来,并且必须对应用程序进行编程以处理这些延迟,当延迟变得很长时,没有对这些错误进行响应的应用程序就会出现错误。


      17.2 如何发现这类问题


      通过启动大量应用程序,强制它们都打开并保存文件使文件系统处理繁忙状态;或者同时下载大量文件也可以使后台拥挤;检查被测软件能否正确处理这种情况,应用程序应该给出错误信息或等待批示,提示用户正在处理。


    17.3测试方法小结


      ◆ 应用场合:应用程序的运行需要消耗大量内存或运行时需要其它相关软件同时运行。


      ◆ 测试方法:启动大量程序或利用测试工具模拟磁盘状况。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解被测软件运行时对系统的要求。


      ---------------------------------------------------------------------------------------------------


      18、介质损坏


      18.1 缺陷产生原因


      ◆ 损坏的介质可能会使操作系统传回错误代码,这些错误代码没有在应用程序中编程处理。


      ◆ 操作系统不能检测出所有这样的错误,操作系统自己也有错误或者损坏的介质损坏了部分操作系统。


      18.2 如何发现这类问题


      使用损坏了的介质,例如,刮伤、灰尘、磁干扰等。检查应用程序对错误的处理能力,应用程序可以对错误进行处理或者将问题告诉用户,并要确保用户数据文件不丢失、为损坏。


      18.3 测试方法小结


      ◆ 应用场合:应用程序对安全的要求较高,对灾难恢复的要求较高。


      ◆ 测试方法:用实际损坏介质的方法测试应用程序。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解被测软件运行时对系统的要求。


      ---------------------------------------------------------------------------------------------------


      19、文件名不合法


      19.1 缺陷产生原因


      操作系统本身具有自己的文件命名规范,例如,Dos的8.3格式。在Windows中,文件名不能超过255个字符,并且文件名不可以含有/ \ : < > ? * |这8个字符,以及AUX、COM1、COM2、COM3、COM4、CON、LPT1、LPT2、LPT3、LPT4、NUL及PRN这些操作系统保留字。


      开发人员在应用程序中使用不相同的规则管理文件名,当应用程序和操作系统使用的文件名命名规则不一致的时候,就会发生问题。


      19.2 如何发现这类问题


      ◆ 保存文件为操作系统不允许的文件名,例如,文件名中含有/ \ : < > ? * |这8个字符,测试应用程序是否不允许输入包含这些字符的文件名。


      ◆ 输入一些应用程序不允许使用的文件名,例如,使用过长的、含有特殊字符的、可能相互作用的字符作为文件名,检查应用程序能否识别该文件。


      19.3 测试方法小结


      ◆ 应用场合:几乎所有涉及需要输入文件名功能的应用程序。


      ◆ 测试方法:输入操作系统不允许的文件名和应用程序不允许使用的文件名。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解操作系统和应用程序对文件名的要求。


    20、更改文件访问权限


      20.1 缺陷产生原因


      在操作系统中,可以设置不同用户对不同的文件具有不同的访问权限(如读写、只读等)。程序员必须在访问文件的函数中考虑文件的访问权限,例如在每个文件写入之前检查文件的访问权限。如果没有进行检查,就会导致程序出错。另外,如果文件访问失败,程序员必须要有正确的错误的代码,以保证程序可以正确捕获所产生的错误。


      20.2 如何发现这类问题


      ◆ 打开两个应用程序,关闭同一个文件。例如,把同一个应用程序的不同版本安装在同一机器上,在不同版本的应用程序中打开和关闭同一文件,或试着在某个应用程序中打开在另一个程序中已打开的文件,这可能导致文件访问权限的冲突。


      ◆ 打开一个文件,在操作系统中修改文件的访问权限。有些操作系统允许权限高的用户控制一般用户已经打开的文件。


      20.3 测试方法小结


      ◆ 应用场合:需要对文件进行读写操作的应用程序。


      ◆ 测试方法:修改文件访问权限或使用低权限的用户访问文件。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解读写文件所需的权限。


      ---------------------------------------------------------------------------------------------------


      21、文件内容受损


      21.1 缺陷产生原因


      开发人员编写代码来读取和写入文件,他们也编写代码来调用系统API得到文件指针,并打开和关闭文件。由于某些原因,这些系统API会失败或传回异常返回值。如果开发人员没有编写代码来验证传回的预期返回值,则应用程序会由于无法处理异常而失败。


      21.2 如何发现这类问题


      ◆ 手工损坏文件。从应用程序已创建的某个完整文件开始对其进行编辑,改变文件格式和内容。


      ◆ 使用测试工具。模拟CRC(循环冗余校验)错误,或强制文件API返回无效的返回码。


      21.3 测试方法小结


      ◆ 应用场合:需要对文件格式和内容进行校验的应用程序。


      ◆ 测试方法:手工损坏文件或利用测试工具模拟CRC错误。


      ◆ 测试知识储备:全面掌握被测软件的需求,了解文件读写需要的权限。

    展开全文
  • 本文介绍了如何使用两个经典的分析模型,来控制缺陷跟踪过程。这两个模型叫做《活动bug走势图》、《bug打开关闭图》。另外,在文章中还会提到两个概念:“bug收敛”、“零bug反弹”,具体含义会在介  缺陷跟踪...
  • 针对现有方法检测复杂结构二进制代码安全缺陷的不足,提出新的分析模型,并给出其应用方法。首先以缺陷的源代码元素集合生成特征元素集合,抽取代码结构信息,构建分析模型。然后依据各类中间表示(IR,intermediate ...
  • 地质缺陷对坝体结构影响分析模型研究,顾冲时,伍元,针对坝基及坝肩地质缺陷对大坝结构性态影响较大问题,深入研究了地质缺陷的蠕变特性及其变化规律,据此构建了地质缺陷的法向和
  • 本文利用有限元分析软件Deform-2D建立宏细观两种尺度下的模型进行数值模拟,细观尺度下的模型为含有疏松缺陷的代表性特征体积元(RVE),从宏观模型中抽取适当边界条件加载到代表性特征体积元(RVE)上,从而保证从宏观...
  • 缺陷预防(Defect ...DP缺陷预防处于CMM(Capability Maturity Model)能力成熟度模型的第5个级别,分析以前一些偶然发现的问题,并且在将来为类似的可能的缺陷进行检查。一个成熟的研发团队,会通过实施DP来提...

    缺陷预防(Defect Prevention)是一种用于整个软件开发生命周期中识别缺陷根本原因和防止缺陷发生的策略,也是全面质量管理(Total Quality Management)的本质。DP缺陷预防处于CMM(Capability Maturity Model)能力成熟度模型的第5个级别,分析以前一些偶然发现的问题,并且在将来为类似的可能的缺陷进行检查。一个成熟的研发团队,会通过实施DP来提高质量和降低研发成本。
    使用DP缺陷预防后缺陷会呈现以下一些特性:

    1. 缺陷发现率与时间的关系
      使用DP缺陷预防策略后每个阶段所发现的缺陷数与使用DP缺陷预防策略前所发生缺陷数的分布如图所示。
      在这里插入图片描述
      从图中可以看出,使用DP预防缺陷策略后,缺陷的特性发生了以下几个方面的变化:
      一是:需求和设计阶段所发现的缺陷数占所有缺陷的比例增大,这说明前期发现的缺陷比较多,这样可以降低缺陷修复的成本。
      二是:缺陷总数下降,也就是发现的总的缺陷数下降了,这得益于大部分的缺陷发现在前期的研发阶段。
    2. 缺陷过滤器
      使用DP预防缺陷策略后,缺陷会像漏斗一下,每一个测试阶段都可以过滤掉一些缺陷,缺陷过滤器如图所示。
      在这里插入图片描述
      从图中可以看出每经历一个阶段,缺陷就减少20%左右,直到测试结果,系统中99%的缺陷已经被解决。
    展开全文
  • 缺陷分类模型研究

    2021-03-16 03:08:49
    本文提出了基于相似度技术的缺陷分类模型的概念。 缺陷分类模型可以更有效地分析软件缺陷,并提供快速解决问题的基础。 本文将此模型应用于GUI项目,并给出了基于大量接口缺陷的GUI缺陷分类模型。 实验表明,该模型...
  • 本文介绍了如何使用两个经典的分析模型,来控制缺陷跟踪过程。这两个模型叫做《活动bug走势图》、《bug打开关闭图》。 另外,在文章中还会提到两个概念:“bug收敛”、“零bug反弹”,具体含义会在介绍中说明。 先...

    缺陷跟踪过程是软件工程中的一个极其重要的过程。本文介绍了如何使用两个经典的分析模型,来控制缺陷跟踪的过程。这两个模型叫做《活动bug走势图》、《bug打开关闭图》。

    另外,在文章中还会提到两个概念:“bug收敛”、“零bug反弹”,具体含义会在介绍中说明。

    先看张图片,这就是两个模型的分析图片,集成在一个坐标里面了。活动bug走势是一条线,bug打开关闭是柱图,X轴是时间。下面我们详细说说这两个模型的含义。

    先要说几个名词解释:

    1.活动bug数。状态不是closed的所有bug的总数。活动bug指在项目中还需要大家去关注的bug,有的bug管理工具还有invalid、duplicate状态,这些是不属于活动bug的,但是later的bug,属于活动bug。

    2.打开bug次数和关闭bug次数。每新增1个bug或者是reopen一个bug,打开次数都会被记加一。每close一个bug,关闭次数会加一。

    说明了这些概念,上面两个模型就比较好理解了。活动bug走势曲线上的每个点,表示当天软件中还存在多少个活动bug。这个数字越大,说明软件的质量越差。而bug打开关闭图中,每天都会有红色、蓝色共两根柱子,表示当天打开、关闭bug的次数,如果当天这两个数字都很高,说明bug的处理非常活跃,软件非常不稳定。注意,活动bug的单位是“个”,而打开关闭的单位是“次”,因此我们用线图和柱图分别表示。

    下面讲一下模型的用法。一般的软件测试过程,都有3个阶段,从上面的图中能清楚的看出来。

    阶段1:测试组对系统开始进行全面测试,打开bug的速度明显高于关闭bug的速度,活动bug数急速上升,当完成了全部测试用例的执行时,活动bug数达到最大;

    阶段2:开发组全力修复bug,测试组一边验证bug,一边小范围的回归测试,验证bug的周边功能。这时,关闭bug的速度高于打开 bug的速度,活动bug数回落。当活动bug数刚开始回落的时候,称为“bug收敛”。最终,活动bug会降到一个很低的位置,有时,会达到“零bug ”,不过,这并不说明项目可以发布。

    阶段3:测试组再次对软件系统进行一次完整的回归测试。在这个过程,还会打开一些bug,但是,数量很少,这称为“零bug反弹”。完成了这一轮回归之后,软件才真正稳定下来,进入发布候选过程。

    所以,我们可以通过这两个模型,来检查项目的测试进展是否正常,软件的质量是否稳定,检查方法如下:

    • 如果第二阶段已经开始,但是活动bug仍在继续上升,没有回落,说明打开bug速度仍很高,可能是第一阶段用例执行还没有完成,或者开发组修复bug速度较低;
    • 如果第二阶段结束,活动bug没有回落到低水平,说明大量的bug还需要修复,软件质量低;
    • 如果第三阶段,打开、关闭bug的次数很多,说明bug活动频繁,系统稳定性差。

    因此,正常的项目测试应该是,活动bug先上扬,再回落,最后在低位小幅振荡,并且打开关闭次数很少。有了这两个分析模型,我们对项目进度得控制,就更有把握了。

    展开全文
  • 分析了木材节子缺陷图像特点,将彩色图像作为一个整体图像进行处理,保护了彩色图像信息特性,提出了一种基于AOS扩展C-V矢量模型及背景填充耦合木材节子缺陷彩色图像分割算法。对Chan-Vese提出基于...
  • 软件缺陷的分析

    2013-09-29 16:19:59
    缺陷分析本质上是对缺陷中包含信息项进行收集,汇总,分类之后使用统计方法或者分析模型得出分析结果。 2、缺陷数据收集 缺陷提交时需要收集信息 1 缺陷的严重等级 2 缺陷所在模块 3 缺陷发现时间 4 ...

    1、缺陷分析定义

    缺陷分析本质上是对缺陷中包含的信息项进行收集,汇总,分类之后使用统计方法或者分析模型得出分析结果。

    2、缺陷数据的收集

    缺陷提交时需要收集的信息
    1 缺陷的严重等级
    2 缺陷所在的模块
    3 缺陷发现的时间
    4 缺陷所在的版本号
    5 缺陷的发现者
    6 负责修改缺陷的工程师
    缺陷关闭时需要收集的信息
    1 缺陷关闭的时间
    2 关闭缺陷的版本
    3 修复缺陷而改动的代码行数产生缺陷的根本原因 (例如 :需求,分析,编码,软/硬配置)   

    3、分析 

    • 缺陷的发展趋势(新发现缺陷数量增长趋势和关闭数量的趋势)缺陷发展趋势图有助于我们了解各版本中缺陷数量的分布。特别在回归测试阶段中,缺陷的分布可以直接反映出版本的质量状况。
    • 缺陷分布状况:缺陷按模块的分布情况;缺陷按产生的根本原因的分布状况。模块分布图是反映的是各个模块中缺陷数量的分布状况。它可以被用来评估各模块质量水平,开发难度。同时也能从侧面反映出测试资源在各模块分布情况
    • 缺陷产生的原因分布图。该分布图是缺陷分析中最为重要的一张图表,因为它可以直接反映出各软件工程活动的质量,为软件过程的改进提供直接的参考数据。一般来说,缺陷产生的根本原因划分的越细致,分析的结果就越精确。
    展开全文
  • 分析了传统Rayleigh模型的不足,在考虑缺陷移除失败因素基础上,建立缺陷预测改进模型,并使用经验值及最大似然法估计获得模型参数。实例验证表明,改进模型可以有效地提高软件缺陷预测值与实际值拟合度。
  • 文章分析了支持向量机SVM作为二值分类模型应用到软件缺陷预测中的实现方法,构造了基于SYM的可迭代增强的缺陷预测模型SVM―DP.在13个基准数据集上开展比较实验,定量地分析了应用各种核函数对SVM-DP模型性能的影响。...
  • 由于吸收介质Zn S对谐振波长的吸收,可在反射光谱中获得与谐振波长对应的缺陷峰。以多孔硅的厚度为被优化变量,利用反向传播神经网络进行结构参数优化获得多孔硅的厚度最优值。由Goos-H?nchen位移建立待测样本浓度与...
  • 设计并实现了一种基于软件缺陷模型的测试系统(DTS)。对常见软件缺陷模式进行了分类、分析和总结。基于状态机提出了软件缺陷模式描述方法及统一测试框架,提出通过区间运算来减少测试误报和提高测试精度。与...
  • 基于小波强局部分析能力和分形强非线性处理能力优势联合,提出了缺陷振动检测子波关联维分析法....数值模型试验验证表明,该技术具有弱缺陷特征检测能力强、参数化和高效率等特点以及较好应用潜力.
  • 大多数研究人员在假设训练和将来测试数据必须在... 最后,我们分析了复杂性指标与模型性能之间关系,以深入了解数据复杂性对缺陷检测影响。 我们乐观地认为我们方法可以为检测模型的管理和设计提供决策支持。
  • 介绍了小波分析方法在冷轧板形缺陷识别中应用。识别中首先利用小波变换、 分解、 重构达 到消噪目的,然后利用 3 类模型进行缺陷辨识。 该方法解决了缺陷 1/ 4浪和边中复合浪无法辨识 问题。</p>
  • 目的 为了研究冻土两种应力-应变数学模型产生拟合误差原因。...结论 传统冻土双曲线和指数曲线应力-应变模型的拟合误差是由其各自数学模型缺陷造成,合理应力-应变模型的数学特征方程应相对独立。
  • 分析了GM(1,1)模型的构造原理,指出GM(1,1)预测公式系数选取存在缺陷。基于残差和为零准则,就预测公式系数选取问题提出新计算方法。进而按理想状态时绝对误差对新方法做了进一步拓展,并给出计算方法...
  • 主题模型TopicModel:LDA的缺陷和改进

    万次阅读 2015-04-27 10:57:16
    LDA的缺陷和改进 1. 短文本与LDA ICML论文有理论分析,文档太短确实不利于训练LDA,但平均长度是10这个数量级应该是可以的,如peacock基于query 训练模型。 有一些经验技巧加工数据,譬如把同一session 的查询拼接...
  • 被试选取ADHD儿童30名,正常儿童10名,对被试进行听觉持续性操作测试,对每个序列平均正确率进行时间序列模型分析,比较2组被试间差异.根据数据特征选用Holt模型对ADHD儿童持续性注意水平进行建模及拟合,而正常...
  • 在点源热脉冲传热模型的理论基础上,采用格林函数法建立了由于单个杂质缺陷吸收引起温度场模型,得到了杂质附近温度场解析表达式,分析了激光脉冲参数对温度场影响情况,并在单个杂质吸收理论基础上推导得到...
  • PN学习作为一种新型二元分类器,对结构化无标签数据...提出了基于PN学习方法软件模块缺陷预测模型,结合灰色关联分析方法对实验样本进行降维处理从而提高模型的运算速度.通过实验和分析,证明了本方法有效性.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,751
精华内容 700
关键字:

模型分析的缺陷