CN108665938B - 写测试方法、读测试方法、读写测试方法及终端设备 - Google Patents
写测试方法、读测试方法、读写测试方法及终端设备 Download PDFInfo
- Publication number
- CN108665938B CN108665938B CN201810400405.2A CN201810400405A CN108665938B CN 108665938 B CN108665938 B CN 108665938B CN 201810400405 A CN201810400405 A CN 201810400405A CN 108665938 B CN108665938 B CN 108665938B
- Authority
- CN
- China
- Prior art keywords
- file
- length
- character
- read
- reading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C2029/1804—Manipulation of word size
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于计算机文件系统技术领域,提供了一种写测试方法、读测试方法、读写测试方法及终端设备,本发明实施例可以通过被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况;还可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通道,并且由于读取的数据是分段读取的,因此可以有效节省读取数据所需的存储空间,同时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长度随机的情况。
Description
技术领域
本发明属于计算机文件系统技术领域,尤其涉及一种写测试方法、读测试 方法、读写测试方法及终端设备。
背景技术
在计算机文件系统的读写测试中,需要对计算机文件读、写功能进行测试, 以验证文件系统读、写功能的正确性和可靠性。验证文件系统的读、写功能测 试方法众多,通常采用随机数据测试法或固定数据测试法进行测试。
然而,随机数据测试法需要用到外部测试工具和通讯通道,通讯通道的速 度瓶颈会影响测试效率,并且若产生通讯问题,则会发生误判,导致测试结果 不准确;固定数据测试法每次写入或读取数据的长度相等,未覆盖到写入或读 取数据的长度随机的情况,导致测试覆盖面较窄。
发明内容
有鉴于此,本发明实施例提供了一种写测试方法、读测试方法、读写测试 方法及终端设备,以解决现有技术中随机数据测试法需要用到外部测试工具和 通讯通道,通讯通道的速度瓶颈会影响测试效率,并且若产生通讯问题,则会 发生误判,导致测试结果不准确;固定数据测试法每次写入或读取数据的长度 相等,未覆盖到写入或读取数据的长度随机的情况,导致测试覆盖面较窄的问 题。
本发明实施例的第一方面提供了一种写测试方法,其应用于文件系统,所 述文件系统包括第一文件和第二文件,所述写测试方法包括:
确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的 第Ni长度的字符数;
以添加方式向所述文件系统的第一文件中写入第Mi长度的循环递增字符 序列;
写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终 止写测试;
写入第Mi长度的循环递增字符序列成功时,以添加方式向所述文件系统 的第二文件中写入第Ni长度的循环递减字符序列;
写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止 写测试;
写入第Ni长度的循环递减字符序列成功时,检测预设写入任务是否已完 成;
预设写入任务未完成时,返回确定待写入所述第一文件的第Mi长度的字 符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为1且每返 回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的循环递减 字符序列具有连续性;
预设写入任务已完成时,中止写入。
本发明实施例的第二方面提供了一种读测试方法,其基于上述的写测试方 法实现,所述读测试方法包括:
确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的 第Nj长度的字符数;
从所述第一文件中读取第Mj长度的字符数据;
读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;
读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所 述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;
不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并 终止测试;
符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj 长度的字符数据;
读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;
读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述 第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;
不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止 测试;
符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和 所述第二文件的尾部;
已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;
未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一 文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中, 每返回一次所述j的值加1。
本发明实施例的第三方面提供了一种读写测试方法,其包括上述的写测试 方法和上述的读测试方法。
本发明实施例的第四方面提供了一种终端设备,包括存储器、处理器以及 存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行 所述计算机程序时实现上述方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可 读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法 的步骤。
本发明实施例的第一方面通过以添加方式向第一文件中写入可变长度的循 环递增字符序列、向第二文件写入可变长度的循环递减字符序列,然后再以添 加方式向第一文件中写入下一可变长度的循环递增字符序列、向第二文件写入 下一可变长度的循环递减字符序列,并使相邻的循环递增字符序列具有连续性 且相邻的循环递减字符序列具有连续性,如此循环往复,直到预设写入任务已 完成时,中止写入,并在写入失败时报告写入出错信息并终止测试,可以通过 被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写 入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由 于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况。
本发明实施例第二方面通过在第一方面的写入测试完成之后,从第一文件 读取可变长度的字符数据,并根据预设循环递增特性依次验证各字符是否符合 循环递增字符序列的相应预期值,从第二文件读取可变长度的字符数据,并根 据预设循环递减特性依次检查各字符是否符合循环递减序列的相应预期值;然 后,再从第一文件读取下一可变长度的字符数据,并根据预设循环递增特性依 次验证各字符是否符合循环递增字符序列的相应预期值,从第二文件读取下一 可变长度的字符数据,并根据预设循环递减特性依次检查各字符是否符合循环 递减序列的相应预期值,如此循环往复,直到达第一文件和第二文件的尾部时, 报告测试通过并终止测试,并在不符合相应预期值时,报告读取出错信息并终止测试,可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通 道,并且由于读取的数据是分段读取的,因此可以有效节省读取数据所需的存 储空间,同时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长 度随机的情况。
本发明实施例第三方面是基于第一方面和第二方面实现的读写测试方法, 同时具备第一方面和第二方面所具备的所有效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳 动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的写测试方法的流程示意图;
图2是本发明实施例二提供的读测试方法的流程示意图;
图3是本发明实施例三提供的写测试系统的结构示意图;
图4是本发明实施例四提供的读测试系统的结构示意图;
图5是本发明实施例五提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术 之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当 清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中, 省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节 妨碍本发明的描述。
本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何 变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法 或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有 列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的 其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不 同对象,而非用于描述特定顺序。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
本实施例提供一种写测试方法,应用于被测试设备的文件系统(file system, 是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行 保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、 转储文件,控制文件的存取,当用户不再使用时撤销文件等;在计算机中,文 件系统是命名文件及放置文件的逻辑存储和恢复的系统)。
在本实施例中,被测试设备可以是任意的能够运行文件系统,具备写入数 据或同时具备数据读写功能的设备。
在本实施例中,所述文件系统包括事先创建的用于写入数据的第一文件和 第二文件。
在一个实施例中,在进行写测试之前,所述写测试方法包括:
步骤S01,为所述文件系统分配第一预设字节的写存储空间;其中,所述 第一预设字节为单次可写入的最大字符数。
在具体应用中,第一预设字节是整个写入测试过程中单次可写入的最大字 符数,该第一预设字节的值可以根据文件系统提供的写入函数的性能或不同的 测试要求来设置,例如,若写入函数所支持的最大单次写入字节数为10240字 符,则第一预设字节可以设置为10240。
步骤S02,定义用于记录所述第一文件中的累计写入字符数的第一全局变 量和用于记录所述第二文件中的累计写入字符数的第二全局变量。
在具体应用中,第一全局变量可以用C1表示,第二全局变量可以用于C2 表示,每当第一文件中成功写入数据时,更新C1的值,每当第二文件中成功 写入数据时,更新C2的值,C1和C2的值在整个测试过程中都跟随实际的数 据写入量的变化而变化,通过读取C1和C2的值,即可获知第一文件中的累计 写入字符数和第二文件中的累计写入字符数。
步骤S03,调用文件打开函数,以创建二进制文件并添加写入二进制数据 的方式打开所述第一文件和所述第二文件。
在具体应用中,文件打开函数即为用于打开文件的API(ApplicationProgramming Interface)函数;添加写入具体是指在不删除文件中原有数据的 情况下,以添加数据的形式在文件中写入新的数据;第一文件和第二文件的名 称可以根据实际需要设置,例如,可以分别设置为test_file1.bin和test_file2.bin。
步骤S04,将所述第一全局变量的值和所述第二全局变量的值初始化为0。
在具体应用中,在未写入数据时,第一文件和第二文件中累计写入的字符 数为0,为了使得第一全局变量和第二全局变量的值能够直观反映第一文件和 第二文件中已累计写入的字符数,需要事先将第一全局变量和第二全局变量的 值初始化为0。
如图1所示,本实施例所提供的写测试方法包括:
步骤S11,确定待写入所述第一文件的第Mi长度的字符数和待写入所述第 二文件的第Ni长度的字符数。
在具体应用中,根据测试的需要,需要确定第一文件和第二文件中当前待 写入的字符数,待写入的字符数可以是一个在一定值域范围内(例如:0~第一 预设字节范围内)的随机数,也可以是一个预先设定的固定长度值,还可以是一 个循环递进变化(例如,循环递增或循环递减)的长度值(例如,循环递增变化 的长度值可以1、2、…、4、5、1、2、…、4、5、…,如此循环往复;循环递 减变化的长度值可以为5、4、…、2、1、5、4、…、2、1、…,如此循环往复), 具体采用哪一种方式,可根据测试需要来选择和设置。在一次完整的写测试过程中,所选择的方式保持不变。
在具体应用中,第一文件和第二文件中当前待写入的字符数应当不大于单 次可写入的最大字符数,即不大于前述的第一预设字节。
在本实施例中,Mi和Ni是为了区分不同长度的循环递增字符序列而引入 的变量,i的值不同,第Mi长度或第Ni长度所表示的长度也会发生变化,其 作用类似于第一、第二、第三、…,是用于区分不同的对象,所不同的是,i 的值还用于描述特定顺序,i的值表示向第一文件中写入数据的次序。例如,i=1 时,表示第1次向第一文件中写入数据且写入的数据的长度为第M1长度。
步骤S12,以添加方式向所述文件系统的第一文件中写入第Mi长度的循环 递增字符序列。
本实施例中,循环递增字符序列具体是指在数值上连续递增且具有循环特 性的多个码值位于[0x00,0xFF]内的ASCII字符构成的序列,例如,00、01、…、 FE、FF、00、01、…、FE、FF、…,如此循环往复,直至达到指定的字符序列 长度,即达到第Mi长度。
在一个实施例中,步骤S12,包括:
步骤S121,生成第Mi长度的循环递增字符序列;其中,第Mi长度的循 环递增字符序列的首字符等于所述第一文件中的累计写入字符数的最低有效字 节;
步骤S122,调用文件写入函数将所述第Mi长度的循环递增字符序列写入 所述第一文件的尾部。
在具体应用中,生成的第Mi长度的循环递增字符序列缓存在步骤S01中 所分配的写存储空间中。
在一个实施例中,循环递增数据序列的生成过程可以用C语言程序示例如 下:
应当理解的是,上述C语言程序中的变量C1即为前述的第一全局变量, 上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。
在一个实施例中,步骤S12之后包括:
写入第Mi长度的循环递增字符序列成功时,更新所述第一文件中的累计 写入字符数。
在具体应用中,更新所述第一文件中的累计写入字符数即为更新第一全局 变量的值,具体地,可以通过将本次实际写入第一文件中的字符数的长度累加 到当前的第一全局变量的值上来实现。文件系统提供的写入函数或其它相关函 数会报告本次实际写入第一文件中的字符数的长度,一般通过返回值或输出参 数的形式来反馈这个值,通常等于拟写入的第Mi长度。
步骤S13,写入第Mi长度的循环递增字符序列失败时,报告第一写入出错 信息并终止写测试。
在具体应用中,只要未成功将所述第Mi长度的循环递增字符序列写入所 述第一文件的尾部,均认为写入失败。
在一个实施例中,步骤S13包括:
步骤S131,检测所述写入函数的返回值;
步骤S132,所述写入函数的返回值指示所述文件系统的写存储空间耗尽 时,报告所述文件系统的写存储空间耗尽信息;
步骤S133,所述写入函数的返回值指示第一其他错误时,报告相应的第一 其他出错信息并终止写测试;其中,所述第一其他出错信息包括所述第一文件 的名称、所述第一文件中的累计写入字符数的值和所述写入函数的返回值。
在具体应用中,文件系统的写存储空间耗尽即是指文件系统的写存储空间 已满,可以通过任意的人机交互方式报告写存储空间耗尽信息,例如,显示弹 窗提示存储空间耗尽、生成空间耗尽日志等。
在具体应用中,第一其他出错是指发生除了写存储空间耗尽之外的其他错 误,第一其他出错信息还可以包括其他信息。
步骤S14,写入第Mi长度的循环递增字符序列成功时,以添加方式向所述 文件系统的第二文件中写入第Ni长度的循环递减字符序列。
本实施例中,循环递减字符序列具体是指在数值上连续递减且具有循环特 性的多个码值位于[0x00,0xFF]内的ASCII字符构成的序列,例如,FF、FE、…、 01、00、FF、FE、…、01、00、…,如此循环往复,直至达到指定的字符序列 长度,即第Ni长度。
在一个实施例中,步骤S14,包括:
步骤S141,生成第Ni长度的循环递减字符序列;其中,第Ni长度的循环 递减字符序列的首字符等于所述第二文件中的累计写入字符数的最低有效字节 的二进制反码;
步骤S142,调用文件写入函数将所述第Ni长度的循环递减字符序列写入 所述第二文件的尾部。
在具体应用中,生成的第Ni长度的循环递减字符序列缓存在步骤S01中所 分配的写存储空间中。
在一个实施例中,循环递减数据序列的生成过程可以用C语言程序示例如 下:
应当理解的是,上述C语言程序中的变量C2即为前述的第二全局变量, 上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。
在一个实施例中,步骤S14之后包括:
写入第Ni长度的循环递减字符序列成功时,更新所述第二文件中的累计写 入字符数。
在具体应用中,更新所述第二文件中的累计字符数即为更新第二全局变量 的值,具体地,可以通过将本次实际写入第二文件中的字符数的长度累加到当 前的第二全局变量的值上来实现。文件系统提供的写入函数或其它相关函数会 报告本次实际写入第二文件中的字符数的长度,一般通过返回值或输出参数的 形式来反馈这个值,通常等于拟写入的第Ni长度。
步骤S15,写入第Ni长度的循环递减字符序列失败时,报告第二写入出错 信息并终止写测试。
在具体应用中,只要未成功将第Ni长度的循环递减字符序列写入所述第二 文件的尾部,均认为写入失败。
在一个实施例中,步骤S15包括:
步骤S151,检测所述写入函数的所述写入函数的返回值;
步骤S152,所述写入函数的返回值指示所述文件系统的存储空间耗尽时, 报告所述文件系统的写存储空间耗尽信息;
步骤S153,所述写入函数的返回值指示第二其他错误时,报告相应的第二 其他出错信息并终止写测试;其中,所述第二其他出错信息包括所述第二文件 的名称、所述第二文件中的累计写入字符数的值和所述写入函数的返回值。
在具体应用中,文件系统的写存储空间耗尽即是指文件系统的写存储空间 已满,可以通过任意的人机交互方式报告写存储空间耗尽信息,例如,显示弹 窗提示存储空间耗尽、生成空间耗尽日志等。
在具体应用中,第二其他出错是指发生除了写存储空间耗尽之外的其他错 误,第二其他出错信息还可以包括其他信息。
步骤S16,写入第Ni长度的循环递减字符序列成功时,检测预设写入任务 是否已完成。
在具体应用中,所述预设写入任务包括接收到中止写入指令、已达到预设 累计写入总字符数、已达到累计写入时间或所述文件系统的写存储空间耗尽等。
步骤S17,预设写入任务未完成时,返回确定待写入所述第一文件的第Mi 长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中,i的初值为 1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续性且相邻的 循环递减字符序列具有连续性。
在具体应用中,每返回一次,即需要重新确定待写入所述第一文件的第 Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数。通过改变i的 值,即可重新定义写入第一文件和第二文件的字符数。不同次写入同一文件的 字符数的长度可以相同或不同,并且同一次写入第一文件和第二文件的字符数 的长度也可以相同或不同。
步骤S18,预设写入任务已完成时,中止写入。
在一个实施例中,步骤S18具体包括:
预设写入任务已完成时,调用文件关闭函数关闭所述第一文件和所述第二 文件,以中止写入。
本发明实施例的第一方面通过以添加方式向第一文件中写入可变长度的循 环递增字符序列、向第二文件写入可变长度的循环递减字符序列,然后再以添 加方式向第一文件中写入下一可变长度的循环递增字符序列、向第二文件写入 下一可变长度的循环递减字符序列,并使相邻的循环递增字符序列具有连续性 且相邻的循环递减字符序列具有连续性,如此循环往复,直到预设写入任务已 完成时,中止写入,并在写入失败时报告写入出错信息并终止测试,可以通过 被测试设备生成写测试数据,无需依赖外部测试设备和通讯通道,并且由于写 入的数据是分段写入的,因此可以有效节省写入数据所需的存储空间,同时由 于每次写入的数据的长度是可变的,可以覆盖到写入数据的长度随机的情况。
实施例二
本实施例提供一种读测试方法,应用于被测试设备的文件系统,所述读测 试方法基于实施例一实现。
在本实施例中,被测试设备可以是任意的能够运行文件系统,具备读取数 据或同时具备数据读写功能的设备。
在具体应用中,可以事先通过其他设备采用实施例一中的写测试方法将数 据成功写入第一文件和第二文件,然后通过被测试设备来执行所述读测试方法; 当然也可以直接通过被测试设备执行整个写测试过程和读测试过程。
在一个实施例中,在进行读测试之前,所述读测试方法包括:
步骤S21,为所述文件系统分配第二预设字节的读存储空间;其中,所述 第二预设字节为单次可读取的最大字符数。
在具体应用中,第二预设字节是整个读取测试过程中单次可读取的最大字 符数,该第二预设字节的值可以根据文件系统提供的读取函数的性能或不同的 测试要求来设置,例如,若读取函数所支持的最大单次读取字节数为10240字 符,则第二预设字节可以设置为10240。
步骤S22,定义用于记录所述第一文件的已累计读取字符数的第三全局变 量和用于记录所述第二文件的已累计读取字符数的第四全局变量。
在具体应用中,第三全局变量可以用C3表示,第四全局变量可以用于C4 表示,每当成功读取第一文件中数据时,更新C3的值,每当成功读取第二文 件中数据时,更新C4的值,C3和C4的值在整个测试过程中都跟随实际的数 据读取量的变化而变化,通过读取C3和C4的值,即可获知第一文件中的累计 读取字符数和第二文件中的累计读取字符数。
步骤S23,调用文件打开函数,以创建二进制文件并读取二进制数据的方 式打开所述第一文件和所述第二文件。
在具体应用中,步骤S23具体是指实施例一中的预设写入任务已完成之后, 调用文件打开函数打开第一文件和第二文件,使第一文件指针指向第一文件地 址0处,使第二文件指针指向第二文件地址0处。
步骤S24,将所述第一文件中当前待读取的首字符的值和所述第三全局变 量的值初始化为0,并将所述第二文件中当前待读取的首字符的值和所述第四 全局变量的值初始化为0。
在具体应用中,在未读取数据时,累计读取的第一文件和第二文件的字符 数为0,为了使得第三全局变量和第三全局变量的值能够直观反映已累计读取 的第一文件和第二文件的字符数,需要事先将第三全局变量和第四全局变量的 值初始化为0。
如图2所示,本实施例所提供的读测试方法包括:
步骤S301,确定待读取所述第一文件的第Mj长度的字符数和待读取所述 第二文件的第Nj长度的字符数。
在具体应用中,根据测试的需要,需要确定当前待读取的第一文件和第二 文件的字符数,待读取的字符数可以是一个在一定值域范围内(例如:0~第二 预设字节范围内)的随机数,也可以是一个预先设定的固定长度值,还可以是一 个循环递进变化(例如,循环递增或循环递减)的长度值(例如,循环递增变化 的长度值可以1、2、…、4、5、1、2、…、4、5、…,如此循环往复;循环递 减变化的长度值可以为5、4、…、2、1、5、4、…、2、1、…,如此循环往复), 具体采用哪一种方式,可根据测试需要来选择和设置。在一次完整的读测试过程中,所选择的方式保持不变。
在具体应用中,当前待读取的第一文件和第二文件的字符数应当不大于单 次可读取的最大字符数,即不大于前述的第二预设字节。
在本实施例中,Mj和Nj是为了区分不同长度的循环递增字符序列而引入 的变量,j的值不同,第Mj长度或第Nj长度所表示的长度也会发生变化,其 作用类似于第一、第二、第三、…,是用于区分不同的对象,所不同的是,j 的值还用于描述特定顺序,j的值表示向第一文件中写入数据的次序。例如,j=1 时,表示第j次向第一文件中写入数据且写入的数据的长度为第Mj长度。
步骤S302,从所述第一文件中读取第Mj长度的字符数据。
在一个实施例中,步骤S302,包括:
调用读取函数从所述第一文件中读取第Mj长度的字符数据至所述文件系 统的读存储空间。
步骤S303,读取第Mj长度的字符数据失败时,报告第二读取出错信息并 终止测试。
在一个实施例中,步骤S303包括:
步骤S3031,检测所述读取函数的返回值;
步骤S3032,所述读取函数的返回值指示已到达所述第二文件的尾部时, 检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相 等;
步骤S3033,所述第二文件的累计读取字符数与所述第二文件的累计写入 字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第 一文件和所述第二文件的尾部;
步骤S3034,所述第二文件的累计读取字符数与所述第二文件的累计写入 字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计 写入字符数不相等并终止测试;
步骤S3035,所述读取函数的返回值指示第四读取错误时,报告相应的第 四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件 的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。
步骤S304,读取第Mj长度的字符数据成功时,根据预设循环递增特性, 依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相 应预期值。
在具体应用中,预期值具体是指第Mj长度的字符数据中各字符的实际值, 由于循环递增字符序列具备数值依次递增且循环往复的规律,因此,当第Mj 长度的字符数据中各字符的值符合这一规律时,则认为符合相应预期值;第j 次读取第一文件中的数据时,当前实际读取到的字符数一般等于第Mj长度的 对应长度值,比对的数据长度为实际读取的字符数的长度;第一次比对的预期 值等于当前已累计读取字符数中的最低有效字节。
在一个实施例中,根据预设循环递增特性验证读取的字符数据的过程可以 用C语言程序示例如下:
应当理解的是,上述C语言程序中的变量C3即为前述的第三全局变量, 上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。
在一个实施例中,步骤S304之后,包括:
符合所述循环递增字符序列的相应预期值时,更新所述第一文件的累计读 取字符数。
在具体应用中,更新所述第一文件的累计读取字符数即为更新第三全局变 量的值,具体地,可以通过将本次实际读取的第一文件的字符数的长度累加到 当前的第三全局变量的值上来实现。文件系统提供的读取函数或其它相关函数 会报告本次实际读取的第一文件的字符数的长度,一般通过返回值或输出参数 的形式来反馈这个值,通常等于拟读取的第Mj长度。
在具体应用中,当第Mj长度的字符数据中的第一个字符符合相应预期值 时,则重新计算下一个字符的实际值并与对应的预期值比较,直到第Mj长度 的字符数据中的每个字符都被按照排列顺序、依次逐个比较完毕,若任何字符 不符合相应预期值,则进入步骤S305。
步骤S305,不符合所述循环递增字符序列的相应预期值时,报告第一读取 出错信息并终止测试。
在具体应用中,第一读取出错信息包括但不限于:第一文件的名称、第一 全局变量的值、第三全局变量的值、当前字符的预期值和当前字符的实际值。
步骤S306,符合所述循环递增字符序列的相应预期值时,从所述第二文件 中读取第Nj长度的字符数据。
在一个实施例中,步骤S306,包括:
符合所述循环递增字符序列的相应预期值时,调用读取函数从所述第二文 件中读取第Nj长度的字符数据至所述读存储空间。
步骤S307,读取第Nj长度的字符数据失败时,报告第四读取出错信息并 终止测试。
在一个实施例中,步骤S307包括:
步骤S3071,检测所述读取函数的返回值;
步骤S3072,所述读取函数的返回值指示已到达所述第二文件的尾部时, 检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相 等;
步骤S3073,所述第二文件的累计读取字符数与所述第二文件的累计写入 字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第 一文件和所述第二文件的尾部;
步骤S3074,所述第二文件的累计读取字符数与所述第二文件的累计写入 字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计 写入字符数不相等并终止测试;
步骤S3075,所述读取函数的返回值指示第四读取错误时,报告相应的第 四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件 的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。
步骤S308,读取第Nj长度的字符数据成功时,根据预设循环递减特性, 依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预 期值。
在具体应用中,预期值具体是指第Nj长度的字符数据中各字符的实际值, 由于循环递减字符序列具备数值依次递减且循环往复的规律,因此,当第Nj 长度的字符数据中各字符的值符合这一规律时,则认为符合相应预期值;第j 次读取第一文件中的数据时,当前实际读取到的字符数一般等于第Nj长度的对 应长度值,比对的数据长度为实际读取的字符数的长度;第一次比对的预期值 等于当前已累计读取字符数中的最低有效字节。
在一个实施例中,根据预设循环递减特性验证读取的字符数据的过程可以 用C语言程序示例如下:
应当理解的是,上述C语言程序中的变量C4即为前述的第四全局变量, 上述C语言程序中的变量i与前述Mi和Ni中的变量i没有关联性。
在一个实施例中,步骤S308之后,包括:
符合所述循环递减序列的相应预期值时,更新所述第二文件的累计读取字 符数。
在具体应用中,更新所述第二文件的累计读取字符数即为更新第四全局变 量的值,具体地,可以通过将本次实际读取的第二文件的字符数的长度累加到 当前的第四全局变量的值上来实现。文件系统提供的读取函数或其它相关函数 会报告本次实际读取的第二文件的字符数的长度,一般通过返回值或输出参数 的形式来反馈这个值,通常等于拟读取的第Nj长度。
步骤S309,不符合所述循环递减序列的相应预期值时,报告第三读取出错 信息并终止测试。
在具体应用中,第三读取出错信息包括但不限于:第二文件的名称、第二 全局变量的值、第四全局变量的值、当前字符的预期值和当前字符的实际值。
步骤S310,符合所述循环递减序列的相应预期值时,检测是否已到达所述 第一文件和所述第二文件的尾部;
步骤S311,已到达所述第一文件和所述第二文件的尾部时,报告测试通过 并终止测试;
步骤S312,未到达所述第一文件和所述第二文件的尾部时,返回确定待读 取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字 符数;其中,每返回一次所述j的值加1。
在具体应用中,每返回一次,即需要重新确定待读取所述第一文件的第 Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数。通过改变j的 值,即可重新定义读取第一文件和第二文件的字符数。不同次读取同一文件的 字符数的长度可以相同或不同,并且同一次读取第一文件和第二文件的字符数 的长度也可以相同或不同。
本实施例通过在第一方面的写入测试完成之后,从第一文件读取可变长度 的字符数据,并根据预设循环递增特性依次验证各字符是否符合循环递增字符 序列的相应预期值,从第二文件读取可变长度的字符数据,并根据预设循环递 减特性依次检查各字符是否符合循环递减序列的相应预期值;然后,再从第一 文件读取下一可变长度的字符数据,并根据预设循环递增特性依次验证各字符 是否符合循环递增字符序列的相应预期值,从第二文件读取下一可变长度的字 符数据,并根据预设循环递减特性依次检查各字符是否符合循环递减序列的相 应预期值,如此循环往复,直到达第一文件和第二文件的尾部时,报告测试通 过并终止测试,并在不符合相应预期值时,报告读取出错信息并终止测试,可以通过被测试设备读取测试数据,无需依赖外部测试设备和通讯通道,并且由 于读取的数据是分段读取的,因此可以有效节省读取数据所需的存储空间,同 时由于每次读取的数据的长度是可变的,可以覆盖到读取数据的长度随机的情 况。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后, 各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施 过程构成任何限定。
本发明的一个实施例还提供一种读写测试方法,包括实施例一中写测试方 法和实施例二中的读测试方法。
实施例三
如图3所示,本实施例提供一种写测试系统100,应用于测试设备,其包 括用于执行实施例一中方法步骤的结构,具体包括:
写入字符数确定模块11,用于确定待写入所述第一文件的第Mi长度的字 符数和待写入所述第二文件的第Ni长度的字符数;
第一写入模块12,用于以添加方式向所述文件系统的第一文件中写入第 Mi长度的循环递增字符序列;
第一写入出错报告模块13,用于写入第Mi长度的循环递增字符序列失败 时,报告第一写入出错信息并终止写测试;
第二写入模块14,用于写入第Mi长度的循环递增字符序列成功时,以添 加方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;
第二写入出错报告模块15,用于写入第Ni长度的循环递减字符序列失败 时,报告第二写入出错信息并终止写测试;
任务检测模块16,用于写入第Ni长度的循环递减字符序列成功时,检测 预设写入任务是否已完成;
返回写入模块17,用于预设写入任务未完成时,返回确定待写入所述第一 文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中, i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续 性且相邻的循环递减字符序列具有连续性;
中止模块18,用于预设写入任务已完成时,中止写入。
在一个实施例中,所述写测试系统还包括:
第一写更新模块,用于写入第Mi长度的循环递增字符序列成功时,更新 所述第一文件中的累计写入字符数。
在一个实施例中,所述写测试系统还包括:
第二写更新模块,用于写入第Ni长度的循环递减字符序列成功时,更新所 述第二文件中的累计写入字符数。
在一个实施例中,所述写测试系统还包括:
写存储空间分配模块,用于为所述文件系统分配第一预设字节的写存储空 间;其中,所述第一预设字节为单次可写入的最大字符数;
第一变量定义模块,用于定义用于记录所述第一文件中的累计写入字符数 的第一全局变量和用于记录所述第二文件中的累计写入字符数的第二全局变 量。
第一文件打开模块,用于调用文件打开函数,以创建二进制文件并添加写 入二进制数据的方式打开所述第一文件和所述第二文件;
第一变量初始化模块,用于将所述第一全局变量的值和所述第二全局变量 的值初始化为0。
实施例四
如图4所示,本实施例提供一种读测试系统200,应用于测试设备,其包 括用于执行实施例二中方法步骤的结构,具体包括:
读取字符数确定模块301,用于确定待读取所述第一文件的第Mj长度的字 符数和待读取所述第二文件的第Nj长度的字符数;
第一读取模块302,用于从所述第一文件中读取第Mj长度的字符数据;
第一读取出错报告模块303,用于读取第Mj长度的字符数据失败时,报告 第二读取出错信息并终止测试;
第一验证模块304,用于读取第Mj长度的字符数据成功时,根据预设循环 递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字 符序列的相应预期值;
第二读取出错报告模块305,用于第一不符合所述循环递增字符序列的相 应预期值时,报告第一读取出错信息并终止测试;
第二读取模块306,用于符合所述循环递增字符序列的相应预期值时,从 所述第二文件中读取第Nj长度的字符数据;
第三读取出错报告模块307,用于读取第Nj长度的字符数据失败时,报告 第四读取出错信息并终止测试;
第二验证模块308,用于读取第Nj长度的字符数据成功时,根据预设循环 递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列 的相应预期值;
第四读取出错报告模块309,用于不符合所述循环递减序列的相应预期值 时,报告第三读取出错信息并终止测试;
文件检测模块310,用于符合所述循环递减序列的相应预期值时,检测是 否已到达所述第一文件和所述第二文件的尾部;
终止模块311,用于已到达所述第一文件和所述第二文件的尾部时,报告 测试通过并终止测试;
返回读取模块312,用于未到达所述第一文件和所述第二文件的尾部时, 返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的 第Nj长度的字符数;其中,每返回一次所述j的值加1。
在一个实施例中,所述写测试系统还包括:
第一读更新模块,用于符合所述循环递增字符序列的相应预期值时,更新 所述第一文件的累计读取字符数。
在一个实施例中,所述写测试系统还包括:
第二读更新模块,用于符合所述循环递减序列的相应预期值时,更新所述 第二文件的累计读取字符数。
在一个实施例中,所述写测试系统还包括:
读存储空间分配模块,用于为所述文件系统分配第二预设字节的读存储空 间;其中,所述第二预设字节为单次可读取的最大字符数;
第三变量定义模块,用于定义用于记录所述第一文件的已累计读取字符数 的第三全局变量和用于记录所述第二文件的已累计读取字符数的第四全局变 量;
第二文件打开模块,用于调用文件打开函数,以创建二进制文件并读取二 进制数据的方式打开所述第一文件和所述第二文件;
第四变量定义模块,用于将所述第一文件中当前待读取的首字符的值和所 述第三全局变量的值初始化为0,并将所述第二文件中当前待读取的首字符的 值和所述第四全局变量的值初始化为0。
实施例五
如图5所示,本实施例提供一种终端设备40,其包括:处理器400、存储 器401以及存储在所述存储器401中并可在所述处理器400上运行的计算机程 序402,例如写测试程序或读测试程序。所述处理器400执行所述计算机程序 402时实现上述写测试程序或读测试程序实施例中的步骤,例如图1所示的步 骤S11至S18或者实施例二所示的步骤S301至S312。或者,所述处理器400 执行所述计算机程序402时实现上述各系统实施例中各模块的功能,例如图3 所示模块11至18或图4所示模块301至312的功能。
示例性的,所述计算机程序402可以被分割成一个或多个模块,所述一个 或者多个模块被存储在所述存储器401中,并由所述处理器400执行,以完成 本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指 令段,该指令段用于描述所述计算机程序402在所述终端设备40中的执行过程。 例如,所述计算机程序402可以被分割成如下模块:
写入字符数确定模块,用于确定待写入所述第一文件的第Mi长度的字符 数和待写入所述第二文件的第Ni长度的字符数;
第一写入模块,用于以添加方式向所述文件系统的第一文件中写入第Mi 长度的循环递增字符序列;
第一写入出错报告模块,用于写入第Mi长度的循环递增字符序列失败时, 报告第一写入出错信息并终止写测试;
第二写入模块,用于写入第Mi长度的循环递增字符序列成功时,以添加 方式向所述文件系统的第二文件中写入第Ni长度的循环递减字符序列;
第二写入出错报告模块,用于写入第Ni长度的循环递减字符序列失败时, 报告第二写入出错信息并终止写测试;
任务检测模块,用于写入第Ni长度的循环递减字符序列成功时,检测预设 写入任务是否已完成;
返回写入模块,用于预设写入任务未完成时,返回确定待写入所述第一文 件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数;其中, i的初值为1且每返回一次所述i的值加1,相邻的循环递增字符序列具有连续 性且相邻的循环递减字符序列具有连续性;
中止模块,用于预设写入任务已完成时,中止写入。
在一个实施例中,所述计算机程序402还可以被分割成如下模块:
读取字符数确定模块,用于确定待读取所述第一文件的第Mj长度的字符 数和待读取所述第二文件的第Nj长度的字符数;
第一读取模块,用于从所述第一文件中读取第Mj长度的字符数据;
第一验证模块,用于读取第Mj长度的字符数据成功时,根据预设循环递 增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符 序列的相应预期值;
第一读取出错报告模块,用于第一不符合所述循环递增字符序列的相应预 期值时,报告第一读取出错信息并终止测试;
第二读取出错报告模块,用于读取第Mj长度的字符数据失败时,报告第 二读取出错信息并终止测试;
第二读取模块,用于符合所述循环递增字符序列的相应预期值时,从所述 第二文件中读取第Nj长度的字符数据;
第二验证模块,用于读取第Nj长度的字符数据成功时,根据预设循环递减 特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相 应预期值;
第三读取出错报告模块,用于不符合所述循环递减序列的相应预期值时, 报告第三读取出错信息并终止测试;
第四读取出错报告模块,用于读取第Nj长度的字符数据失败时,报告第四 读取出错信息并终止测试;
文件检测模块,用于符合所述循环递减序列的相应预期值时,检测是否已 到达所述第一文件和所述第二文件的尾部;
终止模块,用于已到达所述第一文件和所述第二文件的尾部时,报告测试 通过并终止测试;
返回读取模块,用于未到达所述第一文件和所述第二文件的尾部时,返回 确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj 长度的字符数;其中,每返回一次所述j的值加1。
所述终端设备40可以是桌上型计算机、笔记本、掌上电脑及云端服务器等 计算设备。所述终端设备可包括,但不仅限于,处理器400、存储器401。本领 域技术人员可以理解,图5仅仅是终端设备40的示例,并不构成对终端设备 40的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同 的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器400可以是中央处理单元(Central Processing Unit,CPU), 还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、 专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可 编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器 件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理 器或者该处理器也可以是任何常规的处理器等。
所述存储器401可以是所述终端设备40的内部存储单元,例如终端设备 40的硬盘或内存。所述存储器401也可以是所述终端设备40的外部存储设备, 例如所述终端设备40上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步 地,所述存储器401还可以既包括所述终端设备40的内部存储单元也包括外部 存储设备。所述存储器401用于存储所述计算机程序以及所述终端设备所需的 其他程序和数据。所述存储器401还可以用于暂时地存储已经输出或者将要输 出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上 述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上 述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不 同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功 能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬 件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模 块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上 述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程, 在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详 述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来 实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用 和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现 所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法, 可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示 意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现 时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一 个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或 通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为 单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元 中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的 形式实现。
所述集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或 使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明 实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关 的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算 机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计 算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象 代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能 够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机 存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软 件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法 管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根 据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照 前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特 征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发 明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
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长度的循环递减字符序列写入所述第二文件的尾部。
2.如权利要求1所述的写测试方法,其特征在于,
所述写入第Mi长度的循环递增字符序列失败时,报告第一写入出错信息并终止写测试,包括:
检测所述写入函数的返回值;
所述写入函数的返回值指示所述文件系统的写存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;
所述写入函数的返回值指示第一其他错误时,报告相应的第一其他出错信息并终止写测试;其中,所述第一其他出错信息包括所述第一文件的名称、所述第一文件中的累计写入字符数的值和所述写入函数的返回值;
所述写入第Ni长度的循环递减字符序列失败时,报告第二写入出错信息并终止写测试,包括:
检测所述写入函数的所述写入函数的返回值;
所述写入函数的返回值指示所述文件系统的存储空间耗尽时,报告所述文件系统的写存储空间耗尽信息;
所述写入函数的返回值指示第二其他错误时,报告相应的第二其他出错信息并终止写测试;其中,所述第二其他出错信息包括所述第二文件的名称、所述第二文件中的累计写入字符数的值和所述写入函数的返回值。
3.如权利要求1或2任一项所述的写测试方法,其特征在于,确定待写入所述第一文件的第Mi长度的字符数和待写入所述第二文件的第Ni长度的字符数之前,包括:
为所述文件系统分配第一预设字节的写存储空间;其中,所述第一预设字节为单次可写入的最大字符数;
定义用于记录所述第一文件中的累计写入字符数的第一全局变量和用于记录所述第二文件中的累计写入字符数的第二全局变量;
调用文件打开函数,以创建二进制文件并添加写入二进制数据的方式打开所述第一文件和所述第二文件;
将所述第一全局变量的值和所述第二全局变量的值初始化为0。
4.如权利要求1或2任一项所述的写测试方法,其特征在于,所述预设写入任务包括接收到中止写入指令、已达到预设累计写入总字符数、已达到累计写入时间或所述文件系统的写存储空间耗尽;
所述预设写入任务已完成时,中止写入,包括:
预设写入任务已完成时,调用文件关闭函数关闭所述第一文件和所述第二文件,以中止写入。
5.一种读测试方法,其特征在于,应用于被测试设备的文件系统,所述读测试方法基于权利要求1~4任一项所述的写测试方法实现,所述读测试方法包括:
确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,Mj和Nj是为了区分不同长度的循环递增字符序列而引入的变量,j的值不同,第Mj长度或第Nj长度所表示的长度也会发生变化,j的值还用于描述特定顺序,j的值表示向所述第一文件中写入数据的次序;
从所述第一文件中读取第Mj长度的字符数据;
读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试;
读取第Mj长度的字符数据成功时,根据预设循环递增特性,依次验证所述第Mj长度的字符数据中各字符是否符合循环递增字符序列的相应预期值;
不符合所述循环递增字符序列的相应预期值时,报告第一读取出错信息并终止测试;
符合所述循环递增字符序列的相应预期值时,从所述第二文件中读取第Nj长度的字符数据;
读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试;
读取第Nj长度的字符数据成功时,根据预设循环递减特性,依次验证所述第Nj长度的字符数据中各字符是否符合循环递减序列的相应预期值;
不符合所述循环递减序列的相应预期值时,报告第三读取出错信息并终止测试;
符合所述循环递减序列的相应预期值时,检测是否已到达所述第一文件和所述第二文件的尾部;
已到达所述第一文件和所述第二文件的尾部时,报告测试通过并终止测试;
未到达所述第一文件和所述第二文件的尾部时,返回确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数;其中,每返回一次所述j的值加1;
从所述第一文件中读取第Mj长度的字符数据,包括:
调用读取函数从所述第一文件中读取第Mj长度的字符数据至所述文件系统的读存储空间;
从所述第二文件中读取第Nj长度的字符数据,包括:
调用读取函数从所述第二文件中读取第Nj长度的字符数据至所述读存储空间。
6.如权利要求5所述的读测试方法,其特征在于,
所述读取第Mj长度的字符数据失败时,报告第二读取出错信息并终止测试,包括:
检测所述读取函数的返回值;
所述读取函数的返回值指示已到达所述第一文件的尾部时,检测所述第一文件的累计读取字符数与所述第一文件的累计写入字符数是否相等;
所述第一文件的累计读取字符数与所述第一文件的累计写入字符数相等时,报告所述第一文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;
所述第一文件的累计读取字符数与所述第一文件的累计写入字符数不相等时,报告所述第一文件的累计读取字符数与所述第一文件的累计写入字符数不相等并终止测试;
所述读取函数的返回值指示第二读取错误时,报告相应的第二读取出错信息并终止测试;其中,所述第二读取出错信息包括所述第一文件的名称、所述第一文件的累计读取字符数的值和所述读取函数的返回值;
所述读取第Nj长度的字符数据失败时,报告第四读取出错信息并终止测试,包括:
检测所述读取函数的返回值;
所述读取函数的返回值指示已到达所述第二文件的尾部时,检测所述第二文件的累计读取字符数与所述第二文件的累计写入字符数是否相等;
所述第二文件的累计读取字符数与所述第二文件的累计写入字符数相等时,报告所述第二文件读取和验证完毕,并检测是否已到达所述第一文件和所述第二文件的尾部;
所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等时,报告所述第二文件的累计读取字符数与所述第二文件的累计写入字符数不相等并终止测试;
所述读取函数的返回值指示第四读取错误时,报告相应的第四读取出错信息并终止测试;其中,所述第四读取出错信息包括所述第二文件的名称、所述第二文件的累计读取字符数的值和所述读取函数的返回值。
7.如权利要求5或6任一项所述的读测试方法,其特征在于,所述确定待读取所述第一文件的第Mj长度的字符数和待读取所述第二文件的第Nj长度的字符数之前,包括:
为所述文件系统分配第二预设字节的读存储空间;其中,所述第二预设字节为单次可读取的最大字符数;
定义用于记录所述第一文件的已累计读取字符数的第三全局变量和用于记录所述第二文件的已累计读取字符数的第四全局变量;
调用文件打开函数,以创建二进制文件并读取二进制数据的方式打开所述第一文件和所述第二文件;
将所述第一文件中当前待读取的首字符的值和所述第三全局变量的值初始化为0,并将所述第二文件中当前待读取的首字符的值和所述第四全局变量的值初始化为0。
8.一种读写测试方法,其特征在于,包括权利要求1~4任一项所述的写测试方法和权利要求5~7任一所述的读测试方法。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~8任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810400405.2A CN108665938B (zh) | 2018-04-28 | 2018-04-28 | 写测试方法、读测试方法、读写测试方法及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810400405.2A CN108665938B (zh) | 2018-04-28 | 2018-04-28 | 写测试方法、读测试方法、读写测试方法及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108665938A CN108665938A (zh) | 2018-10-16 |
CN108665938B true CN108665938B (zh) | 2020-11-24 |
Family
ID=63781373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810400405.2A Active CN108665938B (zh) | 2018-04-28 | 2018-04-28 | 写测试方法、读测试方法、读写测试方法及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108665938B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63292487A (ja) * | 1987-05-26 | 1988-11-29 | Matsushita Electric Ind Co Ltd | 半導体記憶装置 |
US7490279B1 (en) * | 2005-09-29 | 2009-02-10 | National Semiconductor Corporation | Test interface for random access memory (RAM) built-in self-test (BIST) |
CN101373446B (zh) * | 2007-08-24 | 2011-05-04 | 英业达股份有限公司 | 文件系统的压力测试方法 |
CN102354537B (zh) * | 2011-07-06 | 2014-03-05 | 华中科技大学 | 一种相变存储器芯片测试方法 |
CN103093829A (zh) * | 2011-10-27 | 2013-05-08 | 迈实电子(上海)有限公司 | 存储器测试系统及存储器测试方法 |
US9298573B2 (en) * | 2012-03-30 | 2016-03-29 | Intel Corporation | Built-in self-test for stacked memory architecture |
CN104078082B (zh) * | 2013-03-29 | 2017-11-14 | 芯成半导体(上海)有限公司 | 用于测试存储器件的电路和方法 |
JP6154228B2 (ja) * | 2013-07-16 | 2017-06-28 | ラピスセミコンダクタ株式会社 | 半導体装置 |
CN103617004A (zh) * | 2013-11-20 | 2014-03-05 | 浪潮电子信息产业股份有限公司 | 一种对分布式文件系统进行读写基准测试的工具及方法 |
CN103700407B (zh) * | 2013-12-14 | 2016-05-25 | 中国航空工业集团公司第六三一研究所 | 一种基于航空应用的国产化存储器应用验证方法 |
-
2018
- 2018-04-28 CN CN201810400405.2A patent/CN108665938B/zh active Active
Non-Patent Citations (2)
Title |
---|
"Random test length for bounded faults in RAMs";R. David等;《Proceedings ETC 93 Third European Test Conference》;20020806;第149-158页 * |
"Random testing of multi-port static random access memories";F. Karimi等;《Proceedings of the 2002 IEEE International Workshop on Memory Technology, Design and Testing (MTDT2002)》;20021107;第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108665938A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110135985B (zh) | 一种区块链上交易的并行执行方法及系统 | |
CN109582525B (zh) | 测试代码验证方法、验证装置、设备和存储介质 | |
CN107766236B (zh) | 测试任务自动化管理方法、装置、设备及存储介质 | |
CN107832062B (zh) | 一种程序更新方法及终端设备 | |
CN109783346B (zh) | 基于关键字驱动的自动化测试方法、装置及终端设备 | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
CN113010116B (zh) | 一种数据处理方法、装置、终端设备及可读存储介质 | |
CN112181430B (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
US11520620B2 (en) | Electronic device and non-transitory storage medium implementing test path coordination method | |
CN114676040A (zh) | 一种测试覆盖率验证方法、装置及存储介质 | |
CN110297764B (zh) | 漏洞测试模型训练方法和装置 | |
CN112214366A (zh) | 测试方法、装置、系统、设备及介质 | |
CN111693294A (zh) | 车辆检测方法、装置、终端设备及存储介质 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
CN114816993A (zh) | 一种全链路接口测试方法、系统、介质及电子设备 | |
CN110580220A (zh) | 测量代码段执行时间的方法及终端设备 | |
CN112965657B (zh) | 实现针对矢量网络分析仪器测量状态进行存储处理的方法、装置、处理器及其存储介质 | |
CN111143092B (zh) | 故障录波数据处理方法、系统及终端设备 | |
CN112395144A (zh) | 一种测试方法、系统、终端设备及可读存储介质 | |
CN108665938B (zh) | 写测试方法、读测试方法、读写测试方法及终端设备 | |
CN117153230A (zh) | 闪存芯片老化测试方法、装置、设备及介质 | |
US11397662B2 (en) | Method for debugging computer program, device employing method, and storage medium | |
CN109324838B (zh) | 单片机程序的执行方法、执行装置及终端 | |
CN107844273B (zh) | 一种数据写入方法及装置、验证方法及装置 | |
CN114425787A (zh) | 机器人自动测试的控制方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |