测试应用的方法和装置制造方法及图纸

技术编号:20517771 阅读:36 留言:0更新日期:2019-03-06 02:37
本公开涉及用于测试应用的方法和装置。根据本公开的用于测试应用的方法包括:将应用分解为前台执行模块和后台逻辑模块,前台执行模块调用后台逻辑模块;确定后台逻辑模块中的函数的权重;将前台执行模块分解成代码块,代码块形成执行路径;基于所确定的后台逻辑模块中的函数的权重来确定执行路径的权重;基于所确定的执行路径的权重生成测试用例;以及使用所生成的测试用例对应用进行测试。根据本公开的技术,可以获得最重要的测试用例,从而提高应用的测试效率,降低测试成本。

The Method and Device of Testing Application

The present disclosure relates to methods and devices for testing applications. The methods for testing applications according to the present disclosure include: dividing applications into foreground execution module and background logic module, and foreground execution module calls back-end logic module; determining the weight of functions in the background logic module; dividing the foreground execution module into code blocks and forming execution path; and determining Persistence Based on the weight of functions in the determined background logic module. The weight of the line path; test case generation based on the weight of the determined execution path; and application testing using the generated test cases. According to the technology of the disclosure, the most important test cases can be obtained, thereby improving the test efficiency of the application and reducing the test cost.

【技术实现步骤摘要】
测试应用的方法和装置
本公开涉及测试应用的方法和装置。特别地,本公开涉及适用于对牵涉在区块链上运行的智能合约的应用进行测试的方法和装置。
技术介绍
区块链技术起源于比特币。区块链可被视为一种以去中心化方式进行操作的分布式数据库。区块链技术通过使用数据加密、时间戳、分布式共识和经济激励等手段,在分布式系统中的交易节点无需互相信任的情况下,实现基于去中心化的点对点交易、协调与协作,从而解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题。随着近年来比特币的发展和普及,区块链作为一种新形式的具有普适性的分布式底层架构,可以应用于金融、经济、科技甚至政治等各个领域。智能合约是存储在区块链上的脚本代码,它们可以被区块链上的交易所触发,触发后,这段代码可以从区块链读取数据或者向区块链写入数据。目前,智能合约得到越来越多的关注,已被众多研究人员引入到涉及区块链的应用中。这类应用通常被成为去中心化应用(DecentralizeApplication,DApp)。然而,DApp的测试是极为困难的。首先,DApp通常包含智能合约和调用智能合约的前端源码。如上文所述,智能合约存储在区块链上,而前端源码通常存储在客户端上,导致对DApp的测试涉及存储在不同位置代码,因而测试是困难的。再者,智能合约通常涉及众多的商业行为,当智能合约被存储到区块链上并且为区块链上的所有节点所接受时,难以对智能合约进行修改。在这一点上,智能合约中的极小的错误也可能造成难以估量的损失。此外,由于区块链是基于点对点(peertopeer)的分布式网络而构建的,因而每次交易必须经过分布式网络中的全体节点验证并达成共识之后才能被记录在区块链中。因此,对于涉及智能合约的应用,由于区块链需要全部节点达成共识之后才能确认交易的特点,该应用的测试是极为耗时的。尤其是在区块链出现支链而必须进行剪枝的情况下,涉及智能合约的应用的测试更是需要付出极大的时间成本。因此,需要一种能够高效地对涉及智能合约的应用进行测试的技术。
技术实现思路
在下文中将给出关于本公开的简要概述,以便提供关于本公开的某些方面的基本理解。应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图确定本公开的关键或重要部分,也不是意图限定本公开的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。针对现有技术中存在的问题,本公开提出了能够高效地对涉及智能合约的应用进行测试的技术。根据本公开的技术,对应用进行分析以找到最为重要的执行路径并据此生成测试用例并且使用所生成的测试用例对应用进行测试,从而极大地缩短了测试时间并且降低了测试成本。根据本公开的一个方面,提供了一种用于测试应用的方法,其包括:将应用分解为前台执行模块和后台逻辑模块,前台执行模块调用后台逻辑模块;确定后台逻辑模块中的函数的权重;将前台执行模块分解成代码块,代码块形成执行路径;基于所确定的后台逻辑模块中的函数的权重来确定执行路径的权重;基于所确定的执行路径的权重生成测试用例;以及使用所生成的测试用例对应用进行测试。根据本公开的另一方面,提供了一种用于测试应用的装置,其包括:第一分解单元,被配置成将应用分解为前台执行模块和后台逻辑模块,前台执行模块调用后台逻辑模块;第一确定单元,被配置成确定后台逻辑模块中的函数的权重;第二分解单元,被配置成将前台执行模块分解成代码块,代码块形成执行路径;第二确定单元,被配置成基于所确定的后台逻辑模块中的函数的权重来确定执行路径的权重;生成单元,被配置成基于所确定的执行路径的权重生成测试用例;以及测试单元,被配置成使用所生成的测试用例对应用进行测试。根据本公开的又一方面,还提供了能够实现上述方法的计算机程序。此外,还提供了具有至少计算机可读介质形式的计算机程序产品,其上记录有用于实现上述方法的计算机程序代码。附图说明参照下面结合附图对本公开实施方式的说明,会更加容易地理解本公开的以上和其它目的、特点和优点,在附图中:图1是示出本公开的实施方式的用于测试应用的方法的流程图;图2是示出本公开的实施方式的用于测试应用的方法的示意图;图3A示出了用于换电站的智能合约的源代码;图3B是示出根据用于换电站的智能合约的源代码构造的函数和变量的关系图;图4是示出根据本公开的实施方式的确定后台逻辑模块中的函数的权重的方法的流程图;图5是示出根据本公开的实施方式的将前台执行模块分解为代码块并且形成执行路径的示意图;图6是示出根据本公开的实施方式的用于测试应用的装置的框图;以及图7是示出可用来实现根据本公开的实施方式的用于测试应用的方法以及装置的通用机器的结构简图。具体实施方式在下文中将结合附图对本公开的示例性实施方式进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施方式的过程中可以做出很多特定于实施方式的决定,以便实现开发人员的具体目标,并且这些决定可能会随着实施方式的不同而有所改变。在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本公开,在附图中仅仅示出了与根据本公开的方案密切相关的部件,而省略了与本公开关系不大的其他细节。如上文在“
技术介绍
”章节中所提及的,区块链是基于点对点的分布式网络而构建的,因而智能合约涉及的每次交易必须经过分布式网络中的全体节点验证并达成共识之后才能被记录在区块链中。因此,涉及智能合约的DApp的测试需要等待较长的时间以被分布式网络中的全体节点验证并确认。如果对DApp的所有可能的测试用例逐一进行测试,则所带来的时间成本是无法想象也是不能接受的。因此,本专利技术人提出了一种新型且改进的测试应用的方法,该方法对应用的架构进行分析,根据分析结果找出最为常用(也可被认为最为重要)的执行路径,并且基于该执行路径生成测试用例以对应用进行测试。例如,应用通过存储在本地的代码(称为前台执行模块)调用诸如存储在区块链上的智能合约的、存储在远程位置的逻辑模块(称为后台逻辑模块)。根据本公开的技术,首先对后台逻辑模块的源代码进行分析以获得后台逻辑模块所包含的函数和变量之间的关系,从而确定后台逻辑模块中的函数的权重,该权重可被认为反映了函数的重要性。随后,对前台执行模块的伪代码进行分析以获得前台执行模块的每条执行路径,根据执行路径中调用的后台逻辑模块所包含的函数的权重确定每条执行路径的权重,该权重可被认为反映了执行路径的重要性。这样,开发人员或测试人员可以根据各个执行路径的权重选取适当的执行路径来生成测试用例,并且使用所生成的测试用例对应用进行测试。下面将结合附图来更详细地描述根据本公开的实施方式。图1是示出本公开的实施方式的用于测试应用的方法100的流程图。图2是示出本公开的实施方式的用于测试应用的方法100的示意图。根据本公开的实施方式,用于测试应用的方法100开始于步骤S101。在步骤102中,将应用分解为前台执行模块和后台逻辑模块,前台执行模块调用后台逻辑模块。随后,在步骤S103中,确定后台逻辑模块中的函数的权重。在步骤104中,将前台执行模块分解成代码块,代码块形成执行路径。在步骤S105中,基于所确定的后台逻辑模块中的函数的权重来确定执行路径的权重。在步骤S106中,基于所确定的执行路径的权重生本文档来自技高网
...

