基于智能电表操作***的进程测试方法和装置
技术领域
本申请涉及智能电表操作***技术领域,特别是涉及一种基于智能电表操作***的进程测试方法、装置、计算机设备和存储介质。
背景技术
电表是电力***中的一个重要设备,电表可以实现对电能的计量和事件的记录等功能,目前的电表通常都是使用嵌入式代码实现其相关功能,近年来,随着能源互联网的不断发展和电力市场化改革的不断深入,新时期涌现的全新业务场景对电表的互动性、高效性和安全性等方面均提出了更高的要求,因此,拥有操作***的智能电表成为了电表发展的主要方向,对智能电表引入嵌入式操作***,是满足日益增长的对智能电表的功能需求的必要手段。
在智能电表操作***整体功能实现的过程中,需要对操作***中的进程进行测试和检测,进程作为智能电表操作***分配资源的基本单位,其功能、性能以及安全性的优劣将成为影响操作***性能的核心环节,然而目前对于智能电表的检测往往只是对智能电表的性能和功能进行检测,没有对操作***,特别是进程进行检测。
因此,如何实现对智能电表操作***中的进程进行测试,成为亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现对智能电表操作***进程进行测试的基于智能电表操作***的进程测试方法、装置、计算机设备和存储介质。
一种基于智能电表操作***的进程测试方法,应用于智能电表,所述方法包括:
获取所述智能电表的操作***中实现与控制进程功能的待检测代码;
对所述待检测代码进行第一测试,得到第一测试结果;所述第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试;所述质量测试包括规模检测、复杂度检测、复用性检测中的至少一种;
对所述待检测代码进行第二测试,得到第二测试结果;所述第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试;所述进程管理测试包括进程创建和删除测试、优先级测试以及状态切换测试中的至少一种;
根据所述第一测试结果以及所述第二测试结果,输出所述智能电表的操作***对应的进程测试报告。
在一个实施例中,对所述待检测代码进行第一测试中的所述编码规范测试,包括:
将所述待检测代码与预设编码标准进行比对,得到比对结果;所述比对结果包括所述待检测代码的格式与所述预设编码标准的符合度;所述预设编码标准基于所述智能电表的操作***得到;
根据所述符合度,得到规范性测试结果;所述第一测试结果中包含所述规范性测试结果。
在一个实施例中,对所述待检测代码进行第一测试中的所述漏洞检测,包括:
检测所述待检测代码中是否存在符合预设漏洞规则的漏洞数据,得到漏洞测试结果;所述第一测试结果中包含所述漏洞测试结果;所述预设漏洞规则基于所述智能电表的内存信息、所述智能电表的用户信息以及所述智能电表对应的数据库得到。
在一个实施例中,对所述待检测代码进行第一测试中的所述覆盖率测试,包括:
根据所述待检测代码,生成预设测试用例;
根据所述预设测试用例,对所述待检测代码进行条件组合覆盖测试以及路径覆盖测试,得到覆盖率测试结果;所述第一测试结果中包含所述覆盖率测试结果。
在一个实施例中,对所述待检测代码进行第二测试中的所述进程通信测试,包括:
生成发送进程以及接收进程,所述发送进程以及接收进程通过预设通信机制进行通信;
通过所述预设通信机制,利用所述发送进程,向所述接收进程发送预设指令,以使所述接收进程接收所述预设指令;
将所述接收进程接收的指令与所述预设指令进行比对,得到比对结果;
根据所述比对结果以及所述接收进程响应于所述预设指令的执行情况,得到通信测试结果;所述第二测试结果中包含所述通信测试结果。
在一个实施例中,对所述待检测代码进行第二测试中的所述时间测试,包括:
生成第一进程以及第二进程;所述第一进程以及第二进程在运行时分别输出对应的脉冲信号;将所述第一进程设置为运行状态,将所述第二进程设置为待运行状态;
终止所述第一进程,获取所述第一进程对应的脉冲信号停止输出的第一时间;
启动所述第二进程,获取所述第二进程开始输出对应的脉冲信号的第二时间;
根据所述第一时间以及所述第二时间,得到时间测试结果;所述第二测试结果中包含所述时间测试结果。
在一个实施例中,对所述待检测代码进行第二测试中的所述安全测试,包括:
生成多个进程;将所述多个进程设置为运行状态;
将所述多个运行的进程中的一个进程设置为异常状态;
检测其他进程的运行状态;
根据所述其他进程的运行状态,得到安全测试结果;所述第二测试结果中包含所述安全测试结果。
一种基于智能电表操作***的进程测试装置,应用于智能电表,所述装置包括:
获取模块,用于获取所述智能电表的操作***中实现与控制进程功能的待检测代码;
第一测试模块,用于对所述待检测代码进行第一测试,得到第一测试结果;所述第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试;所述质量测试包括规模检测、复杂度检测、复用性检测中的至少一种;
第二测试模块,用于对所述待检测代码进行第二测试,得到第二测试结果;所述第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试;所述进程管理测试包括进程创建和删除测试、优先级测试以及状态切换测试中的至少一种;
输出模块,用于根据所述第一测试结果以及所述第二测试结果,输出所述智能电表的操作***对应的进程测试报告。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于智能电表操作***的进程测试方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于智能电表操作***的进程测试方法。
上述基于智能电表操作***的进程测试方法、装置、计算机设备和存储介质,通过获取智能电表的操作***中实现与控制进程功能的待检测代码,再对待检测代码进行第一测试,得到第一测试结果,其中第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试,还可以对待检测代码进行第二测试,得到第二测试结果,其中第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试,再根据第一测试结果以及第二测试结果,输出智能电表的操作***对应的进程测试报告。相较于传统的仅仅对智能电表的性能以及功能进行测试,本方案通过对智能电表的操作***中实现与控制进程功能的代码进行相应检测,从而实现了对智能电表操作***的进程进行测试。
附图说明
图1为一个实施例中基于智能电表操作***的进程测试方法的流程示意图;
图2为一个实施例中第一测试步骤的流程示意图;
图3为一个实施例中第二测试步骤的流程示意图;
图4为另一个实施例中基于智能电表操作***的进程测试方法的流程示意图;
图5为一个实施例中基于智能电表操作***的进程测试装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本方法可以应用于智能电表中,智能电表可以是符合IR46标准的智能电表,其中,IR46标准为电能表国际建议,为国际法制计量组织起草的一个技术文件,为新设计生产的电能表的型式批准提出建议,是国际法制计量的重要组成部分,IR46为电表的计量、控制和性能等方面提出了新的要求。上述智能电表中可以包括有操作***,该操作***可以由若干代码组成,其中若干代码可以组成相应进程,其中操作***可以是管理智能电表的硬件与软件资源的计算机程序,同时也是智能电表***的内核与基石;操作***需要处理如管理与配置内存、决定***资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件***等基本事务;操作***也提供一个让用户与***交互的操作界面。进程可以是智能电表中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位,是操作***结构的基础。智能电表可以对操作***中的进程进行相应检测。
在一个实施例中,如图1所示,提供了一种基于智能电表操作***的进程测试方法,以该方法应用于智能电表为例进行说明,包括以下步骤:
步骤S202,获取智能电表的操作***中实现与控制进程功能的待检测代码。
其中,智能电表可以获取其操作***中,负责实现与控制进程功能的代码,作为待检测代码,例如可以是负责实现内核层功能实现的代码。由于智能电表嵌入式操作***本身的分层结构特点,内核层代码的功能包括任务管理、任务间通信,例如信号量、互斥量、消息队列、条件变量和事件集;内存管理,例如内存堆和定长内存分区;软件定时器、事件管理、终端管理、异常处理、进程管理等。智能电表在获取内核层代码的基础上,可以通过头文件分析并定位函数,获取操作***进程功能的实现与控制的代码,作为待检测的代码,其中待检测代码中包括但不限于进程功能管理、进程通信管理、进程切换管理以及进程安全性管理的设计源码等。
步骤S204,对待检测代码进行第一测试,得到第一测试结果;第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试;质量测试包括规模检测、复杂度检测、复用性检测中的至少一种。
其中,如图2所示,图2为一个实施例中第一测试步骤的流程示意图。第一测试可以是对上述智能电表的操作***中的待检测代码进行的通用性测试,通用性测试可以是在整个操作***的进程测试过程中,可以复用的测试项。上述第一测试可以包括如图2所示的编码规范测试、漏洞测试、质量测试以及覆盖率测试,其中质量测试可以包括代码规模检测、代码复杂度检测、代码复用性检测中的至少一种。需要说明的是,质量测试还可以至少包括上述的代码规模检测、代码复杂度检测和代码复用性检测,即智能电表可以至少通过对代码规模检测、代码复杂度检测和代码复用性检测的共同测试结果,得到质量测试的测试结果。
上述编码规范测试、漏洞测试和质量测试可以是静态测试项目,其中漏洞测试可以包括代码缺陷和安全漏洞检测的测试;覆盖率测试可以是动态测试项目。具体地,覆盖率测试可以是代码覆盖率测试,编码规范测试可以是对代码的编码规范进行测试,漏洞测试可以是对代码的缺陷和安全漏洞的测试,质量测试可以是对软件的质量进行测试。智能电表可以对上述待检测代码进行第一测试,并得到第一测试结果。
步骤S206,对待检测代码进行第二测试,得到第二测试结果;第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试;进程管理测试包括进程创建和删除测试、优先级测试以及状态切换测试中的至少一种。
其中,如图3所示,图3为一个实施例中第二测试步骤的流程示意图。智能电表还可以对上述待检测代码进行第二测试,并可以得到第二测试结果。第二测试可以是上述待检测代码的专用性测试,即可以是针对操作***中进程的功能本身进行测试。专用性测试可以从功能性、性能和安全性展开,具体地,可以包括如图3所示的进程管理测试、进程通信测试、时间测试以及安全测试。其中,进程管理测试可以是对进程的管理功能进行测试,例如可以包括进程创建和删除测试、进程的优先级测试以及进程状态切换测试中的至少一种;需要说明的是,进程管理测试还可以至少包括上述进程创建和删除测试、进程的优先级测试以及进程状态切换测试,即智能电表可以至少通过进程创建和删除测试、进程的优先级测试以及进程状态切换测试的共同测试结果,得到进程管理测试结果。
上述智能电表可以通过上述进程管理测试,得到进程管理测试的测试结果,该结果中可以包括进程是否能正确实现进程的创建、删除功能;是否能正确实现所测试***的优先级赋值功能;是否进程调度至少支持就绪、运行和阻塞三种状态,进程调度时被切换的进程之间能够进行现场的保护与恢复。是否支持基于优先级抢占的调度算法,优先级高的进程先得到处理,且支持使用时间片轮或先进先出的调度策略等。
进程通信测试可以是对进程之间的通信功能进行测试;时间测试可以是对进程的切换时间进行测试;安全测试可以是对进程的异常状态处理能力进行测试。智能电表在进行上述第二测试后,可以得到第二测试结果。
步骤S208,根据第一测试结果以及所述第二测试结果,输出智能电表的操作***对应的进程测试报告。
其中,第一测试结果可以是智能电表完成上述第一测试后得到的测试结果,第二测试结果可以是智能电表完成上述第二测试后得到的测试结果。智能电表在完成上述第一测试和第二测试,并得到相应的测试结果后,可以根据上述第一测试结果以及第二测试结果,输出智能电表的操作***对应的进程测试报告,具体地,智能电表可以根据每个测试子项的测试结果和预先设定的评判准则进行对比分析,从而输出智能电表操作***进程测试的报告。智能电表可以展示该报告,相关技术人员可以对该报告进行查看并进行相关处理。
上述基于智能电表操作***的进程测试方法中,通过获取智能电表的操作***中实现与控制进程功能的待检测代码,再对待检测代码进行第一测试,得到第一测试结果,其中第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试,还可以对待检测代码进行第二测试,得到第二测试结果,其中第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试,再根据第一测试结果以及第二测试结果,输出智能电表的操作***对应的进程测试报告。相较于传统的仅仅对智能电表的性能以及功能进行测试,本方案通过对智能电表的操作***中实现与控制进程功能的代码进行相应检测,从而实现了对智能电表操作***的进程进行测试。
在一个实施例中,质量测试可以是包括代码规模检测、代码复杂度检测和代码复用性检测中的至少一种。需要说明的是,质量测试还可以至少包括上述的代码规模检测、代码复杂度检测和代码复用性检测,即智能电表可以至少通过对代码规模检测、代码复杂度检测和代码复用性检测的共同测试结果,得到质量测试的测试结果。质量测试可以是基于内部软件质量度量模型及度量元,通过相关测试所得到的数据对代码质量进行定量评价,典型的度量元包括软件模块规模度量、软件模块复杂度度量、软件模块扇入扇出度量等,通过量化程序代码得到预测错误数和工作量,上述智能电表在质量测试中,可以对待检测代码基于LOC度量法、McCabe度量法和扇入扇出度量三个层面作为其主要测试内容,具体地,对于LOC度量,可以是上述待检测代码的平均行数不超过200行,且大于200行的比例不高于a%;对于McCabe度量,可以是上述待检测代码对应的软件模块的平均圈复杂度不大于10,软件模块的最大圈复杂度不大于80,软件模块圈复杂度大于10但不大于40的比例不大于b%;大于40的比例不大于c%;对于扇入扇出度量,可以是上述待检测代码的高层模块的扇出数不低于d%;底层模块的扇入数不低于e%。其中a、b、c、d、e可以为预先设定值,圈复杂度=判定节点数+1。且对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。
通过本实施例,智能电表通过多种方式对待检测代码进行质量测试,从而实现对智能电表进程的全面检测。
在一个实施例中,对待检测代码进行第一测试中的编码规范测试,包括将待检测代码与预设编码标准进行比对,得到比对结果;比对结果包括待检测代码的格式与预设编码标准的符合度;预设编码标准基于智能电表的操作***得到;根据符合度,得到规范性测试结果;第一测试结果中包含规范性测试结果。
本实施例中,第一测试中可以包括编码规范测试,智能电表可以对上述待检测代码进行编码规范测试。具体地,智能电表可以首先获取预设的编码规范,该预设的编码规范可以是针对智能电表的操作***进行优化后的编码规范,例如可以是针对智能电表的操作***优化后的MISRAC编码规范;智能电表可以获取上述待检测代码,并将上述待检测代码与上述预设编码标准进行比对,得到比对结果,其中比对结果中可以包括上述待检测代码与上述预设编码标准之间的符合度,另外,智能电表还可以在进行编码规范测试后,输出上述待检测代码的规范性的总体说明,例如规范或者不规范等,还可以输出代码符合规范的概率以及违背规范的概率。智能电表可以根据上述符合度,得到规范性测试结果,该规范性测试结果可以包括在上述第一测试结果中。
通过本实施例,智能电表通过对待检测代码进行规范性测试,可以得到待检测代码的规范性结果,从而使相关技术人员可以根据结果规范化智能电表操作***进程等相关功能的开发设计过程,实现对进程代码的优化,从而实现了对智能电表操作***的进程进行测试。
在一个实施例中,对待检测代码进行第一测试中的漏洞检测,包括:检测待检测代码中是否存在符合预设漏洞规则的漏洞数据,得到漏洞测试结果;第一测试结果中包含漏洞测试结果;预设漏洞规则基于智能电表的内存信息、智能电表的用户信息以及所述智能电表对应的数据库得到。
本实施例中,智能电表对待检测代码的第一测试中还可以包括漏洞测试,漏洞测试可以包括对智能电表操作***的进程中待检测代码的缺陷以及安全漏洞进行测试。智能电表可以针对典型的缺陷规则进行进程代码的缺陷排查,通过设定的算法逻辑和代码分析技术,在静态的条件下查出存在于运行时的错误和代码缺陷。具体地,该漏洞测试可以包括质量可靠性的测试规则,例如进程调用内存和资源泄露、使用已释放的内存、不正确的内存释放、空指针解引用、缓冲区溢出、数组越界、使用为初始化的数据、资源管理问题和并发问题等;还可以包括安全漏洞缺陷测试规则,例如未经验证的用户输入、SQL注入、Path注入、File注入、信息泄露和封装等,智能电表可以根据上述测试规则,生成预设漏洞规则,即智能电表可以基于智能电表的内存信息、智能电表的用户信息以及智能电表对应的数据库得到预设漏洞规则。
智能电表可以根据上述预设漏洞规则,对上述待检测代码进行检测,检测代码中是否包含预设漏洞规则中存在的缺陷,并得到相应的漏洞测试结果,该结果可以包括例如待检测代码中是否存在质量可靠类缺陷以及是否存在安全漏洞类缺陷等信息,该漏洞测试结果可以包括在上述第一测试结果中。
通过本实施例,智能电表可以根据预设漏洞对着对待检测代码进行漏洞检测,提高了待检测代码的安全性,从而实现对智能电表操作***的进程的全面检测。
在一个实施例中,对待检测代码进行第一测试中的覆盖率测试,包括:根据待检测代码,生成预设测试用例;根据预设测试用例,对待检测代码进行条件组合覆盖测试以及路径覆盖测试,得到覆盖率测试结果;第一测试结果中包含覆盖率测试结果。
本实施例中,智能电表对上述待检测代码进行的第一测试中还可以包括覆盖率测试,覆盖率测试可以是代码覆盖率测试,覆盖率评测可以是作为软件产品认证时的一种重要手段,主要包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等形式。由于智能电表的操作***进程开发源码的特点和差异,上述覆盖测试可以从条件组合覆盖和路径覆盖两个方面进行测试。具体地,可以根据上述待检测代码,生成预设测试用例,获取上述待检测代码,并对其中的函数进行打桩,还可以根据上述预设测试用例,对待检测代码进行条件组合覆盖测试以及路径覆盖测试,从而输出覆盖率测试结果,该结果可以包括条件组合覆盖率测试值及与预设值的对比分析以及路径覆盖率测试值及与预设值的对比分析等,另外,智能电表还可以根据覆盖率的情况,对上述预设测试用例进行完善,从而进行回归测试。上述覆盖率测试结果可以包括在上述第一测试结果中。
通过本实施例,智能电表可以对上述待检测代码进行覆盖率测试,从而得到覆盖率测试结果,从而提高了智能电表的检测的全面性。
在一个实施例中,进程管理测试可以包括进程的创建、删除、调度策略及相关的控制功能;还可以包括进程的创建与删除测试、进程优先级测试、进程状态切换测试和进程调度策略测试四个层面,保证进程创建时实现资源的分配,进程消亡是实现资源的回收。具体地,可以通过如下测试来实现对上述待检测代码的进程管理测试:
调用进程创建函数,创建进程process0;进程process0运行2秒后调用进程删除函数,删除进程process0;调用进程创建函数,创建进程process1;调用进程优先级设置函数,将进程process1的优先级设置为100:调用进程挂起函数将进程process1挂起;2秒后调用进程恢复函数将进程process1恢复;
调用进程创建函数,创建进程process2和process3;process2首先运行且优先级小于process3;process2运行2秒后process3运行;运行观察process3会强制process2运行;
调用进程创建函数,创建进程process4和process5;process4和process5优先级相同;设置进程的调度方式为RR;使两个进程同时运行;两个进程交替执行;设置进程的调度方式为FIFO;使两个进程运行;首先运行的进程会一直运行。
通过本实施例,智能电表可以通过多种方式实现对进程的管理测试,从而实现对智能电表进程的全面检测。
在一个实施例中,对待检测代码进行第二测试中的进程通信测试,包括生成发送进程以及接收进程,发送进程以及接收进程通过预设通信机制进行通信;通过预设通信机制,利用发送进程,向接收进程发送预设指令,以使接收进程接收预设指令;将接收进程接收的指令与预设指令进行比对,得到比对结果;根据比对结果以及接收进程响应于预设指令的执行情况,得到通信测试结果;第二测试结果中包含通信测试结果。
本实施例中,智能电表对待检测代码进行的第二测试中还可以包括进程通信测试,进程通信测试主要从消息队列、管道和共享内存三个方面进行测试,需要说明的是,由于消息队列、管道与共享内存三种通信方式各有其优缺点,在实际智能电表的操作***的进程某项具体的通信功能实现中,可能会侧重于某种特定的通信方式,但考虑到测试的充分性,在测试过程中,智能电表需要涵盖三个层面的测试。其中,消息队列的测试内容至少包括消息队列的创建与删除功能测试、消息队列的同步通信机制测试、消息队列的异步通信机制测试、任务以阻塞方式发送消息队列的功能测试、任务以非阻塞方式发送消息队列的功能测试、任务以阻塞方式接收消息队列的功能测试、任务以非阻塞方式接收消息队列的功能测试等。管道通信的测试内容至少包括管道的创建与删除功能测试、管道通信机制测试等。共享内存的测试内容至少包括共享内存的创建与删除功能测试、共享内存通信机制测试等。具体地,智能电表可以生成发送进程和接收进程,发送进程和接收进程可以通过预设通信机制进行通信,其中通信机制可以包括多个,可以分别模拟不同通信状态下的通信,例如消息队列、管道和共享内存等,利用上述预设通信机制,控制发送进程写入数据,并控制接收端进行数据读出,该数据可以是电力数据,也可以是操作***指令,校验接收进程读出的数据是否完整,并根据完整情况,以及接收进程基于预设指令的执行情况,例如是否完整执行预设指令中的内容等,得到通信测试结果,该结果中可以具体包括通过制定目标进程发送数据,目标进程是否能及时准确地收到数据、对于不同的通信方式,所设计的测试项对应的测试功能能否正常完成,以及对应测试项的响应时间是否低于预设值。
通过本实施例,智能电表可以对上述待检测代码进行进程通信测试,保证了智能电表操作***的进程能够正常通信,从而实现提高智能电表检测的全面性。
在一个实施例中,对待检测代码进行第二测试中的时间测试,包括:生成第一进程以及第二进程;第一进程以及第二进程在运行时分别输出对应的脉冲信号;将第一进程设置为运行状态,将第二进程设置为待运行状态;终止第一进程,获取第一进程对应的脉冲信号停止输出的第一时间;启动第二进程,获取第二进程开始输出对应的脉冲信号的第二时间;根据第一时间以及所述第二时间,得到时间测试结果;第二测试结果中包含时间测试结果。
本实施例中,第二测试中还可以包括时间测试,时间测试可以是测试智能电表的CPU的控制权由运行进程主动转移到另外一个就绪进程时所花费的时间。包括有压力进程切换时间测试和无压力进程切换时间测试。智能电表可以生成第一进程和第二进程,第一进程和第二进程在运行时可以分别输出对应的脉冲信号,智能电表可以将第一进程设置为运行状态,将第二进程设置为待机状态,此时第一进程可以输出相应的脉冲信号,智能电表可以终止第一进程,并获取第一进程对应的脉冲信号停止输出的第一时间,并同时启动第二进程,获取第二进程开始输出对应的脉冲信号的第二时间,智能电表可以根据第一时间和第二时间,例如根据第一时间和第二时间的时间差,得到时间测试结果。具体地,智能电表可以创建两个进程使其分别在不同的IO口输出脉冲信号,检测IO1脉冲停止到IO2脉冲开始的时间差,即进程切换时间,将测试得到的时间与预设值对比分析,并得到相应的时间测试结果,其中时间测试结果中可以包括进程切换时间是否超过预设值,该时间测试结果可以包括在上述第二测试结果中。
通过本实施例,智能电表可以对操作***中进程的切换时间进行测试,并令切换时间控制在设定范围内,从而提高了智能电表操作***的性能,实现提高智能电表检测的全面性。
在一个实施例中,对待检测代码进行第二测试中的安全测试,包括:生成多个进程;将多个进程设置为运行状态;将多个运行的进程中的一个进程设置为异常状态;检测其他进程的运行状态;根据其他进程的运行状态,得到安全测试结果;第二测试结果中包含安全测试结果。
本实施例中,智能电表进行的第二检测中还可以包括安全测试,该安全测试目的可以是测试智能电表操作***的进程在不同状态下是否会影响到其他进程的状态。智能电表可以生成多个运行中的进程,并可以将多个进程中的一个进程设置为异常状态,例如可以在进程中输入异常代码等,当该进程异常后,检测其他进程的运行状态,并根据其他进程的状态,得到安全测试结果,该安全测试结果可以包括在第二测试结果中。具体地,智能电表可以测试进程在启动、退出及异常三种状态下,是否只会影响进程所在的地址空间而影响其他进程的正常运行,包括安全进程启动测试、安全进程退出测试和安全进程异常测试,智能电表可以构建多个可独立运行的进程,并控制多个进程同时运行,在一个进程中构建异常代码使其产生异常,测试其他进程的运行状态,并得到相应的安全测试结果,其中安全测试结果中可以包括安全进程是否能正常启动且不影响其他进程运行状态、安全进程是否能正常退出且不影响其他进程运行状态,以及安全进程是否能异常退出且不影响其他进程运行状态等信息。
通过本实施例,智能电表可以通过对其操作***中的进程进行上述安全测试,实现提高进程运行安全性的效果。
在一个实施例中,如图4所示,图4为另一个实施例中基于智能电表操作***的进程测试方法的流程示意图。智能电表首先获取智能电表操作***进程控制与实现的待检测代码,然后可以进行通用性测试,具体可以包括编码规范测试、代码缺陷安全漏洞测试、软件质量测试、代码覆盖率测试;其中,编码规范测试可以包括MSIRA C的针对智能电表的优化内容;代码缺陷安全漏洞测试可以包括代码缺陷测试以及安全漏洞测试;软件质量测试可以包括规模评估、圈复杂度评估以及模块扇入扇出评估;代码覆盖率测试可以包括条件组合覆盖以及路径覆盖;
智能电表还可以进行专用性测试,具体可以包括进程管理测试、进程通信测试、进程切换时间测试以及多进程安全隔离测试;其中进程管理测试可以包括创建与删除、优先级赋值、状态切换和调度策略等;进程通信测试可以包括消息队列测试、管道测试以及共享内存测试;进程切换时间测试可以包括有压力进程切换时间测试以及无压力进程切换时间测试;多进程安全隔离测试可以包括安全进程启动、安全进程退出以及安全进程异常等测试。
智能电表在进行通用性测试以及专用性测试后,可以统计分析测试结果并输出测试报告。
通过本实施例,通过获取智能电表的操作***中实现与控制进程功能的待检测代码,再对待检测代码进行第一测试,得到第一测试结果,其中第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试,还可以对待检测代码进行第二测试,得到第二测试结果,其中第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试,再根据第一测试结果以及第二测试结果,输出智能电表的操作***对应的进程测试报告。相较于传统的仅仅对智能电表的性能以及功能进行测试,本方案通过对智能电表的操作***中实现与控制进程功能的代码进行相应检测,从而实现了对智能电表操作***的进程进行测试。
应该理解的是,虽然图1-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种基于智能电表操作***的进程测试装置,包括:获取模块502、第一测试模块504、第二测试模块506和输出模块508,其中:
获取模块502,用于获取智能电表的操作***中实现与控制进程功能的待检测代码。
第一测试模块504,用于对待检测代码进行第一测试,得到第一测试结果;第一测试包括编码规范测试、漏洞测试、质量测试以及覆盖率测试;质量测试包括规模检测、复杂度检测、复用性检测中的至少一种。
第二测试模块506,用于对待检测代码进行第二测试,得到第二测试结果;第二测试包括进程管理测试、进程通信测试、时间测试以及安全测试;进程管理测试包括进程创建和删除测试、优先级测试以及状态切换测试中的至少一种。
输出模块508,用于根据第一测试结果以及第二测试结果,输出智能电表的操作***对应的进程测试报告。
在一个实施例中,第一测试模块504,具体用于将待检测代码与预设编码标准进行比对,得到比对结果;比对结果包括所述待检测代码的格式与预设编码标准的符合度;预设编码标准基于智能电表的操作***得到;根据符合度,得到规范性测试结果;第一测试结果中包含规范性测试结果。
在一个实施例中,第一测试模块504,具体用于检测待检测代码中是否存在符合预设漏洞规则的漏洞数据,得到漏洞测试结果;第一测试结果中包含漏洞测试结果;预设漏洞规则基于智能电表的内存信息、智能电表的用户信息以及智能电表对应的数据库得到。
在一个实施例中,第一测试模块504,具体用于根据待检测代码,生成预设测试用例;根据预设测试用例,对待检测代码进行条件组合覆盖测试以及路径覆盖测试,得到覆盖率测试结果;第一测试结果中包含覆盖率测试结果。
在一个实施例中,第二测试模块506,具体用于生成发送进程以及接收进程,发送进程以及接收进程通过预设接口进行通信;通过预设接口,利用发送进程,向接收进程发送预设电力数据,以使接收进程接收预设电力数据;将接收进程接收的电力数据与预设电力数据进行比对,得到比对结果;根据比对结果,得到通信测试结果;第二测试结果中包含通信测试结果。
在一个实施例中,第二测试模块506,具体用于生成第一进程以及第二进程;第一进程以及第二进程在运行时分别输出对应的脉冲信号;将第一进程设置为运行状态,将第二进程设置为待运行状态;终止第一进程,获取第一进程对应的脉冲信号停止输出的第一时间;启动第二进程,获取第二进程开始输出对应的脉冲信号的第二时间;根据第一时间以及第二时间,得到时间测试结果;第二测试结果中包含时间测试结果。
在一个实施例中,第二测试模块506,具体用于生成多个进程;将多个进程设置为运行状态;将多个运行的进程中的一个进程设置为异常状态;检测其他进程的运行状态;根据其他进程的运行状态,得到安全测试结果;第二测试结果中包含安全测试结果。
关于进程测试装置的具体限定可以参见上文中对于进程测试方法的限定,在此不再赘述。上述进程测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是智能电表,其内部结构图可以如图6所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种进程测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现如上述的基于智能电表操作***的进程测试方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述的基于智能电表操作***的进程测试方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。