用于软件测试的方法和装置与流程

文档序号:18074036发布日期:2019-07-03 04:05阅读:180来源:国知局
用于软件测试的方法和装置与流程
本发明涉及软件测试
技术领域
,尤其涉及一种用于软件测试的方法和装置。
背景技术
:对于数据拼装协议复杂引起的数据装入与提取时引用数据位置不一致、数据交换双方定义数据类型/排序不一致和数组下标引用错误等特定类型的软件缺陷,使用常规的等价类划分、边界值分析、决策表分析、因果图等测试设计方法进行测试时,由于结果呈现的错误表象未造成强烈的视觉冲突,难以引起测试人员的注意。即使在测试过程中偶然发现了测试结果与期望输出之间存在偏差,在进行缺陷定位,需要复现故障现象时,由于故障数据的视觉特征不显著,测试人员对其不敏感,对于复现的异常也不能准确辨别和捕获。目前在数据处理相关测试中,主要存在以下三类问题:1、数据拼装缺陷的测试问题在数据存储、数据传输时,经常需要将不同数据拼装成单字节或多字节类型的字段,根据约定,逻辑上不相关的数据在拼装时占据相同字段的不同字节或不同比特位,达到节省传输时间或存储空间的目的,在存储资源不足或通信实时性要求高的应用场景下,以增加软件处理复杂度为代价,让步实现软件功能。在数据拼装和拆装解析时,遵循相同的比特位定义图来处理字段信息。当拼装协议比较复杂时(如单个字段内包含3种以上不同数据、单字段内不同字节的比特位定义规律不一致等),在有效数据的装入和提取之间可能形成位置引用上的偏差,导致后续数据处理出错。在一般功能调试时,因注入的正常激励数据特征不明显、故障发生频率低等原因,缺陷不易暴露。采用传统的测试设计方法,如决策表法、边界值分析法、等价划分法等,也缺乏针对性,可能随机地发现一些此类问题,但无法做到万无一失地完全暴露和准确定位,导致漏测现象。2、数据交换缺陷的测试问题在双机冗余热备份或其他需要数据交换的场合,根据交换信息的物理属性、数据表示范围等客观因素定义适当的数据类型,在通信协议中,不同信息的数据类型及其在数据包中的排序是影响通信收发正确性的两个重要的因素。当数据交换不是静态地一次性完成而是实时动态更新时,在正常调试过程中更加难以判断收发数据的一致性。根据软件需求规格说明进行常规的测试设计,由于数据特征不明显,在观测时也会因为对异常输出不敏感而产生疏漏。3、数组引用缺陷的测试问题在软件运行过程中,有时需要一次性地批量输入、处理和输出同类信息。为了保持同类数据处理的一致性,软件实现时一般采用数组作为缓存,通过变换数组下标依次引用不同数组元素进行循环处理。在循环引用数组元素时,经常出现数组下标引用偏差。在测试过程中,由于同类信息内容差异性不明显,即使出现下标引用错误,对测试结果的影响微乎其微,软件缺陷容易被忽视;对于特定测试而言,如果相邻数组中的数据恰好相同,测试结果根本无法暴露缺陷。在生命科学领域,染色是生物显微玻片标本制作中最重要的环节之一,先破坏细胞膜的选择透过性,再使用染色剂,将生物组织浸入染色剂内,使组织细胞的某一部分染上与其他部分不同的颜色或深度不同的颜色,产生不同的折射率,以便观察。染色的目的是为了突出重点,使观察对象从其周围背景中脱颖而出。在软件测试领域,目前尚未引入染色方法。本发明所要解决的技术问题之一是将染色方法引入软件测试领域,以解决现有技术中对上述软件缺陷测试中存在的问题。技术实现要素:本发明的发明人发现了上述现有技术中存在问题,并因此针对上述问题中的至少一个问题提出了一种新的技术方案。本发明提供了一种用于软件测试的方法和装置,通过将焦点对象与周围背景的不同赋值,特征明显,从视觉效果上扩大了焦点对象与周围背景的对比程度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。根据本发明的一个方面,提供了一种用于软件测试的方法,包括:生成测试数据,测试数据分为焦点对象和周围背景;将焦点对象赋值为第一预定值,将周围背景赋值为第二预定值;将测试数据作为输入,对软件进行测试;根据测试输出中焦点对象和周围背景的测试结果进行判断。在一个实施例中,焦点对象的预期测试结果为第一预期值,周围背景的预期测试结果为第二预期值,第一预期值与第二预期值不同。在一个实施例中,第一预定值为1,第二预定值为0(即对焦点对象的所有比特位赋值为1,周围背景的所有比特位赋值为0,下同);或第一预定值为0,第二预定值为1(即对焦点对象的所有比特位赋值为0,周围背景的所有比特位赋值为1,下同)。在一个实施例中,在测试数据的内部组织结构中周围背景与焦点对象之间形成全包围的二维平面或三维以上立体结构。在一个实施例中,在测试数据的内部组织结构中周围背景与焦点对象之间形成半包围的一维线性结构。在一个实施例中,对于数组访问错误或越界测试,采用双色着色法对上下边界数据进行着色,以非边界数据如正序/逆序第2个作为焦点对象,其余数据作为周围背景;或对于测试数据内部组织结构中各个字段的边界比特位作为焦点对象,其余数据作为周围背景。根据本发明的另一方面,提供了一种用于软件测试的装置,包括:测试数据生成单元,用于生成测试数据,测试数据分为焦点对象和周围背景;将焦点对象赋值为第一预定值,将周围背景赋值为第二预定值;测试单元,用于将测试数据作为输入,对软件进行测试;判断单元,用于根据测试输出中焦点对象和周围背景的测试结果进行判断。在一个实施例中,焦点对象的预期测试结果为第一预期值,周围背景的预期测试结果为第二预期值,第一预期值与第二预期值不同。在一个实施例中,第一预定值为1,第二预定值为0;或第一预定值为0,第二预定值为1。在一个实施例中,在测试数据的内部组织结构中周围背景与焦点对象之间形成全包围的二维平面或三维以上立体结构。在一个实施例中,在测试数据的内部组织结构中周围背景与焦点对象之间形成半包围的一维线性结构。在一个实施例中,测试数据生成单元,还用于对于数组访问错误或越界测试,采用双色着色法对上下边界数据进行着色,以非边界数据如正序/逆序第2个作为焦点对象,其余数据作为周围背景;对于测试数据内部组织结构中各个字段的边界比特位作为焦点对象,其余数据作为周围背景。本发明的用于软件测试的方法和装置,通过将焦点对象与周围背景的不同赋值,特征明显,从视觉效果上扩大了焦点对象与周围背景的对比程度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明用于软件测试的方法的一个实施例的示意图。图2为本发明测试数据的一个实施例的示意图。图3为本发明测试数据的另一个实施例的示意图。图4为本发明用于软件测试的装置的一个实施例的示意图。具体实施方式现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。图1为本发明用于软件测试的方法的一个实施例的示意图。优选的,本实施例的方法由本发明的用于软件测试的装置执行。如图1所示,本实施例的方法步骤如下:步骤101,生成测试数据,测试数据分为焦点对象和周围背景。在一个实施例中,如图2所示,在测试数据的内部组织结构中周围背景与焦点对象之间形成半包围的一维线性结构。在另一个实施例中,如图3所示,在测试数据的内部组织结构中周围背景与焦点对象之间形成全包围的二维平面结构,还可以是全包围的三维以上立体结构。步骤102,将焦点对象赋值为第一预定值,将周围背景赋值为第二预定值,即将焦点对象的所有比特位赋值为第一预定值,将周围背景的所有比特位赋值为第二预定值。可选的,第一预定值与第二预定值不同,对应的预期测试结果分别为第一预期值和第二预期值,并且第一预期值与第二预期值不同。本发明在对焦点对象和周围背景赋值时,选择相应输出值差别较大的数值,对测试数据进行着色(即赋值),以便于从视觉上突出焦点对象和周围背景的对比度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。例如,第一预定值为1,第二预定值为0。或者第一预定值为0,第二预定值1。可选的,对于数组访问错误或越界测试,采用双色着色法(即对焦点对象和周围背景分别赋值)对上下边界数据进行着色(即赋值),以非边界数据如正序/逆序第2个作为焦点对象,其余数据作为周围背景;或者对于测试数据内部组织结构中特殊字段的边界比特位作为焦点对象,其余数据作为周围背景。步骤103,将测试数据作为输入,对软件测试。步骤104,根据测试输出中所述焦点对象和所述周围背景的测试结果进行判断。通常输入1对应的输出为1,输入0对应的输出为0。根据测试缺陷的类型,选择将焦点对象和周围背景分别赋值为1和0,或0和1,输出后可以直观的显示测试结果,仅需将实际测试结果与预期测试结果进行比对,即可快速发现缺陷位置和缺陷类型。本发明的用于软件测试的方法,通过将焦点对象与周围背景的不同赋值,特征明显,从视觉效果上扩大了焦点对象与周围背景的对比程度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。图4为本发明的用于软件测试的装置的一个实施例的示意图。如图4所示,包括:测试数据生成单元401用于生成测试数据,测试数据分为焦点对象和周围背景;将焦点对象赋值为第一预定值,将周围背景赋值为第二预定值,即将焦点对象的所有比特位赋值为第一预定值,将周围背景的所有比特位赋值为第二预定值。在一个实施例中,测试数据生成单元401生成的测试数据为图2所示的测试数据的内部组织结构中周围背景与焦点对象之间形成半包围的一维线性结构。在另一个实施例中,测试数据生成单元401生成的测试数据为多维数据,例如图3所示的测试数据的内部组织结构中周围背景与焦点对象之间形成全包围的二维平面结构,还可以是全包围的三维以上立体结构。可选的,第一预定值与第二预定值不同,对应的预期测试结果分别为第一预期值和第二预期值,并且第一预期值与第二预期值不同。本发明在对焦点对象和周围背景赋值时,选择相应输出值差别较大的数值,即对测试数据进行差异化着色。以便于从视觉上突出焦点对象和周围背景的对比度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。例如,第一预定值为1,第二预定值为0。或者第一预定值为0,第二预定值1。可选的,在数组访问错误或越界测试中,测试数据生成单元401采用双色着色法对上下边界数据进行着色,以非边界数据如正序/逆序第2个作为焦点对象,其余数据作为周围背景;或者对于测试数据内部组织结构中特殊字段的边界比特位作为焦点对象,其余数据作为周围背景。测试单元402用于将测试数据作为输入,对软件进行测试。判断单元403用于输出测试结果。通常输入1对应的输出为1,输入0对应的输出为0。根据测试缺陷的类型,选择将焦点对象和周围背景分别赋值为1和0,或0和1,输出后可以直观的显示测试结果,仅需将测试结果与预期测试结果进行比对,即可快速发现缺陷位置和缺陷类型。本发明的用于软件测试的装置,通过将焦点对象与周围背景的不同赋值,特征明显,从视觉效果上扩大了焦点对象与周围背景的对比程度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。本领域技术人员通过本发明可以了解的是,根据测试软件缺陷的类别和实际情况,选取焦点对象和周围背景,进行赋值,赋值不限于1和0,只要输出结果能突出软件缺陷,便于测试人员直观发现问题,定位缺陷位置即可。如果软件处理中对焦点对象有限幅要求(如最大值、最小值),当软件代码可见时,可对焦点对象和周围背景保持既定赋值方案,在软件解析焦点对象或周围背景后、且进行限幅判断前,插桩输出解析后的数据,以中间处理结果为依据,判断数据拼装、数据传输、数据交换和数组下标引用等的正确性。或者,按照需求中明确的边界值,对焦点对象或周围背景分别赋值,在不超出数据定义范围的前提下,尽量保持一方为1或0,另一方赋值效果等价于中间值,尽量保持焦点对象处理结果相对周围背景呈现比较强烈的视觉冲击效果。下面结合附图1-4,对本发明应用于数据拼装缺陷、数据交换缺陷及数组下标引用缺陷测试中的实施例进行示例性说明。1、数据拼装缺陷的测试在数据拼装缺陷的测试中,从整个字段中抽取参与拼装的部分数据内容当作焦点对象,将拼装形成的整个字段(除焦点对象外)当作周围背景。焦点对象是独立、完整、代表特定物理信息的数据,是字段中1个或多个比特位,这些比特位在字段中从属于相同或不同的字节(byte)或字(word)中,其所在字节或比特位的编号在字段内部连续或断开,如符号位可能与数值部分隔离。例如,如表1所示的测试数据结构,本实施例中共有A、B和C三组数据,每组数据都包括一个频带的数据1(1个符号位+2个数值位)和数据2(1个符号位+6个数值位)信息。每个数据都由符号位和数值位组成,共有6个数据,其中bi表示第i个比特位,A1数值表示A组数据1的数值位,A1符号表示A组数据1的符号位,其他表示以此类推。表1通过表1可以看出,共有两个双字节字,其中A组数据1和数据2以及B组数据1和数据2的数值位均存放在第一个双字节类型的字1中,而对应的符号位存在第二个字2中。在数据拼装中,字2的b15和b14由0占位,b8~b13位分别存放各数据中的字符位,b6~b7存放C组数据1的数值位,b0~b5存放C组数据2的数值位。为了测试在数据存取、传输时的正确性,以测试A组数据1存取或传输的正确性为例,将A组数据1对应的比特位作为焦点对象赋值(即着色)为1,将其他位作为周围背景赋值为0,如表2所示:字号b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b01110000000000000020010000000000000表2此时,A组数据1数值位和符号位对应的预期测试结果也为1,即输出A组数据1的预期值-3。如果读取或收到的A组数据1经解析后为-3,则说明结果正确;如果为3,则说明A组数据1的符号位引用错误,如果结果是0、-1或-2,则为数值位引用错误。同理可以对其他数据采用类似的赋值方案进行赋值,确定相应的焦点对象和周围背景,对焦点对象赋值1,对周围背景赋值0,根据测试结果与预期测试结果的比对快速检测数组在存取、传输和拼装中是否正确。然后,进一步对软件缺陷定位。例如,在对B组数据1测试中,得到的测试结果为3,说明B组数据1在存取或传输中符号位出现了错误,为了定位错误来源,进一步修改对测试数据的赋值方案,如表3所示。字号b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b01000000001100000020000110000000000表3此时,可以看出,将字2的b10位也划分为焦点对象,赋值为1,如果此时测试结果为-3,可定位缺陷来源于软件读取B组数据1的符号位时,引用比特位的编号时少加了1。如果测试结果仍为3,可初步定位缺陷来源于软件读取数据1符号时,引用比特位编号时多加了个1;在第二种情况下要准确定位,则继续扩大焦点对象着色范围。对于其他例子发现的软件缺陷,可以采用同样的方法,有控制地逐步扩大焦点对象着色范围,达到缺陷定位的目的。2、数据交换缺陷的测试不同标准数据类型占用字节数目不同或表示数据范围不同。如long型(长整型)占用字节数是int型(整型)的2倍;char型(字符型)与unsignedchar型(无符号字符型)表示范围分别是[-128,127]和[0,255]。在数据传输和数据交换时主要关注双方定义的数据类型包含的字节数目是否一致,如果不一致就会造成数据表示范围错误,并且殃及相邻数据的使用。以数据收发双方都是16位嵌入式处理器为例,char型占用1个字节,int类型占用2个字节,long类型占用4个字节。设发送方定义的数据包结构体如下:typedefstruct{intdatum1;longdatum2;chardatum3;}send;而接收方定义的数据包结构体如下:typedefstruct{intdatum1;intdatum2;chardatum3;}receive;在遵循字节对齐原则的前提下,结构体内定义的相邻数据单元是连续存储或传输的。在本例中,不考虑数据存储采用大端(big-endian)或小端(little-endian)模式,也不考虑数据发送时先从哪端开始发数据,发送方数据包存储空间分配如表4所示:表4如表4所示,由于收发数据包中对第二个数据的类型定义不一致,发送方的long型数据占用字节数是接受字节的2倍,造成的结果是发送的第二个数据被接收方错误解析成了第二和第三个数据而出错。此时,将发送方的第二个数据作为焦点对象,各位赋值为1,其他数据作为周围背景,各位赋值为0,对测试数据的赋值如表5所示:表5对应预期的测试结果中,第一个数据为0,第二个数据为0xFFFFFFFF=4294967295,第三个数据为0。测试结果中,接收的第一个数据为0,而第二个数据为0xFFFF=65535,第三个数据为0xFF=255,暴露并定位出是由于第二个数据类型不匹配造成的缺陷。在一个实施例中,也可以将第二个数据的各位赋值为0,其他数据的各位赋值为1,如表6所示:表6此时,发送方测试数据中发送的第二个数据为0,接收的第二个数据也为0,而发送的第三个数据是0xFF=255,而接收的第三个数据为0,很容易暴露出软件出现缺陷,此时,由于出错的是第三个数据,位于数据包的边界,对此需进一步修改焦点对象和周围背景,进行相应的赋值,来最终定位缺陷原因。3、数组引用缺陷的测试在对诸如同类数据处理的数组访问错误或越界的问题的测试中,以C语言为例。C语言中数组访问最容易出现数组访问下标差1的缺陷。因此测试时需要对批量数据处理时第一组数据和最后一组数据进行测试。假设有100组结构相同的数据(为了简化,设为char型)需要处理,现有技术中,如此规模数据,软件通常会采用数组进行缓存,并在循环结构中通过下标逐次增/减1的方式访问数组进行处理。以非边界数据如正序/逆序第2个作为焦点对象,所有比特位赋值为1;其余数据作为周围背景,所有比特位赋值为0。本例数据访问单元为字节,不考虑比特位交叉、翻转等罕见情况,只考虑整体字节引用错误。如表7所示,数据2和数据99为焦点对象,各比特位赋值1,其他数据为周围背景,此时可以看出,焦点对象不必须是相邻的数据。在数据处理中从数组中提取输入数据时,可能出现3种测试结果,分别是正确、污染焦点对象左侧数据和污染焦点对象右侧数据。对应的测试结果如表7所示,其中正确结果为预期测试结果,测试结果1为污染焦点对象左侧数据的情况,测试结果2为污染焦点对象右侧数据的情况。表7测试人员通过观察测试结果,即可快速判断软件进行数据处理时引用数组下标的正确性。在本实施例的情况下,污染焦点对象右侧数据的测试结果2较为常见。本发明的用于软件测试的方法和装置,通过将焦点对象与周围背景的不同赋值,特征明显,从视觉效果上扩大了焦点对象与周围背景的对比程度,可辨识度高,有利于暴露软件处理焦点对象时可能引入的缺陷,解决了数据收发、存取双方未严格遵循相同协议时可能出现的漏测问题。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1