【技术保护点】
1.一种用于测试应用的方法,所述方法包括:将所述应用分解为前台执行模块和后台逻辑模块,所述前台执行模块调用所述后台逻辑模块;确定所述后台逻辑模块中的函数的权重;将所述前台执行模块分解成代码块,所述代码块形成执行路径;基于所确定的所述后台逻辑模块中的函数的权重来确定所述执行路径的权重;基于所确定的执行路径的权重生成测试用例;以及使用所生成的测试用例对所述应用进行测试。

【技术特征摘要】
1.一种用于测试应用的方法,所述方法包括:将所述应用分解为前台执行模块和后台逻辑模块,所述前台执行模块调用所述后台逻辑模块;确定所述后台逻辑模块中的函数的权重;将所述前台执行模块分解成代码块,所述代码块形成执行路径;基于所确定的所述后台逻辑模块中的函数的权重来确定所述执行路径的权重;基于所确定的执行路径的权重生成测试用例;以及使用所生成的测试用例对所述应用进行测试。2.根据权利要求1所述的方法,其中确定所述后台逻辑模块中的函数的权重包括:基于所述后台逻辑模块中的函数和变量之间的关系来计算函数的权重。3.根据权利要求2所述的方法,其中确定所述后台逻辑模块中的函数的权重包括:确定所述后台逻辑模块中的函数之间的调用关系和调用频次以及函数对变量的读写操作关系和读写频次;基于所述调用关系和调用频次以及读写操作关系和读写频次来确定函数和变量的初始权重;通过对函数和变量的初始权重进行迭代和归一化来确定函数的权重。4.根据权利要求3所述的方法,其中函数对变量的读写操作包括赋值操作、修改操作、删除操作和读取操作中的至少之一,其中赋值操作、修改操作、删除操作和读取操作分别具有不同的权重。5.根据权利要求1所述的方法,其中将所述前台执行模块分解成代码块包括:通过对所述前台执行模块的伪代码进行分析来...

【专利技术属性】
技术研发人员:华松皮冰锋孙俊
申请(专利权)人:富士通株式会社
类型:发明
国别省市:日本,JP

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1