CN109542761B - 软件质量评估方法、装置及存储介质 - Google Patents
软件质量评估方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109542761B CN109542761B CN201811184229.XA CN201811184229A CN109542761B CN 109542761 B CN109542761 B CN 109542761B CN 201811184229 A CN201811184229 A CN 201811184229A CN 109542761 B CN109542761 B CN 109542761B
- Authority
- CN
- China
- Prior art keywords
- code
- software
- test case
- coverage rate
- codes
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
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)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及大数据技术,揭露了一种软件质量评估方法、电子装置及存储介质,该方法接收待评估的软件代码及其版本号,根据软件代码,利用预设的选取规则从测试用例库中选取基础测试用例进行测试得到第一代码覆盖率,并计算预期值。接着,该方法根据软件代码的需求,创建系统测试用例,利用系统测试用例进行测试得到差异化代码覆盖率及需求覆盖率,并利用测试用例库中所有的测试用例进行测试得到第二代码覆盖率。最后,该方法根据差异化代码覆盖率、需求覆盖率及第二代码覆盖率计算得到实时值,利用预设的比较算法对实时值及预期值进行比较生成比较值评估软件代码的质量。利用本发明,能够综合评估软件产品的质量,提高评估的准确性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种软件质量评估方法、装置及计算机可读存储介质。
背景技术
在软件生命周期(Software Life Cycle,SLC)中的任何一个阶段,只要代码发生了改变,就可能给该软件带来新的问题。代码改变产生的问题一方面可能是源于对发现的旧问题做出的修改。例如,当代码中的旧问题被发现时,如果旧问题跟踪与管理系统不够完善,就可能会遗漏该代码中与该旧问题相关的某部位的修改,或者开发人员对旧问题理解的不够透彻,也可能导致所做的修改不够彻底修正错误。另一方面也有可能是因为加入了新的模块。例如,在新代码加入软件的时候,除了新代码中可能含有错误外,新代码还有可能对软件中的原有代码带来影响。因此,每当代码发生改变时,我们就必须对改变后的代码进行测试评估,以发现并解决代码中存在的问题,提高软件产品的质量。
目前,现有的软件产品质量评估方法分别采用需求覆盖率及代码覆盖率对软件进行测试评估,测试评估方法较为单一,不能够综合评价软件产品的质量,质量评估较为片面。
发明内容
鉴于以上内容,本发明提供一种软件质量评估方法、装置及计算机可读存储介质,其主要目的在于提高软件代码质量评估的准确性及有效性。
为实现上述目的,本发明提供一种软件质量评估方法,该方法包括:
接收步骤:接收待评估的软件代码及所述软件代码对应的版本号;
选取步骤:根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例;
第一计算步骤:利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值;
创建步骤:根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例;
第一测试步骤:根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率;
第二测试步骤:根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率;
第三测试步骤:利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率;
第二计算步骤:根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值;
评估步骤:利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。
优选地,所述预设的选取规则包括:
根据所述软件代码,分析该软件代码所实现的功能;及
根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例。
优选地,所述第一计算步骤包括:
利用所述基础测试用例对所述软件代码进行测试,对基础测试用例测试过的软件代码进行标注得到已测代码;
将已测代码与软件代码进行对比得到第一代码覆盖率。
优选地,所述创建步骤包括:
根据所述需求的可测性,将所述需求拆分成多个子需求;
针对每个子需求创建一个测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例。
优选地,所述第一测试步骤包括:
根据所述软件对应的版本号,确定该软件最近的历史版本号所对应的历史软件代码;
将软件代码与历史软件代码进行对比得到差异化代码;
利用所述系统测试用例对所述差异化代码进行测试,对系统测试用例测试过的差异化代码进行标注得到已测差异化代码;
将已测差异化代码与差异化代码进行对比得到差异化代码覆盖率。
优选地,该方法还包括:若所述比较值大于1,则判断软件质量合格,返回合格提示信息,若所述比较值小于1,则判断软件质量不合格,返回不合格提示信息,接收修改后的软件代码或测试用例后,流程重新返回至第一测试步骤直至软件质量合格。
此外,本发明还提供一种电子装置,该电子装置包括:存储器、处理器及显示器,所述存储器上存储软件质量评估程序,所述软件质量评估程序被所述处理器执行,可实现如下步骤:
接收步骤:接收待评估的软件代码及所述软件代码对应的版本号;
选取步骤:根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例;
第一计算步骤:利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值;
创建步骤:根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例;
第一测试步骤:根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率;
第二测试步骤:根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率;
第三测试步骤:利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率;
第二计算步骤:根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值;
评估步骤:利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。
优选地,所述预设的选取规则包括:
根据所述软件代码,分析该软件代码所实现的功能;及
根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例。
优选地,所述创建步骤包括:
根据所述需求的可测性,将所述需求拆分成多个子需求;
针对每个子需求创建一个测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括软件质量评估程序,所述软件质量评估程序被处理器执行时,可实现如上所述软件质量评估方法中的任意步骤。
本发明提出的软件质量评估方法、装置及计算机可读存储介质,通过利用基础测试用例计算出预期值,接着,创建系统测试用例并根据系统测试用例测试得到差异化代码覆盖率、需求覆盖率,以及利用成测试用例库中所有的测试用例测试得到第二代码覆盖率,最后,根据差异化代码覆盖率、需求覆盖率及第二代码覆盖率计算得到实时值,将实时值与预期值进行对比,从而能够准确、有效地评估软件产品的质量。
附图说明
图1为本发明软件质量评估方法的应用环境示意图;
图2为本发明电子装置较佳实施例的示意图;
图3为图2中软件质量评估程序较佳实施例的模块示意图;
图4为本发明软件质量评估方法较佳实施例的流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明软件质量评估方法的应用环境示意图。
本发明旨在提供一种软件质量评估系统,该系统主要包括电子装置1、客户端2及测试用例库3。在电子装置1端分别部署代码覆盖率测试工具及需求覆盖率测试工具的服务端。在客户端2端分别部署代码覆盖率测试工具及需求覆盖率测试工具的客户端。具体地,所述代码覆盖率测试工具可以是指Jacoco代码覆盖率工具,所述代码覆盖率测试工具的客户端用于记录用户在系统的实际运行环境下执行关于某软件产品的代码覆盖率测试的某操作行为,如创建新的测试用例。所述代码覆盖率测试工具的服务端用于接收所述代码覆盖率测试工具的客户端记录的某操作行为,并根据接收到的操作行为在系统的测试环境下执行测试用例的测试得到系统代码的覆盖情况及系统差异化代码的覆盖情况。所述需求覆盖率测试工具可以是指testlink或QC需求覆盖率工具。所述需求盖率测试工具的客户端用于记录用户在系统的实际运行环境下执行关于某软件产品的需求覆盖率测试的某操作行为。所述需求覆盖率测试工具的服务端用于接收所述需求覆盖率测试工具的客户端记录的某操作行为,并根据接收到的操作行为在系统的测试环境下执行测试用例的测试得到系统需求的覆盖情况。电子装置1根据得到的代码的覆盖情况、差异化代码的覆盖情况及需求的覆盖情况综合评估软件产品的质量。所述测试用例库用于存储代码覆盖率及需求覆盖率测试时使用的测试用例。
如图2所示,是本发明电子装置1较佳实施例的示意图。
在本实施例中,电子装置1是指服务端系统,该电子装置1可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,该电子装置1可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
该电子装置1包括但不限于:存储器11、处理器12、显示器13及网络接口14。所述电子装置1通过网络接口14连接网络,获取原始数据。其中,所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobilecommunication,GSM)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi、通话网络等无线或有线网络。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储设备,例如该电子装置1配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述电子装置1的操作系统和各类应用软件,例如软件质量评估程序10的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。例如,存储用于测试的测试用例。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子装置1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行软件质量评估程序10的程序代码等。
所述显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-EmittingDiode,OLED)触摸器等。显示器13用于显示在电子装置1中处理的信息以及用于显示可视化的工作界面,例如以不同颜色显示测试用例已测试的软件代码及未测试的软件代码。
网络接口14可选地可以包括标准的有线接口、无线接口(如WI-FI接口),该网络接口14通常用于在所述电子装置1与其他电子设备之间建立通信连接。
图2仅示出了具有组件11-14以及软件质量评估程序10的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,该电子装置1还可以包括用户接口,用户接口可以包括输入单元比如键盘(Keyboard)、语音输出装置比如音响、耳机等,可选地用户接口还可以包括标准的有线接口、无线接口。
可选地,该电子装置1还包括触摸传感器。所述触摸传感器所提供的供用户进行触摸操作的区域称为触控区域。此外,这里所述的触摸传感器可以为电阻式触摸传感器、电容式触摸传感器等。而且,所述触摸传感器不仅包括接触式的触摸传感器,也可包括接近式的触摸传感器等。此外,所述触摸传感器可以为单个传感器,也可以为例如阵列布置的多个传感器。用户可以通过触摸所述触控区域启动软件质量评估程序10。
此外,该电子装置1的显示器13的面积可以与所述触摸传感器的面积相同,也可以不同。可选地,将显示器13与所述触摸传感器层叠设置,以形成触摸显示屏。该电子装置1基于触摸显示屏侦测用户触发的触控操作。
该电子装置1还可以包括射频(Radio Frequency,RF)电路、传感器和音频电路等等,在此不再赘述。
如图3所示,是图2中软件质量评估程序10较佳实施例的模块示意图。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
在本实施例中,软件质量评估程序10包括:接收模块110、选取模块120、第一计算模块130、创建模块140、第一测试模块150、第二测试模块160、第三测试模块170、第二计算模块180及评估模块190,所述模块110-190所实现的功能或操作步骤如下:
接收模块110,用于接收待评估的软件代码及所述软件代码对应的版本号。所述版本号是指软件产品版本的标识,如SVN版本号(Subversion)。所述软件代码可以是指JAVA开源代码,也可以是指其他语言的开源代码。
选取模块120,用于根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例。所述预设的选取规则包括:根据所述软件代码,分析该软件代码所实现的功能,接着,根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例。可以理解的是,被测试的软件产品所实现的功能或操作流程均由软件代码实现,因此,根据软件代码可以推导出该软件产品所实现的功能,根据软件产品所实现的功能筛选出该软件的基本功能。所述基本功能是指软件产品实现目的操作所必须的功能。并进一步地根据软件产品的基本功能从测试用例库中选取对应的测试用例作为基础测试用例。
第一计算模块130,用于利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值。具体地,利用基础测试用例对所述软件代码进行测试,对基础测试用例测试过的软件代码进行标注得到已测代码,并将已测代码与软件代码进行对比得到第一代码覆盖率。其中,所述代码覆盖率包括行覆盖率、类覆盖率、分支覆盖率、方法覆盖率、语句覆盖率及语句块覆盖率等,优选地,使用行覆盖率。所述标注是指在测试用例测试软件代码的过程中,若某行代码的所有指令被执行,则该行代码被自动标为绿色背景,若某行代码的部分指令被执行,则该行代码被自动标为黄色背景,若某行代码的所有指令均无执行,则该行代码被自动标为红色背景。但应理解的是,所述标注方式不仅限于所述标注方式,还可以包括其他补贴的标注方式,如代码颜色标注、下划线标注等。所述预设公式为:
预期值=第一代码覆盖率+K
其中,K代表预设阈值,且0<K<=2。代码覆盖率=(至少有一条指令被执行的代码行数)/(代码总行数),假设K=2,则预期值=2+第一代码覆盖率。
创建模块140,用于根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例。具体地,测试人员根据软件代码,确定软件代码的需求,接着,根据所述需求的可测性,将所述需求拆分成多个子需求,并针对每个子需求编写一个或多个自动测试脚本作为测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例。系统测试用例的编写好坏由测试人员对软件需求的了解程度决定的。
第一测试模块150,用于根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率。具体地,根据所述软件对应的版本号,如SVN版本号,确定该软件最近历史版本号对应的历史软件代码。其中,版本号命名规则为:X1.X2.X3.X4,X1代表主版本号,X2代表子版本号,X3代表阶段版本号,X4代表日期版本号,进一步地,还可以包括希腊字母版本号。假设,当前评估的软件产品的版本号为1.1.3.180917,则最近历史版本号为1.1.2.180903,版本号为1.1.2.180903对应的软件代码为当前评估的软件产品的历史软件代码。接着,将软件代码与历史软件代码进行对比得到差异化代码,利用所述系统测试用例对所述差异化代码进行测试,对系统测试用例测试过的差异化代码进行标注得到已测差异化代码。其中,所述差异化代码包括新增代码及修改代码。所述新增代码是指与历史软件代码相比,当前的软件代码中新增部分的代码。所述修改代码是指与历史软件代码相比,当前的软件代码中被修改过的代码。最后,将已测差异化代码与差异化代码进行对比得到差异化代码覆盖率。其中,差异化代码覆盖率=(至少有一条指令被执行的差异化代码行数)/(差异化代码总行数)。
第二测试模块160,用于根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率。其中,需求覆盖率=(被验证到的子需求数)/(子需求总数)。
第三测试模块170,用于利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率。但应理解的是,所述测试用例库中所有的测试用例并不包含创建模块140创建的系统测试用例。
第二计算模块180,用于根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值。所述预先确定的计算方式为:实时值=差异化代码覆盖率+需求覆盖率+第二代码覆盖率。
评估模块190,用于利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。所述预设的比较算法为:比较值=实时值×100%/预期值。进一步地,若所述比较值大于1,则判断软件质量合格,返回合格提示信息,若所述比较值值小于1,则判断软件质量不合格,返回不合格提示信息,接收修改后的软件代码或测试用例后,流程重新返回至第一测试步骤直至软件质量合格。其中,所述不合格提示信息包括:原因提示,如代码错误或测试用例错误等、未覆盖到的代码及行数。
如图4所示,是本发明软件质量评估方法较佳实施例的流程图。
在本实施例中,处理器12执行存储器11中存储的软件质量评估程序10的计算机程序时实现软件质量评估方法包括:步骤S10-步骤S90。
步骤S10,接收模块110接收待评估的软件代码及所述软件代码对应的版本号。所述版本号是指软件产品版本的标识,如SVN版本号(Subversion)。所述软件代码可以是指JAVA开源代码,也可以是指其他语言的开源代码。
步骤S20,选取模块120根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例。所述预设的选取规则包括:根据所述软件代码,分析该软件代码所实现的功能,接着,根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例。可以理解的是,被测试的软件产品所实现的功能或操作流程均由软件代码实现,因此,根据软件代码可以推导出该软件产品所实现的功能,根据软件产品所实现的功能筛选出该软件的基本功能。所述基本功能是指软件产品实现目的操作所必须的功能。并进一步地根据软件产品的基本功能从测试用例库中选取对应的测试用例作为基础测试用例。
步骤S30,第一计算模块130利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值。具体地,利用基础测试用例对所述软件代码进行测试,对基础测试用例测试过的软件代码进行标注得到已测代码,并将已测代码与软件代码进行对比得到第一代码覆盖率。代码覆盖率=(至少有一条指令被执行的代码行数)/(代码总行数)。其中,所述代码覆盖率包括行覆盖率、类覆盖率、分支覆盖率、方法覆盖率、语句覆盖率及语句块覆盖率等,优选地,使用行覆盖率。所述标注是指在测试用例测试软件代码的过程中,若某行代码的所有指令被执行,则该行代码被自动标为绿色背景,若某行代码的部分指令被执行,则该行代码被自动标为黄色背景,若某行代码的所有指令均无执行,则该行代码被自动标为红色背景。例如,软件代码总共有100行,使用基础测试用例后仅50行代码中至少一条指令被执行,因此第一代码覆盖率为50%。但应理解的是,所述标注方式不仅限于所述标注方式,还可以包括其他补贴的标注方式,如代码颜色标注、下划线标注等。所述预设公式为:
预期值=第一代码覆盖率+K
其中,K代表预设阈值,且0<K<=2。假设K=2,第一代码覆盖率为50%,则预期值=2.5。
步骤S40,创建模块140根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例。具体地,测试人员根据软件代码,确定软件代码的需求,接着,根据所述需求的可测性,将所述需求拆分成多个子需求,并针对每个子需求编写一个或多个自动测试脚本作为测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例。系统测试用例的编写好坏由测试人员对软件需求的了解程度决定的。
步骤S50,第一测试模块150根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率。具体地,根据所述软件对应的版本号,如SVN版本号,确定该软件最近历史版本号对应的历史软件代码。其中,版本号命名规则为:X1.X2.X3.X4,X1代表主版本号,X2代表子版本号,X3代表阶段版本号,X4代表日期版本号,进一步地,还可以包括希腊字母版本号。假设,当前评估的软件产品的版本号为1.1.3.180917,则最近历史版本号为1.1.2.180903,版本号为1.1.2.180903对应的软件代码为当前评估的软件产品的历史软件代码。接着,将软件代码与历史软件代码进行对比得到差异化代码,例如,将版本号为1.1.3.180917的软件代码与版本号为1.1.2.180903的软件代码进行对比,版本号为1.1.3.180917的软件代码的第10-20行与1.1.2.180903版本号的软件代码的不同,则将版本号为1.1.3.180917的第10-20行软件代码作为差异化代码。利用所述系统测试用例对所述差异化代码进行测试,对系统测试用例测试过的差异化代码进行标注得到已测差异化代码。其中,所述差异化代码包括新增代码及修改代码。所述新增代码是指与历史软件代码相比,当前的软件代码中新增部分的代码。所述修改代码是指与历史软件代码相比,当前的软件代码中被修改过的代码。最后,将已测差异化代码与差异化代码进行对比得到差异化代码覆盖率。其中,差异化代码覆盖率=(至少有一条指令被执行的差异化代码行数)/(差异化代码总行数)。例如,将系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率为100%。
步骤S60,第二测试模块160根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率。其中,需求覆盖率=(被验证到的子需求数)/(子需求总数)。例如,利用系统测试用例对所述需求进行测试得到需求覆盖率为100%。
步骤S70,第三测试模块170利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率。但应理解的是,所述测试用例库中所有的测试用例并不包含创建模块140创建的系统测试用例。例如,将测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率为60%。
步骤S80,第二计算模块180根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值。所述预先确定的计算方式为:实时值=差异化代码覆盖率+需求覆盖率+第二代码覆盖率。例如,根据差异化代码覆盖率为100%、需求覆盖率为100%及第二代码覆盖率为60%,得到实时值为2.6。
步骤S90,评估模块190利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。所述预设的比较算法为:比较值=实时值×100%/预期值。进一步地,若所述比较值大于1,则判断软件质量合格,返回合格提示信息,若所述比较值小于1,则判断软件质量不合格,返回不合格提示信息,接收修改后的软件代码或测试用例后,流程重新返回至第一测试步骤直至软件质量合格。其中,所述不合格提示信息包括:原因提示,如代码错误或测试用例错误等、未覆盖到的代码及行数。例如,预期值为2.5,实时值为2.6,则比较值为1.04且大于1,软件质量合格,返回合格提示信息。
上述实施例提出的软件质量评估方法,通过利用基础测试用例计算出预期值,接着,创建系统测试用例并根据系统测试用例测试得到差异化代码覆盖率、需求覆盖率,以及利用成测试用例库中所有的测试用例测试得到第二代码覆盖率,最后,根据差异化代码覆盖率、需求覆盖率及第二代码覆盖率计算得到实时值,将实时值与预期值进行对比,从而能够准确、有效地评估软件产品的质量。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括软件质量评估程序10,所述软件质量评估程序10被处理器执行时实现如下操作:
接收步骤:接收待评估的软件代码及所述软件代码对应的版本号;
选取步骤:根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例;
第一计算步骤:利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值;
创建步骤:根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例;
第一测试步骤:根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率;
第二测试步骤:根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率;
第三测试步骤:利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率;
第二计算步骤:根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值;
评估步骤:利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。
优选地,所述预设的选取规则包括:
根据所述软件代码,分析该软件代码所实现的功能;及
根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例。
优选地,所述第一计算步骤包括:
利用所述基础测试用例对所述软件代码进行测试,对基础测试用例测试过的软件代码进行标注得到已测代码;
将已测代码与软件代码进行对比得到第一代码覆盖率。
优选地,所述创建步骤包括:
根据所述需求的可测性,将所述需求拆分成多个子需求;
针对每个子需求创建一个测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例。
优选地,所述第一测试步骤包括:
根据所述软件对应的版本号,确定该软件最近的历史版本号所对应的历史软件代码;
将软件代码与历史软件代码进行对比得到差异化代码;
利用所述系统测试用例对所述差异化代码进行测试,对系统测试用例测试过的差异化代码进行标注得到已测差异化代码;
将已测差异化代码与差异化代码进行对比得到差异化代码覆盖率。
优选地,该方法还包括:若所述比较值大于1,则判断软件质量合格,返回合格提示信息,若所述比较值小于1,则判断软件质量不合格,返回不合格提示信息,接收修改后的软件代码或测试用例后,流程重新返回至第一测试步骤直至软件质量合格。
本发明之计算机可读存储介质的具体实施方式与上述软件质量评估方法的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种软件质量评估方法,应用于电子装置,其特征在于,所述方法包括:
接收步骤:接收待评估的软件代码及所述软件代码对应的版本号;
选取步骤:根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例,所述预设的选取规则包括:根据所述软件代码,分析该软件代码所实现的功能;及根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例;
第一计算步骤:利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值;
创建步骤:根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例,具体包括:根据所述需求的可测性,将所述需求拆分成多个子需求;针对每个子需求创建一个测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例;
第一测试步骤:根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率,所述差异化代码的确定过程包括:根据所述软件对应的版本号,确定该软件最近的历史版本号所对应的历史软件代码;将软件代码与历史软件代码进行对比得到差异化代码;
第二测试步骤:根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率;
第三测试步骤:利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率;
第二计算步骤:根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值;
评估步骤:利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。
2.根据权利要求1所述的软件质量评估方法,其特征在于,所述第一计算步骤包括:
利用所述基础测试用例对所述软件代码进行测试,对基础测试用例测试过的软件代码进行标注得到已测代码;
将已测代码与软件代码进行对比得到第一代码覆盖率。
3.根据权利要求1所述的软件质量评估方法,其特征在于,所述第一测试步骤包括:
利用所述系统测试用例对所述差异化代码进行测试,对系统测试用例测试过的差异化代码进行标注得到已测差异化代码;
将已测差异化代码与差异化代码进行对比得到差异化代码覆盖率。
4.根据权利要求1所述的软件质量评估方法,其特征在于,该方法还包括:若所述比较值大于1,则判断软件质量合格,返回合格提示信息,若所述比较值小于1,则判断软件质量不合格,返回不合格提示信息,接收修改后的软件代码或测试用例后,流程重新返回至第一测试步骤直至软件质量合格。
5.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及显示器,所述存储器上存储有软件质量评估程序,所述软件质量评估程序被所述处理器执行,可实现如下步骤:
接收步骤:接收待评估的软件代码及所述软件代码对应的版本号;
选取步骤:根据所述软件代码,利用预设的选取规则从测试用例库中选取第一预设数量的测试用例作为基础测试用例,所述预设的选取规则包括:根据所述软件代码,分析该软件代码所实现的功能;及根据功能与测试用例的映射关系,从测试用例库中选取出第一预设数量与所述软件代码实现功能相对应的测试用例作为基础测试用例;
第一计算步骤:利用所述基础测试用例对所述软件代码进行测试得到第一代码覆盖率,将所述第一代码覆盖率代入预设公式计算得到预期值;
创建步骤:根据所述软件代码,确定所述软件代码的需求,根据所述需求创建第二预设数量的测试用例得到系统测试用例,具体包括:根据所述需求的可测性,将所述需求拆分成多个子需求;针对每个子需求创建一个测试用例,设置每个子需求与对应的测试用例之间的映射关系得到系统测试用例;
第一测试步骤:根据所述软件代码对应的版本号,确定所述软件代码中的差异化代码,利用所述系统测试用例对所述差异化代码进行测试得到差异化代码覆盖率,所述差异化代码的确定过程包括:根据所述软件对应的版本号,确定该软件最近的历史版本号所对应的历史软件代码;将软件代码与历史软件代码进行对比得到差异化代;
第二测试步骤:根据所述需求,利用所述系统测试用例对所述需求进行测试得到需求覆盖率;
第三测试步骤:利用测试用例库中所有的测试用例对所述软件代码进行测试得到第二代码覆盖率;
第二计算步骤:根据所述差异化代码覆盖率、需求覆盖率及第二代码覆盖率,利用预先确定的计算方式进行计算得到实时值;
评估步骤:利用预设的比较算法对所述实时值及所述预期值进行比较生成比较值,根据比较值评估软件代码的质量。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括软件质量评估程序,所述软件质量评估程序被处理器执行时,可实现如权利要求1至4中任一项所述软件质量评估方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811184229.XA CN109542761B (zh) | 2018-10-11 | 2018-10-11 | 软件质量评估方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811184229.XA CN109542761B (zh) | 2018-10-11 | 2018-10-11 | 软件质量评估方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542761A CN109542761A (zh) | 2019-03-29 |
CN109542761B true CN109542761B (zh) | 2022-03-11 |
Family
ID=65843658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811184229.XA Active CN109542761B (zh) | 2018-10-11 | 2018-10-11 | 软件质量评估方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542761B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399289B (zh) * | 2019-06-14 | 2023-10-20 | 平安科技(深圳)有限公司 | 应用程序测试的评价方法、装置、服务器及存储介质 |
CN112256553A (zh) * | 2019-07-22 | 2021-01-22 | 百度(中国)有限公司 | 一种应用软件测试方法、装置及电子设备 |
CN110674044B (zh) * | 2019-09-24 | 2023-09-01 | 携程旅游网络技术(上海)有限公司 | 功能自动化测试的覆盖率获取方法、系统、设备及介质 |
CN113342634B (zh) * | 2020-03-02 | 2024-10-18 | 北京沃东天骏信息技术有限公司 | 软件质量评估的方法和装置 |
CN111522734B (zh) * | 2020-03-17 | 2023-02-28 | 上海云砺信息科技有限公司 | 软件功能测试方法、装置、电子设备及存储介质 |
CN111897727A (zh) * | 2020-07-30 | 2020-11-06 | 平安科技(深圳)有限公司 | 软件测试方法、装置、计算机设备及存储介质 |
CN113760307A (zh) * | 2020-11-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 获取应用代码的差异化覆盖率的方法和装置 |
CN112346994B (zh) * | 2020-12-01 | 2024-06-04 | 广州品唯软件有限公司 | 一种测试信息关联方法、装置、计算机设备及存储介质 |
CN113051582B (zh) * | 2021-04-28 | 2023-03-14 | 重庆电子工程职业学院 | 一种计算机软件技术开发调试系统 |
CN113282517A (zh) * | 2021-07-21 | 2021-08-20 | 支付宝(杭州)信息技术有限公司 | 一种智能合约代码的质量评估系统 |
CN113836043B (zh) * | 2021-11-22 | 2022-02-18 | 国网浙江省电力有限公司 | 基于测试用例的中台自维护方法、装置及存储介质 |
CN117609029A (zh) * | 2023-11-22 | 2024-02-27 | 中国电子科技集团公司第十五研究所 | 基于数据采信的软件失效数据融合方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246600A (zh) * | 2012-02-10 | 2013-08-14 | 广州博纳信息技术有限公司 | 软件测评快速校验方法 |
CN105468512A (zh) * | 2014-09-05 | 2016-04-06 | 北京畅游天下网络技术有限公司 | 一种对软件质量进行评估的方法和系统 |
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
CN107678951A (zh) * | 2017-09-21 | 2018-02-09 | 平安科技(深圳)有限公司 | 测试用例自动化管理方法、装置、设备及存储介质 |
CN108491321A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 测试用例范围确定方法、装置及存储介质 |
CN108563563A (zh) * | 2018-03-26 | 2018-09-21 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空机载软件测试质量评价方法 |
-
2018
- 2018-10-11 CN CN201811184229.XA patent/CN109542761B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246600A (zh) * | 2012-02-10 | 2013-08-14 | 广州博纳信息技术有限公司 | 软件测评快速校验方法 |
CN105468512A (zh) * | 2014-09-05 | 2016-04-06 | 北京畅游天下网络技术有限公司 | 一种对软件质量进行评估的方法和系统 |
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
CN107678951A (zh) * | 2017-09-21 | 2018-02-09 | 平安科技(深圳)有限公司 | 测试用例自动化管理方法、装置、设备及存储介质 |
CN108491321A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 测试用例范围确定方法、装置及存储介质 |
CN108563563A (zh) * | 2018-03-26 | 2018-09-21 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空机载软件测试质量评价方法 |
Non-Patent Citations (2)
Title |
---|
一种基于模型的测试充分性评估方法;张瑶等;《计算机科学》;20130215(第02期);第153-158页 * |
嵌入式软件的可靠性测试及评估;王丽芹等;《微处理机》;20130415(第02期);第53-56页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109542761A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542761B (zh) | 软件质量评估方法、装置及存储介质 | |
CN109933520B (zh) | 软件开发测试方法、装置、计算机装置及存储介质 | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN110134593B (zh) | 软件测试方法、装置、电子设备及存储介质 | |
CN111611172A (zh) | 项目测试缺陷分析方法、装置、设备及存储介质 | |
CN111026647B (zh) | 代码覆盖率的获取方法、装置、计算机设备和存储介质 | |
CN110162453B (zh) | 测试方法、装置、计算机可读存储介质和计算机设备 | |
CN110032505B (zh) | 软件质量确定装置和方法以及非暂态计算机可读介质 | |
CN111198811A (zh) | 一种页面自动化测试的方法、装置、电子设备及存储介质 | |
CN110569194A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN111459812A (zh) | 接口测试用例生成方法、电子装置及存储介质 | |
CN117290236A (zh) | 软件测试方法、装置、计算机设备及计算机可读存储介质 | |
US9612944B2 (en) | Method and system for verifying scenario based test selection, execution and reporting | |
CN112216337A (zh) | 固件参数检测方法、装置及固件设置方法 | |
CN116860608A (zh) | 一种接口测试方法、装置、计算设备及存储介质 | |
CN111008147A (zh) | 应用程序的测试方法、终端及计算机可读存储介质 | |
KR20120111618A (ko) | Plc 명령어 테스트 장치 및 방법 | |
CN107102938A (zh) | 测试脚本的更新方法及装置 | |
CN111083007B (zh) | 测试方法、装置、计算机设备和存储介质 | |
KR102201845B1 (ko) | 멀티 태스크 기반 소프트웨어의 자동화 단위 테스트 방법 및 그를 위한 시스템 | |
CN113986742A (zh) | 一种自动化测试方法、装置、设备及存储介质 | |
CN111078574A (zh) | 生成影响分析报告的方法及装置 | |
CN111367816B (zh) | 移动测试方法、装置、计算机设备及存储介质 | |
CN113722208B (zh) | 软件测试报表的项目进度验证方法及装置 | |
CN115269421A (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 |