【发明授权】写测试方法、读测试方法、读写测试方法及终端设备_百富计算机技术(深圳)有限公司_201810400405.2 

申请/专利权人:百富计算机技术(深圳)有限公司

申请日:2018-04-28

发明/设计人:董时舫;李健;李微微;胡月

公开(公告)日:2020-11-24

代理机构:深圳中一联合知识产权代理有限公司

公开(公告)号:CN108665938B

代理人:李艳丽

主分类号:G11C29/18(20060101)

地址:518057 广东省深圳市南山区高新区科技中二路软件园3栋401、402

分类号:G11C29/18(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.11.24#授权;2018.11.09#实质审查的生效;2018.10.16#公开

摘要:本发明适用于计算机文件系统技术领域,提供了一种写测试方法、读测试方法、读写测试方法及终端设备,本发明实施例可以通过被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况;还可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通道,并且由于读取的数据是分段读取的,因此可以有效节省读取数据所需的存储空间,同时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长度随机的情况。

主权项:1.一种写测试方法,其特征在于,应用于被测试设备的文件系统,所述文件系统包括第一文件和第二文件,所述写测试方法包括:确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,Mi和Ni是为了区分不同长度的循环递增字符序列而引入的变量,i的值不同,第Mi长度或第Ni长度所表示的长度也会发生变化,i的值还用于描述特定顺序,i的值表示向所述第一文件中写入数据的次序;以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列;写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试;写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试;写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成;预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性;预设写入任务已完成时,中止写入;以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列,包括:生成第Mi长度的循环递增字符序列;其中,第Mi长度的循环递增字符序列的首字符等于所述第一文件中的累计写入字符数的最低有效字节;调用文件写入函数将所述第Mi长度的循环递增字符序列写入所述第一文件的尾部;以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列,包括:生成第Ni长度的循环递减字符序列;其中,第Ni长度的循环递减字符序列的长度为所述第Ni长度、首字符等于所述第二文件中的累计写入字符数的最低有效字节的二进制反码;调用文件写入函数将所述第Ni长度的循环递减字符序列写入所述第二文件的尾部。

全文数据:写测试方法、读测试方法、读写测试方法及终端设备技术领域[0001]本发明属于计算机文件系统技术领域,尤其涉及一种写测试方法、读测试方法、读写测试方法及终端设备。背景技术[0002]在计算机文件系统的读写测试中,需要对计算机文件读、写功能进行测试,以验证文件系统读、写功能的正确性和可靠性。验证文件系统的读、写功能测试方法众多,通常采用随机数据测试法或固定数据测试法进行测试。[0003]然而,随机数据测试法需要用到外部测试工具和通讯通道,通讯通道的速度瓶颈会影响测试效率,并且若产生通讯问题,则会发生误判,导致测试结果不准确;固定数据测试法每次写入或读取数据的长度相等,未覆盖到写入或读取数据的长度随机的情况,导致测试覆盖面较窄。发明内容[0004]有鉴于此,本发明实施例提供了一种写测试方法、读测试方法、读写测试方法及终端设备,以解决现有技术中随机数据测试法需要用到外部测试工具和通讯通道,通讯通道的速度瓶颈会影响测试效率,并且若产生通讯问题,则会发生误判,导致测试结果不准确;固定数据测试法每次写入或读取数据的长度相等,未覆盖到写入或读取数据的长度随机的情况,导致测试覆盖面较窄的问题。[0005]本发明实施例的第一方面提供了一种写测试方法,其应用于文件系统,所述文件系统包括第一文件和第二文件,所述写测试方法包括:[0006]确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;[0007]以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列;[0008]写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试;[0009]写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;[0010]写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试;[0011]写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成;[0012]预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性;[0013]预设写入任务已完成时,中止写入。[0014]本发明实施例的第二方面提供了一种读测试方法,其基于上述的写测试方法实现,所述读测试方法包括:[0015]确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;[0016]从所述第一文件中读取第Mj长度的字符数据;[0017]读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;[0018]读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;[0019]不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试;[0020]符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据;[0021]读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;[0022]读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;[0023]不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试;[0024]符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;[0025]已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;[0026]未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1。[0027]本发明实施例的第三方面提供了一种读写测试方法,其包括上述的写测试方法和上述的读测试方法。[0028]本发明实施例的第四方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。[0029]本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。[0030]本发明实施例的第一方面通过以添加方式向第一文件中写入可变长度的循环递增字符序列、向第二文件写入可变长度的循环递减字符序列,然后再以添加方式向第一文件中写入下一可变长度的循环递增字符序列、向第二文件写入下一可变长度的循环递减字符序列,并使相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性,如此循环往复,直到预设写入任务已完成时,中止写入,并在写入失败时报告写入出错信息并终止测试,可以通过被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况。[0031]本发明实施例第二方面通过在第一方面的写入测试完成之后,从第一文件读取可变长度的字符数据,并根据预设循环递增特性依次验证各字符是否符合循环递增字符序列的相应预期值,从第二文件读取可变长度的字符数据,并根据预设循环递减特性依次检查各字符是否符合循环递减序列的相应预期值;然后,再从第一文件读取下一可变长度的字符数据,并根据预设循环递增特性依次验证各字符是否符合循环递增字符序列的相应预期值,从第二文件读取下一可变长度的字符数据,并根据预设循环递减特性依次检查各字符是否符合循环递减序列的相应预期值,如此循环往复,直到达第一文件和第二文件的尾部时,报告测试通过并终止测试,并在不符合相应预期值时,报告读取出错信息并终止测试,可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通道,并且由于读取的数据是分段读取的,因此可以有效节省读取数据所需的存储空间,同时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长度随机的情况。[0032]本发明实施例第三方面是基于第一方面和第二方面实现的读写测试方法,同时具备第一方面和第二方面所具备的所有效果。附图说明[0033]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0034]图1是本发明实施例一提供的写测试方法的流程示意图;[0035]图2是本发明实施例二提供的读测试方法的流程示意图;[0036]图3是本发明实施例三提供的写测试系统的结构示意图;[0037]图4是本发明实施例四提供的读测试系统的结构示意图;[0038]图5是本发明实施例五提供的终端设备的结构示意图。具体实施方式[0039]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。[0040]本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。[0041]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。[0042]实施例一[0043]本实施例提供一种写测试方法,应用于被测试设备的文件系统filesystem,是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等;在计算机中,文件系统是命名文件及放置文件的逻辑存储和恢复的系统)。[0044]在本实施例中,被测试设备可以是任意的能够运行文件系统,具备写入数据或同时具备数据读写功能的设备。[0045]在本实施例中,所述文件系统包括事先创建的用于写入数据的第一文件和第二文件。[0046]在一个实施例中,在进行写测试之前,所述写测试方法包括:[0047]步骤S01,为所述文件系统分配第一预设字节的写存储空间;其中,所述第一预设字节为单次可写入的最大字符数。[0048]在具体应用中,第一预设字节是整个写入测试过程中单次可写入的最大字符数,该第一预设字节的值可以根据文件系统提供的写入函数的性能或不同的测试要求来设置,例如,若写入函数所支持的最大单次写入字节数为10240字符,则第一预设字节可以设置为10240。[0049]步骤S02,定义用于记录所述第一文件中的累计写入字符数的第一全局变量和用于记录所述第二文件中的累计写入字符数的第二全局变量。[0050]在具体应用中,第一全局变量可以用Cl表示,第二全局变量可以用于C2表示,每当第一文件中成功写入数据时,更新Cl的值,每当第二文件中成功写入数据时,更新C2的值,Cl和C2的值在整个测试过程中都跟随实际的数据写入量的变化而变化,通过读取Cl和C2的值,即可获知第一文件中的累计写入字符数和第二文件中的累计写入字符数。[0051]步骤S03,调用文件打开函数,以创建二进制文件并添加写入二进制数据的方式打开所述第一文件和所述第二文件。[0052]在具体应用中,文件打开函数即为用于打开文件的APIApplicationProgrammingInterface函数;添加写入具体是指在不删除文件中原有数据的情况下,以添加数据的形式在文件中写入新的数据;第一文件和第二文件的名称可以根据实际需要设置,例如,可以分别设置为test_fiIel.bin和test_file2.bin。[0053]步骤S04,将所述第一全局变量的值和所述第二全局变量的值初始化为0。[0054]在具体应用中,在未写入数据时,第一文件和第二文件中累计写入的字符数为0,为了使得第一全局变量和第二全局变量的值能够直观反映第一文件和第二文件中已累计写入的字符数,需要事先将第一全局变量和第二全局变量的值初始化为0。[0055]如图1所示,本实施例所提供的写测试方法包括:[0056]步骤S11,确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数。[0057]在具体应用中,根据测试的需要,需要确定第一文件和第二文件中当前待写入的字符数,待写入的字符数可以是一个在一定值域范围内(例如:〇〜第一预设字节范围内)的随机数,也可以是一个预先设定的固定长度值,还可以是一个循环递进变化例如,循环递增或循环递减)的长度值例如,循环递增变化的长度值可以1、2、…、4、5、1、2、···、4、5、…,如此循环往复;循环递减变化的长度值可以为5、4、…、2、1、5、4、…、2、1、…,如此循环往复),具体采用哪一种方式,可根据测试需要来选择和设置。在一次完整的写测试过程中,所选择的方式保持不变。[0058]在具体应用中,第一文件和第二文件中当前待写入的字符数应当不大于单次可写入的最大字符数,即不大于前述的第一预设字节。[0059]在本实施例中,Mi和Ni是为了区分不同长度的循环递增字符序列而引入的变量,i的值不同,第Mi长度或第Ni长度所表示的长度也会发生变化,其作用类似于第一、第二、第三、…,是用于区分不同的对象,所不同的是,i的值还用于描述特定顺序,i的值表示向第一文件中写入数据的次序。例如,i=l时,表示第1次向第一文件中写入数据且写入的数据的长度为第Ml长度。[0060]步骤S12,以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列。[0061]本实施例中,循环递增字符序列具体是指在数值上连续递增且具有循环特性的多个码值位于[^00,^??]内的43:11字符构成的序列,例如,00、01、"_、!^、??、00、01、〜、ro、FF、…,如此循环往复,直至达到指定的字符序列长度,即达到第Mi长度。[0062]在一个实施例中,步骤Sl2,包括:[0063]步骤S121,生成第Mi长度的循环递增字符序列;其中,第Mi长度的循环递增字符序列的首字符等于所述第一文件中的累计写入字符数的最低有效字节;[0064]步骤S122,调用文件写入函数将所述第Mi长度的循环递增字符序列写入所述第一文件的尾部。[0065]在具体应用中,生成的第Mi长度的循环递增字符序列缓存在步骤SOl中所分配的写存储空间中。[0066]在一个实施例中,循环递增数据序列的生成过程可以用C语言程序示例如下:[0067][0069]应当理解的是,上述C语言程序中的变量Cl即为前述的第一全局变量,上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。[0070]在一个实施例中,步骤S12之后包括:[0071]写入第Mi长度的循环递增字符序列成功时,更新所述第一文件中的累计写入字符数。[0072]在具体应用中,更新所述第一文件中的累计写入字符数即为更新第一全局变量的值,具体地,可以通过将本次实际写入第一文件中的字符数的长度累加到当前的第一全局变量的值上来实现。文件系统提供的写入函数或其它相关函数会报告本次实际写入第一文件中的字符数的长度,一般通过返回值或输出参数的形式来反馈这个值,通常等于拟写入的第Mi长度。[0073]步骤S13,写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试。[0074]在具体应用中,只要未成功将所述第Mi长度的循环递增字符序列写入所述第一文件的尾部,均认为写入失败。[0075]在一个实施例中,步骤S13包括:[0076]步骤S131,检测所述写入函数的返回值;[0077]步骤S132,所述写入函数的返回值指示所述文件系统的写存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;[0078]步骤S133,所述写入函数的返回值指示第一其他错误时,报告相应的第一其他出错信息并终止写测试;其中,所述第一其他出错信息包括所述第一文件的名称、所述第一文件中的累计写入字符数的值和所述写入函数的返回值。[0079]在具体应用中,文件系统的写存储空间耗尽即是指文件系统的写存储空间已满,可以通过任意的人机交互方式报告写存储空间耗尽信息,例如,显示弹窗提示存储空间耗尽、生成空间耗尽日志等。[0080]在具体应用中,第一其他出错是指发生除了写存储空间耗尽之外的其他错误,第一其他出错信息还可以包括其他信息。[0081]步骤S14,写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列。[0082]本实施例中,循环递减字符序列具体是指在数值上连续递减且具有循环特性的多个码值位于[^00,^??]内的43:11字符构成的序列,例如^?、!^、"_、01、00、??、!^、···、01、00、···,如此循环往复,直至达到指定的字符序列长度,即第Ni长度。[0083]在一个实施例中,步骤S14,包括:[0084]步骤S141,生成第Ni长度的循环递减字符序列;其中,第Ni长度的循环递减字符序列的首字符等于所述第二文件中的累计写入字符数的最低有效字节的二进制反码;[0085]步骤S142,调用文件写入函数将所述第Ni长度的循环递减字符序列写入所述第二文件的尾部。[0086]在具体应用中,生成的第Ni长度的循环递减字符序列缓存在步骤SOl中所分配的写存储空间中。[0087]在一个实施例中,循环递减数据序列的生成过程可以用C语言程序示例如下:[0088][0089]应当理解的是,上述C语言程序中的变量C2即为前述的第二全局变量,上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。[0090]在一个实施例中,步骤S14之后包括:[0091]写入第Ni长度的循环递减字符序列成功时,更新所述第二文件中的累计写入字符数。[0092]在具体应用中,更新所述第二文件中的累计字符数即为更新第二全局变量的值,具体地,可以通过将本次实际写入第二文件中的字符数的长度累加到当前的第二全局变量的值上来实现。文件系统提供的写入函数或其它相关函数会报告本次实际写入第二文件中的字符数的长度,一般通过返回值或输出参数的形式来反馈这个值,通常等于拟写入的第Ni长度。[0093]步骤S15,写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试。[0094]在具体应用中,只要未成功将第Ni长度的循环递减字符序列写入所述第二文件的尾部,均认为写入失败。[0095]在一个实施例中,步骤S15包括:[0096]步骤S151,检测所述写入函数的所述写入函数的返回值;[0097]步骤S152,所述写入函数的返回值指示所述文件系统的存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;[0098]步骤S153,所述写入函数的返回值指示第二其他错误时,报告相应的第二其他出错信息并终止写测试;其中,所述第二其他出错信息包括所述第二文件的名称、所述第二文件中的累计写入字符数的值和所述写入函数的返回值。[0099]在具体应用中,文件系统的写存储空间耗尽即是指文件系统的写存储空间已满,可以通过任意的人机交互方式报告写存储空间耗尽信息,例如,显示弹窗提示存储空间耗尽、生成空间耗尽日志等。[0100]在具体应用中,第二其他出错是指发生除了写存储空间耗尽之外的其他错误,第二其他出错信息还可以包括其他信息。[0101]步骤S16,写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成。[0102]在具体应用中,所述预设写入任务包括接收到中止写入指令、已达到预设累计写入总字符数、已达到累计写入时间或所述文件系统的写存储空间耗尽等。[0103]步骤S17,预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性。[0104]在具体应用中,每返回一次,即需要重新确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数。通过改变i的值,即可重新定义写入第一文件和第二文件的字符数。不同次写入同一文件的字符数的长度可以相同或不同,并且同一次写入第一文件和第二文件的字符数的长度也可以相同或不同。[0105]步骤S18,预设写入任务已完成时,中止写入。[0106]在一个实施例中,步骤S18具体包括:[0107]预设写入任务已完成时,调用文件关闭函数关闭所述第一文件和所述第二文件,以中止写入。[0108]本发明实施例的第一方面通过以添加方式向第一文件中写入可变长度的循环递增字符序列、向第二文件写入可变长度的循环递减字符序列,然后再以添加方式向第一文件中写入下一可变长度的循环递增字符序列、向第二文件写入下一可变长度的循环递减字符序列,并使相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性,如此循环往复,直到预设写入任务已完成时,中止写入,并在写入失败时报告写入出错信息并终止测试,可以通过被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况。[0109]实施例二[0110]本实施例提供一种读测试方法,应用于被测试设备的文件系统,所述读测试方法基于实施例一实现。[0111]在本实施例中,被测试设备可以是任意的能够运行文件系统,具备读取数据或同时具备数据读写功能的设备。[0112]在具体应用中,可以事先通过其他设备采用实施例一中的写测试方法将数据成功写入第一文件和第二文件,然后通过被测试设备来执行所述读测试方法;当然也可以直接通过被测试设备执行整个写测试过程和读测试过程。[0113]在一个实施例中,在进行读测试之前,所述读测试方法包括:[01M]步骤S21,为所述文件系统分配第二预设字节的读存储空间;其中,所述第二预设字节为单次可读取的最大字符数。[0115]在具体应用中,第二预设字节是整个读取测试过程中单次可读取的最大字符数,该第二预设字节的值可以根据文件系统提供的读取函数的性能或不同的测试要求来设置,例如,若读取函数所支持的最大单次读取字节数为10240字符,则第二预设字节可以设置为10240。[0116]步骤S22,定义用于记录所述第一文件的已累计读取字符数的第三全局变量和用于记录所述第二文件的已累计读取字符数的第四全局变量。[0117]在具体应用中,第三全局变量可以用C3表示,第四全局变量可以用于C4表示,每当成功读取第一文件中数据时,更新C3的值,每当成功读取第二文件中数据时,更新C4的值,C3和C4的值在整个测试过程中都跟随实际的数据读取量的变化而变化,通过读取C3和C4的值,即可获知第一文件中的累计读取字符数和第二文件中的累计读取字符数。[0118]步骤S23,调用文件打开函数,以创建二进制文件并读取二进制数据的方式打开所述第一文件和所述第二文件。[0119]在具体应用中,步骤S23具体是指实施例一中的预设写入任务已完成之后,调用文件打开函数打开第一文件和第二文件,使第一文件指针指向第一文件地址〇处,使第二文件指针指向第二文件地址〇处。[0120]步骤S24,将所述第一文件中当前待读取的首字符的值和所述第三全局变量的值初始化为〇,并将所述第二文件中当前待读取的首字符的值和所述第四全局变量的值初始化为0。[0121]在具体应用中,在未读取数据时,累计读取的第一文件和第二文件的字符数为0,为了使得第三全局变量和第三全局变量的值能够直观反映已累计读取的第一文件和第二文件的字符数,需要事先将第三全局变量和第四全局变量的值初始化为〇。[0122]如图2所示,本实施例所提供的读测试方法包括:[0123]步骤S301,确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数。[0124]在具体应用中,根据测试的需要,需要确定当前待读取的第一文件和第二文件的字符数,待读取的字符数可以是一个在一定值域范围内(例如:〇〜第二预设字节范围内)的随机数,也可以是一个预先设定的固定长度值,还可以是一个循环递进变化例如,循环递增或循环递减)的长度值例如,循环递增变化的长度值可以1、2、…、4、5、1、2、···、4、5、…,如此循环往复;循环递减变化的长度值可以为5、4、…、2、1、5、4、…、2、1、…,如此循环往复),具体采用哪一种方式,可根据测试需要来选择和设置。在一次完整的读测试过程中,所选择的方式保持不变。[0125]在具体应用中,当前待读取的第一文件和第二文件的字符数应当不大于单次可读取的最大字符数,即不大于前述的第二预设字节。[0126]在本实施例中,Mj和Nj是为了区分不同长度的循环递增字符序列而引入的变量,j的值不同,第Mj长度或第Nj长度所表示的长度也会发生变化,其作用类似于第一、第二、第三、…,是用于区分不同的对象,所不同的是,j的值还用于描述特定顺序,j的值表示向第一文件中写入数据的次序。例如,j=l时,表示第j次向第一文件中写入数据且写入的数据的长度为第Mj长度。[0127]步骤S302,从所述第一文件中读取第Mj长度的字符数据。[0128]在一个实施例中,步骤S302,包括:[0129]调用读取函数从所述第一文件中读取第Mj长度的字符数据至所述文件系统的读存储空间。[0130]步骤S303,读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试。[0131]在一个实施例中,步骤S303包括:[0132]步骤S3031,检测所述读取函数的返回值;[0133]步骤S3032,所述读取函数的返回值指示已到达所述第二文件的尾部时,检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相等;[0134]步骤S3033,所述第二文件的累计读取字符数与所述第二文件的累计写入字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;[0135]步骤S3034,所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等并终止测试;[0136]步骤S3035,所述读取函数的返回值指示第四读取错误时,报告相应的第四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。[0137]步骤S304,读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值。[0138]在具体应用中,预期值具体是指第Mj长度的字符数据中各字符的实际值,由于循环递增字符序列具备数值依次递增且循环往复的规律,因此,当第Mj长度的字符数据中各字符的值符合这一规律时,则认为符合相应预期值;第j次读取第一文件中的数据时,当前实际读取到的字符数一般等于第Mj长度的对应长度值,比对的数据长度为实际读取的字符数的长度;第一次比对的预期值等于当前已累计读取字符数中的最低有效字节。[0139]在一个实施例中,根据预设循环递增特性验证读取的字符数据的过程可以用C语言程序示例如下:[0140][0141]应当理解的是,上述C语言程序中的变量C3即为前述的第三全局变量,上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。[0142]在一个实施例中,步骤S304之后,包括:[0143]符合所述循环递增字符序列的相应预期值时,更新所述第一文件的累计读取字符数。[0144]在具体应用中,更新所述第一文件的累计读取字符数即为更新第三全局变量的值,具体地,可以通过将本次实际读取的第一文件的字符数的长度累加到当前的第三全局变量的值上来实现。文件系统提供的读取函数或其它相关函数会报告本次实际读取的第一文件的字符数的长度,一般通过返回值或输出参数的形式来反馈这个值,通常等于拟读取的第Mj长度。[0145]在具体应用中,当第Mj长度的字符数据中的第一个字符符合相应预期值时,则重新计算下一个字符的实际值并与对应的预期值比较,直到第Mj长度的字符数据中的每个字符都被按照排列顺序、依次逐个比较完毕,若任何字符不符合相应预期值,则进入步骤S305〇[0146]步骤S305,不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试。[0147]在具体应用中,第一读取出错信息包括但不限于:第一文件的名称、第一全局变量的值、第三全局变量的值、当前字符的预期值和当前字符的实际值。[0M8]步骤S306,符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据。[0149]在一个实施例中,步骤S306,包括:[0150]符合所述循环递增字符序列的相应预期值时,调用读取函数从所述第二文件中读取第Nj长度的字符数据至所述读存储空间。[0151]步骤S307,读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试。[0152]在一个实施例中,步骤S307包括:[0153]步骤S3071,检测所述读取函数的返回值;[0154]步骤S3072,所述读取函数的返回值指示已到达所述第二文件的尾部时,检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相等;[0155]步骤S3073,所述第二文件的累计读取字符数与所述第二文件的累计写入字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;[0156]步骤S3074,所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等并终止测试;[0157]步骤S3075,所述读取函数的返回值指示第四读取错误时,报告相应的第四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。[0158]步骤S308,读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值。[0159]在具体应用中,预期值具体是指第Nj长度的字符数据中各字符的实际值,由于循环递减字符序列具备数值依次递减且循环往复的规律,因此,当第Nj长度的字符数据中各字符的值符合这一规律时,则认为符合相应预期值;第j次读取第一文件中的数据时,当前实际读取到的字符数一般等于第Nj长度的对应长度值,比对的数据长度为实际读取的字符数的长度;第一次比对的预期值等于当前已累计读取字符数中的最低有效字节。[0160]在一个实施例中,根据预设循环递减特性验证读取的字符数据的过程可以用C语言程序示例如下:[0161][0163]应当理解的是,上述C语言程序中的变量C4即为前述的第四全局变量,上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。[0164]在一个实施例中,步骤S308之后,包括:[0165]符合所述循环递减序列的相应预期值时,更新所述第二文件的累计读取字符数。[0166]在具体应用中,更新所述第二文件的累计读取字符数即为更新第四全局变量的值,具体地,可以通过将本次实际读取的第二文件的字符数的长度累加到当前的第四全局变量的值上来实现。文件系统提供的读取函数或其它相关函数会报告本次实际读取的第二文件的字符数的长度,一般通过返回值或输出参数的形式来反馈这个值,通常等于拟读取的第Nj长度。[0167]步骤S309,不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试。[0168]在具体应用中,第三读取出错信息包括但不限于:第二文件的名称、第二全局变量的值、第四全局变量的值、当前字符的预期值和当前字符的实际值。[0169]步骤S310,符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;[0170]步骤S311,已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;[0171]步骤S312,未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1。[0172]在具体应用中,每返回一次,即需要重新确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数。通过改变j的值,即可重新定义读取第一文件和第二文件的字符数。不同次读取同一文件的字符数的长度可以相同或不同,并且同一次读取第一文件和第二文件的字符数的长度也可以相同或不同。[0173]本实施例通过在第一方面的写入测试完成之后,从第一文件读取可变长度的字符数据,并根据预设循环递增特性依次验证各字符是否符合循环递增字符序列的相应预期值,从第二文件读取可变长度的字符数据,并根据预设循环递减特性依次检查各字符是否符合循环递减序列的相应预期值;然后,再从第一文件读取下一可变长度的字符数据,并根据预设循环递增特性依次验证各字符是否符合循环递增字符序列的相应预期值,从第二文件读取下一可变长度的字符数据,并根据预设循环递减特性依次检查各字符是否符合循环递减序列的相应预期值,如此循环往复,直到达第一文件和第二文件的尾部时,报告测试通过并终止测试,并在不符合相应预期值时,报告读取出错信息并终止测试,可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通道,并且由于读取的数据是分段读取的,因此可以有效节省读取数据所需的存储空间,同时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长度随机的情况。[0174]应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。[0〃5]本发明的一个实施例还提供一种读写测试方法,包括实施例一中写测试方法和实施例二中的读测试方法。[0176]实施例三[0177]如图3所示,本实施例提供一种写测试系统100,应用于测试设备,其包括用于执行实施例一中方法步骤的结构,具体包括:[0178]写入字符数确定模块11,用于确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;[0179]第一写入模块12,用于以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列;[0180]第一写入出错报告模块13,用于写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试;[0181]第二写入模块14,用于写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;[0182]第二写入出错报告模块15,用于写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试;[0183]任务检测模块16,用于写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成;[0184]返回写入模块17,用于预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性;[0185]中止模块18,用于预设写入任务已完成时,中止写入。[0186]在一个实施例中,所述写测试系统还包括:[0187]第一写更新模块,用于写入第Mi长度的循环递增字符序列成功时,更新所述第一文件中的累计写入字符数。[0188]在一个实施例中,所述写测试系统还包括:[0189]第二写更新模块,用于写入第Ni长度的循环递减字符序列成功时,更新所述第二文件中的累计写入字符数。[0190]在一个实施例中,所述写测试系统还包括:[0191]写存储空间分配模块,用于为所述文件系统分配第一预设字节的写存储空间;其中,所述第一预设字节为单次可写入的最大字符数;[0192]第一变量定义模块,用于定义用于记录所述第一文件中的累计写入字符数的第一全局变量和用于记录所述第二文件中的累计写入字符数的第二全局变量。[0193]第一文件打开模块,用于调用文件打开函数,以创建二进制文件并添加写入二进制数据的方式打开所述第一文件和所述第二文件;[0194]第一变量初始化模块,用于将所述第一全局变量的值和所述第二全局变量的值初始化为〇。[0195]实施例四[0196]如图4所示,本实施例提供一种读测试系统200,应用于测试设备,其包括用于执行实施例二中方法步骤的结构,具体包括:[0197]读取字符数确定模块301,用于确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;[0198]第一读取模块302,用于从所述第一文件中读取第Mj长度的字符数据;[0199]第一读取出错报告模块303,用于读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;[0200]第一验证模块304,用于读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;[0201]第二读取出错报告模块305,用于第一不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试;[0202]第二读取模块306,用于符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据;[0203]第三读取出错报告模块307,用于读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;[0204]第二验证模块308,用于读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;[0205]第四读取出错报告模块309,用于不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试;[0206]文件检测模块310,用于符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;[0207]终止模块311,用于已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;[0208]返回读取模块312,用于未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1。[0209]在一个实施例中,所述写测试系统还包括:[0210]第一读更新模块,用于符合所述循环递增字符序列的相应预期值时,更新所述第一文件的累计读取字符数。[0211]在一个实施例中,所述写测试系统还包括:[0212]第二读更新模块,用于符合所述循环递减序列的相应预期值时,更新所述第二文件的累计读取字符数。[0213]在一个实施例中,所述写测试系统还包括:[0214]读存储空间分配模块,用于为所述文件系统分配第二预设字节的读存储空间;其中,所述第二预设字节为单次可读取的最大字符数;[0215]第三变量定义模块,用于定义用于记录所述第一文件的已累计读取字符数的第三全局变量和用于记录所述第二文件的已累计读取字符数的第四全局变量;[0216]第二文件打开模块,用于调用文件打开函数,以创建二进制文件并读取二进制数据的方式打开所述第一文件和所述第二文件;[0217]第四变量定义模块,用于将所述第一文件中当前待读取的首字符的值和所述第三全局变量的值初始化为〇,并将所述第二文件中当前待读取的首字符的值和所述第四全局变量的值初始化为〇。[0218]实施例五[0219]如图5所示,本实施例提供一种终端设备40,其包括:处理器400、存储器401以及存储在所述存储器401中并可在所述处理器400上运行的计算机程序402,例如写测试程序或读测试程序。所述处理器400执行所述计算机程序402时实现上述写测试程序或读测试程序实施例中的步骤,例如图1所示的步骤Sll至S18或者实施例二所示的步骤S301至S312。或者,所述处理器400执行所述计算机程序402时实现上述各系统实施例中各模块的功能,例如图3所示模块11至18或图4所示模块301至312的功能。[0220]示例性的,所述计算机程序402可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器401中,并由所述处理器400执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序402在所述终端设备40中的执行过程。例如,所述计算机程序402可以被分割成如下模块:[0221]写入字符数确定模块,用于确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;[0222]第一写入模块,用于以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列;[0223]第一写入出错报告模块,用于写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试;[0224]第二写入模块,用于写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;[0225]第二写入出错报告模块,用于写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试;[0226]任务检测模块,用于写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成;[0227]返回写入模块,用于预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性;[0228]中止模块,用于预设写入任务已完成时,中止写入。[0229]在一个实施例中,所述计算机程序402还可以被分割成如下模块:[0230]读取字符数确定模块,用于确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;[0231]第一读取模块,用于从所述第一文件中读取第Mj长度的字符数据;[0232]第一验证模块,用于读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;[0233]第一读取出错报告模块,用于第一不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试;[0234]第二读取出错报告模块,用于读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;[0235]第二读取模块,用于符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据;[0236]第二验证模块,用于读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;[0237]第三读取出错报告模块,用于不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试;[0238]第四读取出错报告模块,用于读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;[0239]文件检测模块,用于符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;[0240]终止模块,用于已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;[0241]返回读取模块,用于未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1。[0242]所述终端设备40可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器400、存储器401。本领域技术人员可以理解,图5仅仅是终端设备40的示例,并不构成对终端设备40的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。[0243]所称处理器400可以是中央处理单元(CentralProcessingUnit,CPU,还可以是其他通用处理器、数字信号处理器DigitalSignalProcessor,DSP、专用集成电路ApplicationSpecificIntegratedCircuit,ASIC、现成可编程门阵列(Field-ProgrammableGateArray,FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0244]所述存储器401可以是所述终端设备40的内部存储单元,例如终端设备40的硬盘或内存。所述存储器401也可以是所述终端设备40的外部存储设备,例如所述终端设备40上配备的插接式硬盘,智能存储卡SmartMediaCard,SMC,安全数字SecureDigital,SD卡,闪存卡FlashCard等。进一步地,所述存储器401还可以既包括所述终端设备40的内部存储单元也包括外部存储设备。所述存储器401用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器401还可以用于暂时地存储已经输出或者将要输出的数据。[0245]所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0246]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。[0247]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0248]在本发明所提供的实施例中,应该理解到,所揭露的装置终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。[0249]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0250]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0251]所述集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器R〇M,Read-〇nlyMemory、随机存取存储器RAM,RandomAccessMemory、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。[0252]以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

