CN106649110A - 软件测试方法及系统 - Google Patents

软件测试方法及系统 Download PDF

Info

Publication number
CN106649110A
CN106649110A CN201611161067.9A CN201611161067A CN106649110A CN 106649110 A CN106649110 A CN 106649110A CN 201611161067 A CN201611161067 A CN 201611161067A CN 106649110 A CN106649110 A CN 106649110A
Authority
CN
China
Prior art keywords
base unit
tested
code
test
source program
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.)
Granted
Application number
CN201611161067.9A
Other languages
English (en)
Other versions
CN106649110B (zh
Inventor
劳生
郭建兴
刘艳彬
宋潇豫
赵峰
乔咏
申利飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Standard Software Co Ltd
Original Assignee
China Standard Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Standard Software Co Ltd filed Critical China Standard Software Co Ltd
Priority to CN201611161067.9A priority Critical patent/CN106649110B/zh
Publication of CN106649110A publication Critical patent/CN106649110A/zh
Application granted granted Critical
Publication of CN106649110B publication Critical patent/CN106649110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种软件测试方法及系统,该方法包括获取多组基础单元测试代码;基于各组基础单元测试代码测试的一个或多个软件功能,为各组基础单元测试代码构建语法描述信息;当存在待测试的源程序时,获取待测试的源程序并分析出待测试的源程序的语法特征;将语法特征与各组基础单元测试代码对应的语法描述信息进行匹配,得到与语法特征一致的语法描述信息;利用匹配得到语法描述信息对应的基础单元测试代码对待测试的源程序进行测试,并得到测试结果。本发明实施例不仅可以提高已编写好的基础单元测试代码的使用率,还减少了测试人员重复编写、修改单元测试代码的步骤,进而提高了对待测试的源程序进行测试的效率。

Description

软件测试方法及系统
技术领域
本发明涉及软件测试技术领域,特别是涉及一种软件测试方法及系统。
背景技术
软件测试是保证软件质量的关键,通常情况下,软件测试的过程占整个软件工程生命周期40%以上。在软件持续集成的过程中,也在逐步满足客户的各种软件需求。软件单元测试在不断地细化,通过对软件中的最小可测试单元进行测试以检查和验证其是否满足客户的需求。软件的持续集成过程中需要不断地对软件进行修改,以验证软件开发的新功能是否满足客户需求。软件在不断地变化,且变化的总体趋势是越来越接近客户的需求,在软件逐步变化的过程中,若软件变化的因素较为简单,相应地软件单元测试代码地变更也会相对较少。
但是,目前对于新版本的软件测试,测试人员仍需重复编写、修改软件测试单元的测试代码,从而造成软件单元测试代码的编写效率效率较低,进而导致软件的测试效率不高,并使得测试人员进行大量的重复性工作。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的软件测试方法和相应的系统。
根据本发明的一方面,提供了一种软件测试方法,包括:
获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能;
基于所述各组基础单元测试代码测试的一个或多个软件功能,为所述各组基础单元测试代码构建语法描述信息;
当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征;
将所述语法特征与构建的所述语法描述信息进行匹配,得到与所述语法特征匹配的语法描述信息对应的基础单元测试代码;
利用匹配的语法描述信息对应的基础单元测试代码对所述待测试的源程序进行测试,得到测试结果。
可选地,所述获取多组基础单元测试代码包括:
从预先建立的基础单元测试库中获取多组基础单元测试代码。
可选地,通过以下步骤建立所述基础单元测试库:
获取软件相关文档,并从中分析出各软件功能以及各软件功能之间的关系;
分析并量化所述各软件功能的测试标准,并依据所述各软件功能的测试标准设计各个软件功能对应的单元测试代码,其中,所述测试标准指的是所述各个软件功能对其所在系统的系统资源的使用情况;
基于设计的各个软件功能对应的单元测试代码建立所述基础单元测试库。
可选地,所述基于设计的各个软件功能对应的单元测试代码建立所述基础单元测试库,包括:
对所述单元测试代码进行分类,并得到分类后的多组基础单元测试代码,其中,所述每类单元测试代码对应一组基础单元测试代码;
依据所述多组基础单元测试代码建立所述基础单元测试库。
可选地,对所述单元测试代码进行分类,包括:依据各软件功能的预设的测试标准对所述单元测试代码进行分类。
可选地,所述当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征,包括:
构建单元测试识别器,并利用所述单元测试识别器分析识别出所述待测试的源程序的语法特征。
可选地,所述待测试的源程序的语法特征包括以下至少之一:
待测试的源程序中的变量、函数、流程控制结构以及所述待测试的源程序所使用的系统资源。
可选地,所述构建单元测试识别器,包括:
对所述各组基础单元测试代码对应的语法描述信息进行组合,以生成语法描述文件;
依据所述语法描述文件构建状态机模型,并利用所述状态机模型构建出所述单元测试识别器。
可选地,在得到测试结果之后,所述方法还包括:
对所述测试结果进行分析,并依据分析结果判断所述待测试的源程序中是否存在未被测试的程序部分,若是,则生成提示信息并输出。
根据本发明的另一方面,还提供了一种软件测试系统,包括:
获取模块,适于获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能;
构建模块,适于基于所述各组基础单元测试代码测试的一个或多个软件功能,为所述各组基础单元测试代码构建语法描述信息;
分析模块,适于当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征;
匹配模块,适于将所述语法特征与构建的所述语法描述信息进行匹配,得到与所述语法特征匹配的语法描述信息对应的基础单元测试代码;
测试模块,适于利用匹配的语法描述信息对应的基础单元测试代码对所述待测试的源程序进行测试,得到测试结果。
可选地,所述获取模块还适于:
从预先建立的基础单元测试库中获取多组基础单元测试代码。
可选地,所述装置还包括建立模块,适于通过以下步骤建立所述基础单元测试库:
获取软件相关文档,并从中分析出各软件功能以及各软件功能之间的关系;
分析并量化所述各软件功能的测试标准,并依据所述各软件功能的测试标准设计各个软件功能对应的单元测试代码,其中,所述测试标准指的是所述各个软件功能对其所在系统的系统资源的使用情况;
基于设计的各个软件功能对应的单元测试代码建立所述基础单元测试库。
可选地,所述建立模块还适于:
对所述单元测试代码进行分类,并得到分类后的多组基础单元测试代码,其中,所述每类单元测试代码对应一组基础单元测试代码;
依据所述多组基础单元测试代码建立所述基础单元测试库。
可选地,所述建立模块还适于:
依据各软件功能的预设的测试标准对所述单元测试代码进行分类。
可选地,所述分析模块还适于:
构建单元测试识别器,并利用所述单元测试识别器分析识别出所述待测试的源程序的语法特征。
可选地,所述待测试的源程序的语法特征包括以下至少之一:
待测试的源程序中的变量、函数、流程控制结构以及所述待测试的源程序所使用的系统资源。
可选地,所述分析模块还适于:
对所述各组基础单元测试代码对应的语法描述信息进行组合,以生成语法描述文件;
依据所述语法描述文件构建状态机模型,并利用所述状态机模型构建出所述单元测试识别器。
可选地,所述装置还包括判断模块,适于:在所述测试模块中测试得到测试结果之后,对所述测试结果进行分析,并依据分析结果判断所述待测试的源程序中是否存在未被测试的程序部分,若是,则生成提示信息并输出。
在本发明实施例中,首先获取多组基础单元测试代码,然后基于各组基础单元测试代码测试的一个或多个软件功能,为各组基础单元测试代码构建语法描述信息。当存在待测试的源程序时,获取待测试的源程序并分析出待测试的源程序的语法特征,并将语法特征与各组基础单元测试代码对应的语法描述信息进行匹配,从而匹配得到与语法特征一致的语法描述信息,进而利用匹配得到的语法描述信息对应的基础单元测试代码对待测试的源程序进行测试,以得到测试结果。由此,在本发明实施例中,当存在待测试的源程序时,若待测试的源程序中存在与基础单元测试代码的语法描述信息相匹配的语法特征,则可以无需测试人员重新编写测试程序,只需根据匹配结果,从已经准备好的多组基础单元测试代码中调取相应的基础单元测试代码,从而可以利用该调用的基础单元测试代码对待测试的源程序进行测试,进而不仅提高了已编写好的基础单元测试代码的使用率,还减少了测试人员重复编写、修改单元测试代码的步骤。
进一步地,由于可以通过匹配并直接利用已有的基础单元测试代码对待测试的源程序进行测试,从而减少了测试人员编写测试代码的步骤,并提高了对待测试的源程序进行测试的效率,进而有助于提高软件的开发效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的软件测试方法流程示意图;
图2示出了根据本发明一个实施例的网络测试具体用例示意图;
图3示出了根据本发明一个实施例的单元测试识别器对待测试的源程序的识别过程示意图;
图4示出了根据本发明一个实施例的建立基础单元测试库的方法的流程示意图;
图5示出了根据本发明一个实施例的语法描述文件的示意图;
图6示出了根据本发明一个实施例的利用图5所示的语法描述文件对待测试的程序进行识别后的识别结果的示意图;
图7示出了根据本发明一个实施例的软件测试装置的结构示意图;以及
图8示出了根据本发明另一个实施例的软件测试装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种软件测试方法。该方法可以应用于多种软件,如聊天软件(QQ、微信等)、办公软件(office软件等)、以及娱乐购物软件(爱奇艺、天猫等)等等,图1示出了根据本发明一个实施例的软件测试方法的流程示意图。参见图1,该方法至少包括步骤S102至步骤S110。
步骤S102,获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能。
在该实施例中,测试软件功能可以包括对软件的网络功能测试,如图2所示的网络测试具体用例可以包括测试网络地址和端口、网络传输使用的协议栈、网络传输过程中的报文大小、单位时间内网络吞吐量、已经网络故障时的错误、异常处理等。本发明实施例对测试的软件功能不做具体限定。
步骤S104,基于各组基础单元测试代码测试的一个或多个软件功能,为各组基础单元测试代码构建语法描述信息。
在该实施例中,语法描述信息用于标识、描述软件功能的特征,例如,采用“bind”代表软件功能为网络地址和端口。其中,语法描述信息还可以依据语法树结构对软件的功能进行描述,从而使得语法描述信息对软件功能的描述更加清楚、直观。此处提及的语法树是句子结构的图形表示,它代表了句子的推导结果,有利于理解句子语法结构的层次。简单说,语法树就是按照某一规则进行推导时所形成的树。
步骤S106,当存在待测试的源程序时,获取待测试的源程序并分析出待测试的源程序的语法特征。
在该实施例中,待测试的源程序的语法特征可以包括待测试的源程序中的变量、函数、流程控制结构以及待测试的源程序所使用的系统资源等。其中,系统资源可以包括,CPU资源、内存资源、磁盘资源、网络设备资源、以及外围设备资源等。
步骤S108,将语法特征与构建的语法描述信息进行匹配,得到与语法特征匹配的语法描述信息对应的基础单元测试代码。
在该实施例中,通过将待测试的源程序的语法特征与各组基础单元测试代码对应的语法描述信息进行匹配,可以得到与待测试的源程序的语法特征相匹配的语法描述信息。
步骤S110,利用匹配的语法描述信息对应的基础单元测试代码对待测试的源程序进行测试,得到测试结果。
当匹配得出与待测试的源程序的语法特征相匹配的语法描述信息时,可以从获取的多组基础单元测试代码中查找出与语法描述信息相对应的基础单元测试代码,从而利用查找到的基础单元测试代码对待测试的源程序进行测试。
参见上文步骤S102,在本发明一实施例中,当需要获取多组基础单元测试代码时,可以从预先建立的基础单元测试库中获取多组基础单元测试代码,该预先建立的基础单元测试库中预先保存了多组基础单元测试代码。
参见上文步骤S106,在本发明一实施例中,还可以通过构建单元测试识别器,以利用单元测试识别器分析并识别出待测试的源程序的语法特征。其中,该实施例中的单元测试识别器可以由程序来实现。具体的,对单元测试识别器的构建过程可以是,对各组基础单元测试代码对应的语法描述信息进行组合,以生成语法描述文件,进而依据语法描述文件构建状态机模型,并利用状态机模型构建出单元测试识别器。例如,可以使用Bison(语法分析器生成器)将语法描述文件翻译成对应的状态机模型,进而对该状态机模型进行编译,以构建出单元测试识别器。参见图3,是单元测试识别器对待测的源程序的识别过程示意图,由语法描述文件构建单元测试识别器,单元测试识别器对待测试的源程序进行分析识别,以得到识别结果,识别结果可以是识别得到待测的源程序中的变量、函数、流程控制结构等语法特征。
参见上文步骤S110,在本发明一实施例中,在利用匹配得到语法描述信息对应的基础单元测试代码对待测试的源程序进行测试之前,还可以先建立虚拟化测试环境,从而在建立的虚拟化测试环境中,利用匹配得到语法描述信息对应的基础单元测试代码对待测试的源程序进行测试。该实施例中的虚拟化测试环境可以是基于Linux系统的Mock虚拟化环境,在Mock虚拟化环境中运行待测试的源程序和基础单元测试代码,以实现对待测试的源程序的测试。
在本发明一实施例中,在上文步骤S110中得到测试结果之后,为了确保待测试的源程序能够被完全测试,还可以对测试结果进行分析,并依据分析结果判断待测程序中是否存在未被测试的程序部分,其中,对测试结果的分析可以依据待测试的源程序的符号表信息。在计算机领域中,符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如数据类型、作用域以及内存地址等。
对测试结果的具体分析过程可以是,首先,获取待测试的源程序对应的符号表信息和待测试的源程序中已被测试的程序部分对应的符号表信息,然后,比对待测试的源程序对应的符号表信息和待测试的源程序中已被测试的程序部分对应的符号表信息,若比对不一致,则表明待测试的源程序中存在未被测试的程序部分。若存在未被测试的程序部分,则分析出未被测试的程序部分,从而生成相应的提示信息并输出。该实施例中,提示消息可以以通知报告、声音、文字等形式输出,以对测试人员或者测试系统发出提醒。从而,可以依据提醒消息进一步地对基础单元测试库进行不断的完善。另外,若比对一致,则表明已经完成对待测试的源程序的测试。
参见图4,在本发明一实施例中,还提供了一种建立基础单元测试库的方法,具体的实现步骤如下:
步骤S402,获取软件相关文档,并从中分析出各软件功能以及各软件功能之间的关系。
在该实施例中,软件相关文档可以包括软件需求文档、软件概要设计文档以及软件详细设计文档等。在分析各软件功能以及各软件功能之间的关系时,首先,可以分析软件需求文档中描述软件最终要实现的目标以及预期结果,并进一步依据实现目标以及预期结果分析各个软件功能之间的目标以及预期结果是否存在:冲突、冗余、缺少等关系。然后,可以分析软件概要设计文档,从中分析出各个软件功能以及各软件功能之间的层次关系,并构建出相应的软件功能层次结构图。
步骤S404,分析并量化各软件功能的测试标准,并依据各软件功能的测试标准设计各个软件功能对应的单元测试代码,其中,测试标准指的是各个软件功能对其所在系统的系统资源的使用情况。
在该实施例中,可以依据上文步骤S402中获取的软件详细设计文档对分析出的每个软件功能进行测试标准的量化,进而依据测试标准设计出用于测试各个软件功能的测试用例和具体的单元测试代码。其中,测试用例是测试人员进行测试操作的依据,它定义了测试的前提、测试环境、测试步骤、测试预期结果等要素,测试人员主要根据它来进行测试。
在该实施例中,系统资源可以包括,CPU资源、内存资源、磁盘资源、网络设备资源、以及外围设备资源等,通过对这些资源的利用情况设定合理的范围,可以评估测试结果的合理性,从而对测试的结果进行分析提供依据。
步骤S406,基于设计的各个软件功能对应的单元测试代码建立基础单元测试库。
在该步骤中,在基于设计的各个软件功能对应的单元测试代码建立基础单元测试库的时候,可以先对单元测试代码进行分类,从而有分类、有层次、有组织地构建出多组基础单元测试代码。然后依据多组基础单元测试代码建立基础单元测试库。在该实施例中,每类单元测试代码对应一组基础单元测试代码。其中,对单元测试代码进行分类时,可以依据各软件功能的预设的测试标准对单元测试代码进行分类。
参见上文步骤S406,在本发明一实施例中,当软件产生新的功能或者现有的功能有所更新时,采用上文步骤S402至步骤S404设计出新的单元测试代码,进而对新的单元测试代码分类后得到新的基础单元测试代码之后,还可以将新产生的基础单元测试代码保存在基础单元测试库中,以备后续调取使用。
为了更加清楚地体现本发明实施例的方案,现以一个具体场景下的实施例对本发明进行介绍。在该实施例中,以对软件的网络地址和端口测试的程序为待测试的源程序为例进行说明,其中,语法描述信息中包含“bind”,且代表软件功能为网络地址和端口。
当依据上文实例的方法构建基础单元测试库,以及构建完成如图5中所示语法描述文件之后,继而依据语法描述文件构建状态机模型,并利用状态机模型构建出单元测试识别器,当构建出单元测试识别器之后,利用单元测试识别器对待测试的源程序进行识别以得到识别结果,利用图5所示的语法描述文件对待测试的源程序进行识别后,得到的识别结果是如图6所示语法树中展示出来的内容,从中整合出最终的语法特征为如下函数调用语句:return_val=bind(server_sockfd,server_sockaddr,sizeof_server_sockaddr);通过分析发现,在该函数调用语句中包含有“bind”,由于在语法描述信息中“bind”代表软件功能为网络地址和端口,因此,根据该识别的“bind”函数,从基础单元测试库中调用与语法描述信息为“bind”函数相对应的基础单元测试代码,进而依据该基础单元测试代码对待测试的源程序进行测试,以得到测试结果。
基于同一发明构思,本发明实施例还提供了一种软件测试系统,图7示出了根据本发明一实施例的软件测试系统的结构示意图。参见图7,软件测试系统700至少可以包括获取模块710、构建模块720、分析模块730、匹配模块740以及测试模块750。
现介绍本发明实施例的软件测试系统700的各组成或器件的功能以及各部分间的连接关系:
获取模块710,适于获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能;
构建模块720,与获取模块710相耦合,适于基于各组基础单元测试代码测试的一个或多个软件功能,为各组基础单元测试代码构建语法描述信息;
分析模块730,与构建模块720相耦合,适于当存在待测试的源程序时,获取待测试的源程序并分析出待测试的源程序的语法特征;
匹配模块740,与分析模块730相耦合,适于将语法特征与构建的语法描述信息进行匹配,得到与语法特征匹配的语法描述信息对应的基础单元测试代码;
测试模块750,与匹配模块740相耦合,适于利用匹配的语法描述信息对应的基础单元测试代码对待测试的源程序进行测试,得到测试结果。
在本发明一实施例中,获取模块710还适于,从预先建立的基础单元测试库中获取多组基础单元测试代码。
本发明实施例还提供了一种软件测试系统,图8示出了根据本发明另一实施例的软件测试系统的结构示意图。参见图8,软件测试系统除800了包括上文实施例中的软件测试系统700中提及的各个模块之外,还可以包括建立模块810和判断模块820。
建立模块810,与获取模块710相耦合,适于通过以下步骤建立基础单元测试库:首先,获取软件相关文档,并从中分析出各软件功能以及各软件功能之间的关系。然后,分析并量化各软件功能的测试标准,并依据各软件功能的测试标准设计各个软件功能对应的单元测试代码,其中,测试标准指的是各个软件功能对其所在系统的系统资源的使用情况。最后,基于设计的各个软件功能对应的单元测试代码建立基础单元测试库。
判断模块820,与测试模块750相耦合,适于在测试模块中测试得到测试结果之后,对测试结果进行分析,并依据分析结果判断待测试的源程序中是否存在未被测试的程序部分,若是,则生成提示信息并输出。
在本发明一实施例中,建立模块810还适于,对单元测试代码进行分类,并得到分类后的多组基础单元测试代码,其中,每类单元测试代码对应一组基础单元测试代码,并依据多组基础单元测试代码建立基础单元测试库。
在本发明一实施例中,建立模块810还适于,依据各软件功能的预设的测试标准对单元测试代码进行分类。
在本发明一实施例中,分析模块730还适于,构建单元测试识别器,并利用单元测试识别器分析识别出待测试的源程序的语法特征。
在本发明一实施例中,待测试的源程序的语法特征包括以下至少之一,待测试的源程序中的变量、函数、流程控制结构以及待测试的源程序所使用的系统资源。
在本发明一实施例中,分析模块730还适于,首先对各组基础单元测试代码对应的语法描述信息进行组合,以生成语法描述文件,然后,依据语法描述文件构建状态机模型,并利用状态机模型构建出单元测试识别器。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
在本发明实施例中,首先获取多组基础单元测试代码,然后基于各组基础单元测试代码测试的一个或多个软件功能,为各组基础单元测试代码构建语法描述信息。当存在待测试的源程序时,获取待测试的源程序并分析出待测试的源程序的语法特征,并将语法特征与各组基础单元测试代码对应的语法描述信息进行匹配,从而匹配得到与语法特征一致的语法描述信息,进而利用匹配得到的语法描述信息对应的基础单元测试代码对待测试的源程序进行测试,以得到测试结果。由此,在本发明实施例中,当存在待测试的源程序时,若待测试的源程序中存在与基础单元测试代码的语法描述信息相匹配的语法特征,则可以无需测试人员重新编写测试程序,只需根据匹配结果,从已经准备好的多组基础单元测试代码中调取相应的基础单元测试代码,从而可以利用该调用的基础单元测试代码对待测试的源程序进行测试,进而不仅提高了已编写好的基础单元测试代码的使用率,还减少了测试人员重复编写、修改单元测试代码的步骤。
进一步地,由于可以通过匹配并直接利用已有的基础单元测试代码对待测试的源程序进行测试,从而减少了测试人员编写测试代码的步骤,并提高了对待测试的源程序进行测试的效率,进而有助于提高软件的开发效率。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的软件测试系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

Claims (10)

1.一种软件测试方法,包括:
获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能;
基于所述各组基础单元测试代码测试的一个或多个软件功能,为所述各组基础单元测试代码构建语法描述信息;
当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征;
将所述语法特征与构建的所述语法描述信息进行匹配,得到与所述语法特征匹配的语法描述信息对应的基础单元测试代码;
利用匹配的语法描述信息对应的基础单元测试代码对所述待测试的源程序进行测试,得到测试结果。
2.根据权利要求1所述的方法,其中,所述获取多组基础单元测试代码包括:
从预先建立的基础单元测试库中获取多组基础单元测试代码。
3.根据权利要求2所述的方法,其中,通过以下步骤建立所述基础单元测试库:
获取软件相关文档,并从中分析出各软件功能以及各软件功能之间的关系;
分析并量化所述各软件功能的测试标准,并依据所述各软件功能的测试标准设计各个软件功能对应的单元测试代码,其中,所述测试标准指的是所述各个软件功能对其所在系统的系统资源的使用情况;
基于设计的各个软件功能对应的单元测试代码建立所述基础单元测试库。
4.根据权利要求3所述的方法,其中,所述基于设计的各个软件功能对应的单元测试代码建立所述基础单元测试库,包括:
对所述单元测试代码进行分类,并得到分类后的多组基础单元测试代码,其中,所述每类单元测试代码对应一组基础单元测试代码;
依据所述多组基础单元测试代码建立所述基础单元测试库。
5.根据权利要求4所述的方法,其中,对所述单元测试代码进行分类,包括:依据各软件功能的预设的测试标准对所述单元测试代码进行分类。
6.根据权利要求1所述的方法,其中,所述当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征,包括:
构建单元测试识别器,并利用所述单元测试识别器分析识别出所述待测试的源程序的语法特征。
7.根据权利要求6所述的方法,其中,所述待测试的源程序的语法特征包括以下至少之一:
待测试的源程序中的变量、函数、流程控制结构以及所述待测试的源程序所使用的系统资源。
8.根据权利要求6所述的方法,其中,所述构建单元测试识别器,包括:
对所述各组基础单元测试代码对应的语法描述信息进行组合,以生成语法描述文件;
依据所述语法描述文件构建状态机模型,并利用所述状态机模型构建出所述单元测试识别器。
9.根据权利要求1所述的方法,其中,在得到测试结果之后,所述方法还包括:
对所述测试结果进行分析,并依据分析结果判断所述待测试的源程序中是否存在未被测试的程序部分,若是,则生成提示信息并输出。
10.一种软件测试系统,包括:
获取模块,适于获取多组基础单元测试代码,其中,各组基础单元测试代码用于测试一个或多个软件功能;
构建模块,适于基于所述各组基础单元测试代码测试的一个或多个软件功能,为所述各组基础单元测试代码构建语法描述信息;
分析模块,适于当存在待测试的源程序时,获取所述待测试的源程序并分析出所述待测试的源程序的语法特征;
匹配模块,适于将所述语法特征与构建的所述语法描述信息进行匹配,得到与所述语法特征匹配的语法描述信息对应的基础单元测试代码;
测试模块,适于利用匹配的语法描述信息对应的基础单元测试代码对所述待测试的源程序进行测试,得到测试结果。
CN201611161067.9A 2016-12-15 2016-12-15 软件测试方法及系统 Active CN106649110B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611161067.9A CN106649110B (zh) 2016-12-15 2016-12-15 软件测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611161067.9A CN106649110B (zh) 2016-12-15 2016-12-15 软件测试方法及系统

Publications (2)

Publication Number Publication Date
CN106649110A true CN106649110A (zh) 2017-05-10
CN106649110B CN106649110B (zh) 2023-09-15

Family

ID=58822826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611161067.9A Active CN106649110B (zh) 2016-12-15 2016-12-15 软件测试方法及系统

Country Status (1)

Country Link
CN (1) CN106649110B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284222A (zh) * 2017-07-20 2019-01-29 阿里巴巴集团控股有限公司 软件单元、数据处理系统中的项目测试方法、装置及设备
WO2019071891A1 (zh) * 2017-10-10 2019-04-18 平安科技(深圳)有限公司 代码覆盖率分析方法及应用服务器
CN109753427A (zh) * 2018-12-04 2019-05-14 国网山东省电力公司无棣县供电公司 一种发供电测试单元辨析系统
CN112597046A (zh) * 2020-12-29 2021-04-02 上海商汤智能科技有限公司 测试方法、装置、计算机设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983209A (zh) * 2005-12-14 2007-06-20 中兴通讯股份有限公司 一种软件单元测试自动化系统及其方法
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
JP2009245066A (ja) * 2008-03-31 2009-10-22 Nomura Research Institute Ltd ソフトウェアマイグレーションシステム及び方法
US20110258601A1 (en) * 2010-04-20 2011-10-20 Guy Collins Ndem Method and apparatus for the performing unit testing of software modules in software systems
CN102236602A (zh) * 2011-07-21 2011-11-09 南京大学 一种可视化软件测试设计平台
CN103336739A (zh) * 2013-06-09 2013-10-02 中国联合网络通信集团有限公司 软件测试方法及平台
CN104407973A (zh) * 2014-11-25 2015-03-11 珠海格力电器股份有限公司 一种自动化单元测试的实现方法及装置
CN104932980A (zh) * 2015-06-30 2015-09-23 北京奇虎科技有限公司 软件自动测试方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983209A (zh) * 2005-12-14 2007-06-20 中兴通讯股份有限公司 一种软件单元测试自动化系统及其方法
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
JP2009245066A (ja) * 2008-03-31 2009-10-22 Nomura Research Institute Ltd ソフトウェアマイグレーションシステム及び方法
US20110258601A1 (en) * 2010-04-20 2011-10-20 Guy Collins Ndem Method and apparatus for the performing unit testing of software modules in software systems
CN102236602A (zh) * 2011-07-21 2011-11-09 南京大学 一种可视化软件测试设计平台
CN103336739A (zh) * 2013-06-09 2013-10-02 中国联合网络通信集团有限公司 软件测试方法及平台
CN104407973A (zh) * 2014-11-25 2015-03-11 珠海格力电器股份有限公司 一种自动化单元测试的实现方法及装置
CN104932980A (zh) * 2015-06-30 2015-09-23 北京奇虎科技有限公司 软件自动测试方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
何炎祥;陈勇;吴伟;徐超;吴黎兵;: "基于编译支持错误跟踪的测试用例自动化生成方法", 计算机研究与发展, no. 09 *
潘昊等: "网络面向对象的软件测试技术的研究", 《微机发展》 *
潘昊等: "网络面向对象的软件测试技术的研究", 《微机发展》, no. 05, 10 May 2004 (2004-05-10) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284222A (zh) * 2017-07-20 2019-01-29 阿里巴巴集团控股有限公司 软件单元、数据处理系统中的项目测试方法、装置及设备
WO2019071891A1 (zh) * 2017-10-10 2019-04-18 平安科技(深圳)有限公司 代码覆盖率分析方法及应用服务器
CN109753427A (zh) * 2018-12-04 2019-05-14 国网山东省电力公司无棣县供电公司 一种发供电测试单元辨析系统
CN109753427B (zh) * 2018-12-04 2023-05-23 国网山东省电力公司无棣县供电公司 一种发供电测试单元辨析系统
CN112597046A (zh) * 2020-12-29 2021-04-02 上海商汤智能科技有限公司 测试方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN106649110B (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
Beyer et al. A manual categorization of android app development issues on stack overflow
CN106649110A (zh) 软件测试方法及系统
CN102855178B (zh) 一种单元测试中生成Mock库的方法和装置
Sneed et al. Wsdltest-a tool for testing web services
CN109462575B (zh) 一种webshell检测方法及装置
CN105677574B (zh) 基于函数控制流的安卓应用漏洞检测方法和系统
CN107026773B (zh) 用于接口自动化测试的自动关联方法
CN101867501A (zh) Snmp接口信息模型一致性自动化测试方法及系统
CN107092554A (zh) 一种应用程序的故障代码确认方法及装置
CN107341399A (zh) 评估代码文件安全性的方法及装置
CN107861981A (zh) 一种数据处理方法及装置
US20200226232A1 (en) Method of selecting software files
CN104834507A (zh) 一种应用构建平台的框架驱动方法
CN102402479A (zh) 用于静态分析的中间表示结构
CN108255837A (zh) 一种sql解析器及方法
CN106201889A (zh) 一种检查程序代码编写规范的系统及其实现方法
CN103823665B (zh) 一种sdk活跃度分析方法、网络服务器及系统
CN104133768A (zh) 一种程序代码复查方法和装置
CN111176660A (zh) 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质
CN108897678B (zh) 静态代码检测方法和静态代码检测系统、存储设备
CN104933096B (zh) 数据库的异常键识别方法、装置与数据系统
CN109816038A (zh) 一种物联网固件程序分类方法及其装置
CN105893052A (zh) 一种war包分析器
CN109388575A (zh) 静态分析辅助方法
CN106649121B (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