页面模板的测试方法和装置
技术领域
本申请涉及软件测试技术领域,尤其涉及一种页面模板的测试方法和装置。
背景技术
在网页前端开发中,普遍使用模板来提高生成和维护网页的效率,并保持网站页面的统一风格。随着网页开发技术的发展,采用模块化设计的页面模板被广为使用,能够复用于多个页面模板的结构、样式等作为外部模块,在页面模板中被引用,从而进一步提高前端开发工作的效率。
在网站或App(应用程序)的版本升级时,可能会增加新的页面模板、修改已有的页面模板,也常常会保留旧版本的页面模板继续使用;类似的,被多个页面模板引用的外部模块也可能新增、修改或保留。如果新版本的某个外部模块是对旧版本中该外部模块的修改,而引用该外部模块的页面模板在版本升级中未修改,由于未修改的页面模板与修改后的外部模块往往不能很好的匹配,会造成使用该页面模板的网页不够美观、甚至不能正确展现页面内容。对在使用页面模板前进行完整性校验的网站或App而言,会因页面模板无法通过完整性校验而不能进行页面展现。
因此,开发人员希望能够在上线前对新版本进行测试时发现上述问题。采用现有技术中由测试人员浏览网页或使用App的测试方式,只有在测试中用到每个页面模板才能发现新版本中的所有上述问题,不仅耗时耗力效率低下,而且往往因难以穷尽每个页面模板而有所遗漏。
发明内容
有鉴于此,本申请提供一种页面模板的测试方法,包括:
获取在版本升级中未修改的页面模板的新版本模板数据的摘要值、和旧版本模板数据的摘要值;所述摘要值根据模板数据采用预定摘要算法生成;
比较所述页面模板的新版本模板数据的摘要值与旧版本模板数据的摘要值,如果相同则所述页面模板通过测试。
本申请还提供了一种页面模板的测试装置,包括:
摘要值获取单元,用于获取在版本升级中未修改的页面模板的新版本模板数据的摘要值、和旧版本模板数据的摘要值;所述摘要值根据模板数据采用预定摘要算法生成;
摘要值比较单元,用于比较所述页面模板的新版本模板数据的摘要值与旧版本模板数据的摘要值,如果相同则所述页面模板通过测试。
由以上技术方案可见,本申请的实施例中,比较在版本升级中未修改的页面模板的新版本模板数据的摘要值和旧版本模板数据的摘要值,由于摘要值的变化意味着该页面模板引用的外部模块已被修改,从而能够简单方便的发现与版本升级时修改的外部模块可能存在匹配问题的页面模板,不仅高效并且不会有遗漏。
附图说明
图1是本申请实施例中一种页面模板的测试方法的流程图;
图2是本申请应用示例中一种页面模板进行单元测试的流程图;
图3是终端或服务器的一种硬件结构图;
图4是本申请实施例中一种页面模板的测试装置的逻辑结构图。
具体实施方式
在使用基于模块化设计的页面模板进行页面展现时,会先将页面模板所引用的外部模块引入到页面模板中,生成该页面模板的模板数据,再将某个页面的内容数据引入到模板数据中,生成最终的页面数据用于展现。换言之,在使用基于模块化设计的页面模板时会进行两次引用,第一次引用生成完整的模板数据,第二次引用将完整的模板数据和具体的页面内容相结合。
例如,通用于多个页面模板的js(JavaScript,一种脚本语言)页面结构、css(Cascading Style Sheets,层叠样式表)页面样式、代表可变内容数据的页面变量都可以作为外部模块,来被页面模板引用。根据某个页面模板所引用的外部模块类型,在将与页面模板相同版本的页面结构模块(js模块)、页面样式模块(css模块)和/或页面变量引入页面模板后生成该页面模板的模板数据。当使用该页面模板展现具体的页面时,引用该页面模板的模板数据,将模板数据与该页面要呈现的内容数据相结合。
在版本升级时,如果新版本中的某个外部模块被修改,虽然页面模板在升级中未被修改(即新版本页面模板和旧版本页面模板相同),但引用该外部模块的页面模板的新版本模板数据和旧版本模板数据会因该外部模块的变化而有所不同。在版本升级中,由于新版本中新增或修改的页面模板通常是基于新版本中外部模块编写完成,不会存在与新版本外部模块不匹配的问题,因此在测试中查找出所有在版本升级中未修改的页面模板的新版本模板数据和旧版本模板数据不同的页面模板,即可发现所有可能因所引用的外部模块被修改而导致不匹配的页面模板。
本申请的实施例提出一种新的页面模板的测试方法,通过比较模板数据的摘要值,来发现在版本升级中未修改的页面模板的新版本模板数据是否与旧版本模板数据不同,从而自动发现可能因所引用的外部模块在版本升级中被修改而导致的不匹配,不需测试人员专门针对这一问题进行详尽的测试,不仅提高了测试效率,并且能够发现所有可能存在该问题的页面模板,不会有遗漏,以解决现有技术中存在的问题。
本申请的实施例可以应用在任何用于开发或测试的终端或服务器上。其中,终端可以是手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本等设备;服务器可以是一个物理或逻辑服务器,也可以是由两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现本申请实施例中的各项功能。
本申请的实施例中,页面模板的测试方法的流程如图1所示。
步骤110,获取在版本升级中未修改的页面模板的新版本模板数据的摘要值、和旧版本模板数据的摘要值;摘要值根据模板数据采用预定摘要算法生成。
对在版本升级中未修改的页面模板,新版本的模板数据是将新版本的外部模块引入到该页面模板后生成的模板数据,旧版本的模板数据是将旧版本的外部模块引入到该页面模板后生成的模板数据。
模板数据的摘要值是对模板数据应用预定摘要算法后得到的结果。摘要算法包括各种将输入内容压缩为摘要值,当输入内容不同时得到摘要值不同的数据校验算法和数据摘要算法,如CRC(Cyclic Redundancy Check,循环冗余校验)算法、不同版本的MD(Message-Digest Algorithm,消息摘要算法)算法、不同版本的SHA(Secure HashAlgorithm,安全哈希算法)等等。
可以将对应版本的外部模块(如js模块、css模块和/或页面变量)引入到该页面模板后生成模板数据,以模板数据为预定摘要算法的输入,计算得出对应版本模板数据的摘要值。对已经生成并保存有新版本模板数据摘要值或旧版本模板数据摘要值的应用场景,也可以直接读取该页面模板的模板数据的摘要值。
例如,在一些应用场景中,在使用页面模板前会根据页面模板的模板数据的摘要值进行完整性校验,因此通常会保存有所有页面模板的旧版本模板数据用于校验;在这些应用场景中,可以根据预定摘要算法计算版本升级后未修改的页面模板的新版本模板数据的摘要值,并读取保存的版本升级前未修改页面模板的旧版本模板数据的摘要值。
步骤120,比较页面模板的新版本模板数据的摘要值与旧版本模板数据的摘要值,如果相同则该页面模板通过测试。
对在版本升级中未修改的页面模板,如果新版本模板数据的摘要值与旧版本模板数据的摘要值相同,则认为新版本模板数据与旧版本模板数据相同,意味着该页面模板所引用的外部模块也同样在版本升级中未被改动,则该页面模板不会与其引用的外部模块有匹配问题,该页面模板通过测试。反之,如果摘要值不同,则认为新版本模板数据因所引用的外部模块被修改而与旧版本模板数据不同,因而该页面模板很可能存在与新版本外部模块的匹配问题,需要进一步检测乃至修改。
对包括若干个页面模板的测试用例,可以先查找出所有在版本升级中未修改的页面模板,再获取这些页面模板的新版本模板数据和旧版本模板数据进行比较;也可以先获取测试用例中所有页面模板的新版本模板数据的摘要值,和该测试用例所有页面模板旧版本模板数据的摘要值,再从中提取在版本升级中每个未修改页面模板的新版本模板数据的摘要值、与该页面模板的旧版本模板数据的摘要值进行比较。如果某个未修改页面模板的新版本模板数据摘要值与旧版本不同,则该页面模板未通过测试,记录该页面模板的相关信息(如该页面模板的文件名、路径等),供开发人员定位该页面模板,以便进行后续的检测及修改;如果测试用例中所有未修改的页面模板均通过测试,该测试用例通过测试;否则可以得到所有未通过测试的页面模板的相关信息。
可见,本申请的实施例中,通过将新版本模板数据的摘要值与旧版本模板数据的摘要值进行对比,来发现在版本升级中未修改的页面模板是否因所引用的外部模块被修改而使得模板数据发生变化,以简单方便的找出所有可能因版本升级导致与所引用外部模块不匹配的页面模板,不需测试人员专门针对这一问题进行详尽的测试,提高了测试效率,并且不会有遗漏。
在本申请的一个应用示例中,某个App的服务器上保存有已上线版本的所有页面模板的模板数据的MD5(消息摘要算法第五版)值,在使用页面模板前进行校验。具体而言,服务器在下发使用某个页面模板的内容数据时,会一并下发该页面模板的模板数据的MD5值,客户端对比服务器下发的MD5值与本地该页面模板的模板数据的MD5值是否相同,如果相同则使用该页面模板展现数据,否则向服务器报错。本应用示例的App中,页面模板以js模块、css模块和页面变量作为所引用的外部模块。
在新版本的App上线前,在对新版本软件的测试用例进行单元测试时,可以基于图2所示的流程对版本升级中未修改的页面模板进行测试。图2所示的流程可以运行在开发服务器、测试服务器、开发终端或/测试终端上。
步骤210,对测试用例新版本中的每个页面模板,将其引用的js模块、css模块和页面变量代入到页面模板中,生成模板数据。根据本应用示例所采用的MD5算法,以模板数据为输入得到每个新版本页面模板的模板数据的MD5值。
步骤220,读取或者从服务器获取在服务器上保存的旧版本每个页面模板的模板数据的MD5值。
步骤230,对测试用例中在版本升级时未曾修改的每个页面模板,比较该页面模板的新版本模板数据的MD5值、与该页面模板的旧版本模板数据的MD5值。
步骤240,判断测试用例中是否有在版本升级时未修改页面模板的新版本模板数据MD5值与旧版本模板数据的MD5值不同,如果有,执行步骤250;否则转步骤260。
步骤250,记录每个新版本模板数据MD5值与旧版本模板数据的MD5值不同的页面模板的文件名和路径,在测试结束作为输出。该测试用例未通过测试,流程结束。
步骤260,该测试用例通过测试。
与上述流程实现对应,本申请的实施例还提供了一种页面模板的测试装置,应用在用于开发或测试的终端或服务器上。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过终端或服务器的CPU(CentralProcess Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图3所示的CPU、内存以及非易失性存储器之外,该装置所在的终端通常还包括用于进行无线信号收发的芯片等其他硬件,该装置所在的服务器通常还包括用于实现网络通信功能的板卡等其他硬件。
图4所示为本申请实施例提供的一种页面模板的测试装置,包括摘要值获取单元和摘要值比较单元,其中:摘要值获取单元用于获取在版本升级中未修改的页面模板的新版本模板数据的摘要值、和旧版本模板数据的摘要值;所述摘要值根据模板数据采用预定摘要算法生成;摘要值比较单元用于比较所述页面模板的新版本模板数据的摘要值与旧版本模板数据的摘要值,如果相同则所述页面模板通过测试。
一个例子中,所述摘要值获取单元具体用于:获取测试用例所有页面模板的新版本模板数据的摘要值,和所述测试用例所有页面模板的旧版本模板数据的摘要值;所述摘要值比较单元具体用于:提取在版本升级中未修改的页面模板的新版本模板数据的摘要值,与所述页面模板的旧版本模板数据的摘要值进行比较,如果相同则所述页面模板通过测试。
上个例子中,所述装置还可以包括测试用例单元,用于在版本升级中所有未修改页面模板都通过测试时,所述测试用例通过测试;否则记录所述测试用例中每个未通过测试的页面模板。
可选的,所述摘要值获取单元具体用于:根据预定摘要算法计算版本升级后未修改的页面模板的新版本模板数据的摘要值,读取保存的版本升级前所述页面模板的旧版本模板数据的摘要值。
可选的,所述模板数据在将对应版本的页面结构模块、页面样式模块和/或页面变量引入页面模板后生成。
可选的,所述预定摘要算法包括:消息摘要算法MD、或安全哈希算法SHA。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。