权利要求:1.一种写测试方法,其特征在于,应用于被测试设备的文件系统,所述文件系统包括第一文件和第二文件,所述写测试方法包括:确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列;写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试;写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试;写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完成;预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减字符序列具有连续性;预设写入任务已完成时,中止写入。2.如权利要求1所述的写测试方法,其特征在于,以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符序列,包括:生成第Mi长度的循环递增字符序列;其中,第Mi长度的循环递增字符序列的首字符等于所述第一文件中的累计写入字符数的最低有效字节;调用文件写入函数将所述第Mi长度的循环递增字符序列写入所述第一文件的尾部;所述写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试,包括:检测所述写入函数的返回值;所述写入函数的返回值指示所述文件系统的写存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;所述写入函数的返回值指示第一其他错误时,报告相应的第一其他出错信息并终止写测试;其中,所述第一其他出错信息包括所述第一文件的名称、所述第一文件中的累计写入字符数的值和所述写入函数的返回值;以添加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列,包括:生成第Ni长度的循环递减字符序列;其中,第Ni长度的循环递减字符序列的长度为所述第Ni长度、首字符等于所述第二文件中的累计写入字符数的最低有效字节的二进制反码;调用文件写入函数将所述第Ni长度的循环递减字符序列写入所述第二文件的尾部;所述写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试,包括:检测所述写入函数的所述写入函数的返回值;所述写入函数的返回值指示所述文件系统的存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;所述写入函数的返回值指示第二其他错误时,报告相应的第二其他出错信息并终止写测试;其中,所述第二其他出错信息包括所述第二文件的名称、所述第二文件中的累计写入字符数的值和所述写入函数的返回值。3.如权利要求1或2任一项所述的写测试方法,其特征在于,确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数之前,包括:为所述文件系统分配第一预设字节的写存储空间;其中,所述第一预设字节为单次可写入的最大字符数;定义用于记录所述第一文件中的累计写入字符数的第一全局变量和用于记录所述第二文件中的累计写入字符数的第二全局变量。调用文件打开函数,以创建二进制文件并添加写入二进制数据的方式打开所述第一文件和所述第二文件;将所述第一全局变量的值和所述第二全局变量的值初始化为0。4.如权利要求1或2任一项所述的写测试方法,其特征在于,所述预设写入任务包括接收到中止写入指令、已达到预设累计写入总字符数、已达到累计写入时间或所述文件系统的写存储空间耗尽;所述预设写入任务已完成时,中止写入,包括:预设写入任务已完成时,调用文件关闭函数关闭所述第一文件和所述第二文件,以中止写入。5.—种读测试方法,其特征在于,应用于被测试设备的文件系统,所述读测试方法基于权利要求1〜4任一项所述的写测试方法实现,所述读测试方法包括:确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;从所述第一文件中读取第Mj长度的字符数据;读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试;符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据;读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试;符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1〇6.如权利要求5所述的读测试方法,其特征在于,从所述第一文件中读取第Mj长度的字符数据,包括:调用读取函数从所述第一文件中读取第Mj长度的字符数据至所述文件系统的读存储空间;所述读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试,包括:检测所述读取函数的返回值;所述读取函数的返回值指示已到达所述第一文件的尾部时,检测所述第一文件的累计读取字符数与所述第一文件的累计写入字符数是否相等;所述第一文件的累计读取字符数与所述第一文件的累计写入字符数相等时,报告所述第一文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;所述第一文件的累计读取字符数与所述第一文件的累计写入字符数不相等时,报告所述第一文件的累计读取字符数与所述第一文件的累计写入字符数不相等并终止测试;所述读取函数的返回值指示第二读取错误时,报告相应的第二读取出错信息并终止测试;其中,所述第二读取出错信息包括所述第一文件的名称、所述第一文件的累计读取字符数的值和所述读取函数的返回值;从所述第二文件中读取第Nj长度的字符数据,包括:调用读取函数从所述第二文件中读取第Nj长度的字符数据至所述读存储空间;所述读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试,包括:检测所述读取函数的返回值;所述读取函数的返回值指示已到达所述第二文件的尾部时,检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相等;所述第二文件的累计读取字符数与所述第二文件的累计写入字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等并终止测试;所述读取函数的返回值指示第四读取错误时,报告相应的第四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。7.如权利要求5或6任一项所述的读测试方法,其特征在于,所述确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数之前,包括:为所述文件系统分配第二预设字节的读存储空间;其中,所述第二预设字节为单次可读取的最大字符数;定义用于记录所述第一文件的已累计读取字符数的第三全局变量和用于记录所述第二文件的已累计读取字符数的第四全局变量;调用文件打开函数,以创建二进制文件并读取二进制数据的方式打开所述第一文件和所述第二文件;将所述第一文件中当前待读取的首字符的值和所述第三全局变量的值初始化为〇,并将所述第二文件中当前待读取的首字符的值和所述第四全局变量的值初始化为0。8.—种读写测试方法,其特征在于,包括权利要求1〜4任一项所述的写测试方法和权利要求5〜7任一所述的读测试方法。9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1〜8任一项所述方法的步骤。10.—种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。

百度查询: 百富计算机技术(深圳)有限公司 写测试方法、读测试方法、读写测试方法及终端设备