CN110554932A - 一种api模块异常检测方法 - Google Patents
一种api模块异常检测方法 Download PDFInfo
- Publication number
- CN110554932A CN110554932A CN201910711821.9A CN201910711821A CN110554932A CN 110554932 A CN110554932 A CN 110554932A CN 201910711821 A CN201910711821 A CN 201910711821A CN 110554932 A CN110554932 A CN 110554932A
- Authority
- CN
- China
- Prior art keywords
- api
- module
- api module
- function
- detection method
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种api模块异常检测方法,包括以下步骤:S1、建立api检测线程;S2、设定api模块函数返回的最大超时时间;S3、调用所需要的api模块函数,执行相应的api模块功能;S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。本发明具有如下优点:1、在实际使用中,通过此方法能快速有效地发现模块提供方的api阻塞或超时返回异常;2、快速排查及定位异常情况,生成日志文件,并进行出错处理;3、对于其他项目模块,也能通过此方法检测模块是否存在死锁。
Description
技术领域
本发明涉及各种软件开发领域,具体地涉及一种api模块异常检测方法。
背景技术
互联网的进步与发展极大地带动了应用软件的需求,随着软件需求的复杂化,软件的模块化开发需求越来越多,现今基本所有的开发都离不开模块化。
模块化的开发引入了新的问题,当开发人员使用所在公司的其它项目组成员的api库,或者使用其它公司提供的api库时,api模块的提供方由于设备稳定性、网络因素、测试不全等原因,api模块会出现在规定时间内无法正常返回结果数据,或者一直阻塞在某个api调用里面;现有的技术没有给出针对这种情况的解决方案,而出现这种问题时,又经常会有一定的偶然性、不可重现性、环境依赖性,这给排查及定位问题带来很大的难度,需要花费很多时间与精力才能找出具体是哪个api出现的问题。
发明内容
本发明要解决的技术问题,在于提供一种api模块异常检测方法,能有效排查定位出现异常的api模块。
本发明是这样实现的:一种api模块异常检测方法,包括以下步骤:
S1、建立api检测线程;
S2、设定api模块函数返回的最大超时时间;
S3、调用所需要的api模块函数,执行相应的api模块功能;
S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。
进一步地,所述步骤S2具体为:设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。
进一步地,所述步骤S2后还包括:S2-1、所述api检测线程检测api队列中所保存的api模块调用信息。
进一步地,所述步骤S2-1具体为:所述api检测线程每隔T时间检测一次api队列中的api模块调用信息。
进一步地,所述T时间设定为1秒或500毫秒。
进一步地,所述步骤S4后还包括:S4-1、删除所述api队列中正常调用的api模块调用信息。
进一步地,还包括步骤S5、对于调试版本,先报告api队列中出错的api调用信息,然后进行assert函数操作,强制退出应用程序;对于发布版本时,先报告api队列中出错的api调用信息,然后进行系统出错恢复。
进一步地,所述报告api队列中出错的api调用信息具体为:生成出错日志。
进一步地,所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复。
进一步地,所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。
本发明具有如下优点:1、在实际使用中,通过此方法能快速有效地发现模块提供方的api阻塞或超时返回异常;2、快速排查及定位异常情况,生成日志文件,并进行出错处理;3、对于其他项目模块,也能通过此方法检测模块是否存在死锁。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明的api模块异常检测方法的流程示意图。
图2为本发明的api调用部分的流程示意图。
图3为本发明的api模块异常检测方法的框架示意图。
具体实施方式
参阅图1至图3,本发明的api模块异常检测方法的优选实施例,包括以下步骤:
S1、建立api检测线程;其作用是检测api模块函数在调用后返回的时间。
S2、设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。每个api队列可保存零或多个api模块调用信息。
实际项目中,不一定是api队列,也可以是建立保存api模块调用信息的api栈;在使用到设备驱动厂家提供的api模块库,在读取wifi列表数据的api模块调用前,先将该读取wifi列表数据的api模块的调用信息保存在api队列中,并设定最大超时时间为10秒。
S2-1、所述api检测线程每隔T时间检测一次api队列中所保存的api模块调用信息。所述T时间设定为1秒;即每隔1秒时间,api检测线程就检测api队列中用于读取wifi列表数据的api模块的调用信息;。
S3、调用所需要的api模块函数,执行相应的api模块功能;即实际进行读取wifi列表数据的api模块调用。
S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。
S4-1、删除所述api队列中正常调用的api模块调用信息。即如果读取wifi列表数据的api模块在10秒内有返回结果数据,则删除api队列中用于读取wifi列表数据的api模块调用信息。然后api检测线程继续定时检测。
对于异常的api模块调用信息,其原因可能是电池电量不稳定等因素,如电池电量太低,同时打电话与wifi定位启动时,读取wifi列表数的api会一直阻塞在里面,则进行异常处理操作。
S5、异常处理:对于调试版本的软件,先报告api队列中异常的读取wifi列表数据的api调用信息,生成出错日志保存在设备中,或者上传这个出错日志到服务器,出错日志包括对应api模块的调用起始时间、api标识、调用位置标识与最大超时时间;然后进行assert函数操作,强制退出应用程序;
对于发布版本的软件,先报告api队列中出错的读取wifi列表数据的api模块调用信息,生成出错日志,然后进行系统出错恢复;所述系统出错恢复具体有两个方案:
其一,标记与api模块相应的设备或api为不可用,若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复;
其二,标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。
其中api队列能保存多个api模块的调用信息,api检测线程每隔T时间就检测api队列中所保存的多个api模块的调用情况,通过此方法能把具体调用的时间、位置等信息获取出来,出现问题时能有效减小排查定位该问题的时间。
在开发过程中,对于另一项目组提供的系统定时器功能,由于加锁机制有个地方没有释放,导致api死锁,也可通过此方法确定相应的api死锁的位置与时间。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (10)
1.一种api模块异常检测方法,其特征在于:包括以下步骤:
S1、建立api检测线程;
S2、设定api模块函数返回的最大超时时间;
S3、调用所需要的api模块函数,执行相应的api模块功能;
S4、api检测线程判断api模块函数是否在所述最大超时时间内返回:如果是,则表示本次调用的api模块为正常;如果否,则该api模块为异常。
2.根据权利要求1所述的api模块异常检测方法,其特征在于:所述步骤S2具体为:设定api模块函数返回的最大超时时间;建立api队列,保存每次将要调用的api模块调用信息;该api模块调用信息包括调用起始时间、api标识、调用位置标识与所述最大超时时间。
3.根据权利要求2所述的api模块异常检测方法,其特征在于:所述步骤S2后还包括:S2-1、所述api检测线程检测api队列中所保存的api模块调用信息。
4.根据权利要求3所述的api模块异常检测方法,其特征在于:所述步骤S2-1具体为:所述api检测线程每隔T时间检测一次api队列中的api模块调用信息。
5.根据权利要求4所述的api模块异常检测方法,其特征在于:所述T时间设定为1秒或500毫秒。
6.根据权利要求3所述的api模块异常检测方法,其特征在于:所述步骤S4后还包括:S4-1、删除所述api队列中正常调用的api模块调用信息。
7.根据权利要求1所述的api模块异常检测方法,其特征在于:还包括步骤S5、异常处理:对于调试版本,先报告api队列中出错的api调用信息,然后进行assert函数操作,强制退出应用程序;对于发布版本时,先报告api队列中出错的api调用信息,然后进行系统出错恢复。
8.根据权利要求7所述的api模块异常检测方法,其特征在于:所述报告api队列中出错的api调用信息具体为:生成出错日志。
9.根据权利要求7所述的api模块异常检测方法,其特征在于:所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为非致命错误或非必要功能,则进行语音或显示提示,跳过相应模块的功能进行恢复。
10.根据权利要求7所述的api模块异常检测方法,其特征在于:所述系统出错恢复具体为:标记与api模块相应的设备或api为不可用,若模块为致命错误或必要功能,则进行语音或显示提示,然后应用重启或系统重启恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711821.9A CN110554932A (zh) | 2019-08-02 | 2019-08-02 | 一种api模块异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711821.9A CN110554932A (zh) | 2019-08-02 | 2019-08-02 | 一种api模块异常检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110554932A true CN110554932A (zh) | 2019-12-10 |
Family
ID=68736956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910711821.9A Pending CN110554932A (zh) | 2019-08-02 | 2019-08-02 | 一种api模块异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110554932A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434394A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 软件的异常处理方法及装置、存储介质及电子装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288939A1 (en) * | 2006-05-23 | 2007-12-13 | Microsoft Corporation | Detecting Deadlocks In Interop-Debugging |
CN102968371A (zh) * | 2012-11-26 | 2013-03-13 | 武汉天喻信息产业股份有限公司 | 测试java api单元组件的方法及装置 |
CN106709325A (zh) * | 2016-11-11 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种监控程序的方法及装置 |
CN107291558A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
-
2019
- 2019-08-02 CN CN201910711821.9A patent/CN110554932A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288939A1 (en) * | 2006-05-23 | 2007-12-13 | Microsoft Corporation | Detecting Deadlocks In Interop-Debugging |
CN102968371A (zh) * | 2012-11-26 | 2013-03-13 | 武汉天喻信息产业股份有限公司 | 测试java api单元组件的方法及装置 |
CN107291558A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 一种应用程序接口死锁监控方法和装置 |
CN106709325A (zh) * | 2016-11-11 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种监控程序的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434394A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 软件的异常处理方法及装置、存储介质及电子装置 |
CN113434394B (zh) * | 2021-06-22 | 2023-07-21 | 青岛海尔科技有限公司 | 软件的异常处理方法及装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788540B2 (en) | Tracking down elusive intermittent failures | |
US9880897B2 (en) | Failure mode identification and reporting | |
US10552242B2 (en) | Runtime failure detection and correction | |
CN112256507B (zh) | 芯片故障诊断方法、装置、可读存储介质及电子设备 | |
US7734956B2 (en) | Process management system | |
KR20110064971A (ko) | 추적점 기반의 고장 진단/복구 시스템 및 그 방법 | |
JP5198154B2 (ja) | 障害監視システム及びデバイスと監視装置並びに障害監視方法 | |
CN101145983B (zh) | 一种网管系统的自诊断和自恢复子系统及方法 | |
US7673178B2 (en) | Break and optional hold on failure | |
CN113971031A (zh) | 软件包依赖关系检查方法及装置 | |
US7246276B2 (en) | Error tolerant modular testing of services | |
CN110554932A (zh) | 一种api模块异常检测方法 | |
JPH10214208A (ja) | ソフトウェアの異常監視方式 | |
CN101706752B (zh) | 一种软件错误现场定位的方法及装置 | |
CN111124724B (zh) | 一种分布式块存储系统的节点故障测试方法及装置 | |
CN111078454A (zh) | 一种云平台配置恢复方法及装置 | |
CN113886122B (zh) | 一种系统运行异常处理方法、装置、设备及存储介质 | |
CN115756914A (zh) | 测试方法、系统及测试平台和测试机器 | |
CN115964218A (zh) | 高速串行计算机扩展总线设备故障的识别方法及装置 | |
CN114217925A (zh) | 一种实现异常自动重启的业务程序运行监控方法及系统 | |
JP2006023910A (ja) | サーバ障害回復方法およびサーバ障害回復システム | |
CN111698116B (zh) | 一种资源释放方法、装置、设备及机器可读存储介质 | |
CN100511161C (zh) | 一种解决芯片失效故障的方法 | |
US8181162B2 (en) | Manager component for checkpoint procedures | |
CN114253846B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191210 |
|
RJ01 | Rejection of invention patent application after publication |