CN112395185B - 一种程序测试的方法及相关装置 - Google Patents

一种程序测试的方法及相关装置 Download PDF

Info

Publication number
CN112395185B
CN112395185B CN201910768347.3A CN201910768347A CN112395185B CN 112395185 B CN112395185 B CN 112395185B CN 201910768347 A CN201910768347 A CN 201910768347A CN 112395185 B CN112395185 B CN 112395185B
Authority
CN
China
Prior art keywords
program
tested
test
objective function
identifier
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
Application number
CN201910768347.3A
Other languages
English (en)
Other versions
CN112395185A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910768347.3A priority Critical patent/CN112395185B/zh
Publication of CN112395185A publication Critical patent/CN112395185A/zh
Application granted granted Critical
Publication of CN112395185B publication Critical patent/CN112395185B/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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

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

本申请实施例提供了一种程序测试的方法及相关装置,通过GDB可向运行中的待测程序进行动态调试,可以随时修改待测程序的执行逻辑,不会因测试需求的改变而去重新修改待测程序的源代码,因此,本申请可以节省测试资源和时间成本,提高测试效率。该方法包括:接收测试请求;启动与测试请求对应的待测程序;当待测程序运行时,通过GDB向待测程序添加与测试请求对应的测试代码,其中,测试代码用于修改待测程序的执行逻辑;当待测程序运行结束时,根据测试代码获取待测程序的测试结果。总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。

Description

一种程序测试的方法及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种程序测试的方法及相关装置。
背景技术
随着互联网的快速发展,用户对客户端上的程序需求也随之增多。为了保证程序在运行时能够稳定实现相应的功能,通常需要对程序进行测试。
常用的程序测试方式一般基于面向切面编程思想,预先考虑待测程序的所有目标函数、测试数据、业务场景等等因素,通过代码注入工具对待测程序的源代码进行修改,即对待测程序中的目标函数额外开发代码,使得待测程序的原有代码框架被修改,能够应用于具体的测试场景中,以实现程序测试。
然而,上述程序测试方式需要以待测程序的源代码为基础进行修改和调试,若测试过程中需要增加额外的测试场景,则需要对待测程序的源代码再次进行修改,并重新运行一次,需要耗费较多的测试资源和时间成本,导致程序测试效率较低。
发明内容
本申请实施例提供了一种程序测试的方法及相关装置,可以节省测试资源和时间成本,提高测试效率。
本申请实施例第一方面提供一种程序测试的方法,包括:
接收测试请求;
启动与所述测试请求对应的待测程序;
当所述待测程序运行时,通过GDB向所述待测程序添加与所述测试请求对应的测试代码,其中,所述测试代码用于修改所述待测程序的执行逻辑;
当所述待测程序运行结束时,根据所述测试代码获取所述待测程序的测试结果。
本申请实施例第二方面提供一种程序测试的装置,包括:
接收模块,用于接收测试请求;
启动模块,用于启动与所述测试请求对应的待测程序;
添加模块,用于当所述待测程序运行时,通过GDB向所述待测程序添加与所述测试请求对应的测试代码,其中,所述测试代码用于修改所述待测程序的执行逻辑;
获取模块,用于当所述待测程序运行结束时,根据所述测试代码获取所述待测程序的测试结果。
基于第二方面,本申请实施例第二方面的第一种实现方式中,所述测试请求包括与所述待测程序对应的第一标识,所述启动模块还用于启动与所述第一标识对应的待测程序。
基于第二方面或第二方面的第一种实现方式,本申请实施例第二方面的第二种实现方式中,所述测试请求包括与目标函数对应的第二标识和与所述测试代码对应的变量修改信息,所述目标函数为所述待测程序所包含的至少一个函数,所述添加模块还用于:
当所述待测程序运行时,通过GDB在所述待测程序中,确定与所述第二标识对应的所述目标函数;
通过所述GDB将与所述变量修改信息对应的所述测试代码添加至所述目标函数中;
通过所述GDB在所述测试代码的添加处设置断点。
基于第二方面的第二种实现方式中,本申请实施例第二方面的第三种实现方式中,所述变量修改信息包括目标变量与所述目标变量的修改值。
基于第二方面的第二种实现方式中,本申请实施例第二方面的第四种实现方式中,所述测试请求还包括命中次数和第三标识,所述第三标识用于指示执行所述目标函数的剩余原代码的情况,所述获取模块还用于:
当运行所述待测程序至所述目标函数的所述断点时,若所述目标函数的运行次数小于所述命中次数,则继续执行所述目标函数的原代码直至所述目标函数的运行次数等于所述命中次数;
若所述目标函数的运行次数等于所述命中次数,则执行所述测试代码;
在执行所述测试代码后,若所述第三标识为第一子标识,则执行所目标函数的剩余原代码,并执行所述待测程序的剩余函数,得到测试结果;
若所述第三标识为第二子标识,则执行所述待测程序的剩余函数,得到测试结果。
本申请实施例第三方面提供一种终端设备,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
接收测试请求;
启动与所述测试请求对应的待测程序;
当所述待测程序运行时,通过GDB向所述待测程序添加与所述测试请求对应的测试代码,其中,所述测试代码用于修改所述待测程序的执行逻辑;
当所述待测程序运行结束时,根据所述测试代码获取所述待测程序的测试结果。所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
本申请实施例第四方面一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
本申请实施例第五方面、一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种程序测试的方法,包括:在接收测试请求后,首先启动与测试请求对应的待测程序。当待测程序运行时,再通过GDB向待测程序添加与测试请求对应的测试代码,其中,测试代码用于修改待测程序的执行逻辑。最后在待测程序运行结束时,根据测试代码获取待测程序的测试结果。本申请实施例通过GDB向运行中的待测程序添加测试代码,由于测试代码能够修改待测程序的执行逻辑,使得待测程序能够实现与测试代码对应的测试场景,进而得到测试结果,由于通过GDB可向运行中的待测程序进行动态调试,可以随时修改待测程序的执行逻辑,不会因测试需求的改变而去重新修改待测程序的源代码,因此,本申请可以节省测试资源和时间成本,提高测试效率。
附图说明
图1为本申请实施例中程序测试的方法的一个流程示意图;
图2为本申请实施例中程序测试的方法的一个应用例示意图;
图3为本申请实施例中测试请求的输入界面示意图;
图4为本申请实施例中程序测试的装置的一个结构示意图;
图5为本申请实施例中程序测试的装置的一个结构示意图。
具体实施方式
本申请实施例提供了一种程序测试的方法及相关装置,可以节省测试资源和时间成本,提高测试效率。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请应用于程序测试场景,具体地,当需要对终端设备上的某个待测程序进行基于某种测试需求下的测试时,可以通过革奴计划调试器(GNU Debugger,GDB)对该待测程序进行调试,以使得待测程序运行在与测试需求对应的测试场景中,例如,当待测程序为支付程序时,若针对某笔交易,用户由于某些因素(例如网络延迟)输入了多次交易请求,为了避免重复扣费(测试需求),则可以通过GDB对该支付程序进行测试,使得支付程序能够在多个交易请求下只扣费一次(测试场景)。
需要说明的是,GDB是一款尤尼斯(Unix)平台下的调试器,因此,本申请实施例中的待测程序通常指适用于运行在Unix系统、类Unix(Linux)系统的程序。应理解,前述类程序并不对本申请实施例中待测程序的类型构成限制,只要能够适用于GDB进行调试,均可通过本申请实施例中程序测试的方法进行测试。
以下从终端设备的角度,对本申请实施例中程序测试的方法进行具体说明,图1为本申请实施例中程序测试的方法的一个流程示意图,请参阅图1,本申请实施例中程序测试的方法的一个实施例,包括:
101、接收测试请求;
本实施例中,当测试人员需要测试某个程序时,可以向终端设备的请求输入界面输入测试请求,终端设备接收到该测试请求后,则可根据该测试请求确定相应的待测程序。
102、启动与测试请求对应的待测程序;
在确定待测程序后,则可以启动该待测程序,使得待测程序开始运行。
103、当待测程序运行时,通过GDB向待测程序添加与测试请求对应的测试代码,其中,测试代码用于修改待测程序的执行逻辑;
当待测程序运行时,可以调用GDB,并通过GDB向待测程序添加与测试请求对应的测试代码,由于测试代码可以修改待测程序的执行逻辑,可以改变待测程序的运行结果。具体的,本实施例中的测试代码与测试请求对应,测试请求基于测试人员的测试需求所生成,因此,原有的待测程序在搭载测试代码后,可以实现与测试需求所对应的测试场景,例如输出一个新的运行结果,又如执行一种新的操作等等。
104、当待测程序运行结束时,根据测试代码获取待测程序的测试结果。
当待测程序运行结束后,即待测程序在原有代码的基础上,还执行了测试代码,进而使得待测程序的整个运行逻辑发生变化,从而使得待测程序的运行结果发生变化,具体的,终端设备可将该运行结果作为测试结果,也可根据该运行结果生成测试结果,例如,根据待测程序的运行结果生成相应的日志,以供用户使用等,此处不做具体限制。
本实施例通过GDB向运行中的待测程序添加测试代码,由于测试代码能够修改待测程序的执行逻辑,使得待测程序能够实现与测试代码对应的测试场景,进而得到测试结果,由于通过GDB可向运行中的待测程序进行动态调试,可以随时修改待测程序的执行逻辑,不会因测试需求的改变而去重新修改待测程序的源代码,因此,本申请可以节省测试资源和时间成本,提高测试效率。
可选的,基于图1所对应的实施例,本申请实施例中程序测试的方法的一个可选实施例中,测试请求包括与待测程序对应的第一标识,启动与测试请求对应的待测程序包括:
启动与第一标识对应的待测程序。
本实施例中,测试人员在终端设备的请求输入界面上,可以输入与待测程序对应的第一标识,例如待测程序的名字,因此,向终端设备输入的测试请求可以包括第一标识,进而终端设备能够确定与该第一标识对应的待测程序,以执行后续的测试操作。
可选的,基于图1所对应的各个实施例,本申请实施例中程序测试的方法的一个可选实施例中,测试请求包括与目标函数对应的第二标识和与测试代码对应的变量修改信息,目标函数为待测程序所包含的至少一个函数,通过GDB向待测程序添加与测试请求对应的测试代码包括:
通过GDB在待测程序中,确定与第二标识对应的目标函数;
通过GDB将与变量修改信息对应的测试代码添加至目标函数中;
通过GDB在测试代码的添加处设置断点。
本实施例中,测试人员在终端设备的请求输入界面上,还可以输入与待测程序中需要进行测试的目标函数所对应的第二标识,例如该目标函数的函数名,更进一步的,还可以输入与测试代码对应的变量修改信息,该变量修改信息包括目标函数中所需修改的目标变量与目标变量的修改值,例如,将变量A的值修改为5。
在待测程序运行的过程中,基于第二标识,GDB可以在待测程序中确定与第二标识对应的目标函数。基于变量修改信息,GDB可以生成相应的测试代码,然后将测试代码添加至目标函数中,并在测试代码的修改处设置一个断点。为了便于立理解,依旧以上述例子进行说明,设目标函数中的某一行代码包含变量A,且该变量A的值为3,此时,GDB可在该行代码下方增添基于上述变量修改信息的测试代码,即将变量A的值为5。因此,若程序执行了该测试代码,变量A的最新取值5可以覆盖原先的取值3,进而使得目标函数输出一个新的返回值或执行一个新的操作,则将使得整个待测程序的运行结果发生变化。
在上述过程中,目标函数中所设置的断点可以视为一种判断条件,一旦执行至断点处,则触发该判断条件,该判断条件的逻辑可以设置为:若满足该条件,则执行测试代码,若不满足,则不执行测试代码。
可选的,基于图1所对应的各个实施例,本申请实施例中程序测试的方法的一个可选实施例中,测试请求还包括命中次数和第三标识,第三标识用于指示执行目标函数的剩余原代码的情况,当待测程序运行结束时,根据测试代码获取待测程序的测试结果包括:
当运行待测程序至目标函数的断点时,若目标函数的运行次数小于命中次数,则继续执行目标函数的原代码直至目标函数的运行次数等于命中次数;
若目标函数的运行次数等于命中次数,则执行测试代码;
在执行测试代码后,若第三标识为第一子标识,则执行目标函数的剩余原代码,并执行待测程序的剩余函数,得到测试结果;
若第三标识为第二子标识,则执行待测程序的剩余函数,得到测试结果。
本实施例中,测试人员在终端设备的请求输入界面上,还可以输入与目标函数的命中次数以及第三标识,其中,命中次数用于作为断点的判断条件,而第三标识则用于指示执行目标函数的剩余原代码的情况。
当待测程序运行至目标函数的断点处时,可触发判断条件,在某些程序中,一般会包含一个或部分需要循环执行的函数,若此类函数为目标函数,通常不会令其每次循环过程都执行一遍测试代码,而是限定在该目标函数的某一次循环过程执行测试代码,即命中目标函数。具体的,当目标函数的运行次数(即循环次数)小于命中次数时,则在当前次循环中不执行测试代码,且继续执行目标函数的剩余原代码,结束当前次循环后,则进入下一次循环,直至目标函数的运行次数等于命中次数。当目标函数的运行次数等于命中次数时,则在当前次循环中执行测试代码。
执行完测试代码后,则需要根据第三标识的类型确定是否继续执行目标函数的剩余代码,若第三标识为第一子标识,则执行目标函数的剩余原代码,此时目标函数则执行完毕,然后执行待测程序的剩余函数,以使得待测进程完成运行,得到测试结果。若第三标识为第二子标识,则不执行目标函数的剩余原代码,则目标函数结束运行(执行完毕),然后执行待测程序的剩余函数,以使得待测进程完成运行,得到测试结果。
为了便于理解,以下结合两种具体应用场景对上述过程的应用进行说明。
场景一:在用户关于某笔订单的支付扣费程序中,用户由于某种因素发送了多次支付请求,在该程序中设立了一个支付验证函数,一次请求通过验证则会扣费一次,测试人员为了避免重复扣费,可在该函数中添加测试代码,例如将该支付验证函数中的金额变量的进行修改(将该订单的原金额修改为新的金额),并将命中次数设为2。因此,第一次请求通过函数验证后(即执行函数的所有原代码)返回扣费结果为原金额,而相对于第二次请求,当执行函数至测试代码处,此时命中函数,则执行函数的测试代码,由于第三标识为第一子标识,则继续执行完函数的剩余代码,然后返回扣费结果为新的金额,此时,系统将原金额确定为正常扣费信息,执行扣费操作,并将新的金额确定为错误信息,不执行扣费,执行完程序的其余函数后,最终返回测试结果,该测试结果包含原金额的扣费操作结果以及重复请求的错误信息。
场景二:若待测程序用于查询用户的信息,其中程序中某个函数用于判断是否调用用户的账户,若该函数接收到正常调用请求,可以正常执行程序并返回用户的账户信息,若由于网络延迟、网络波动等意外因素导致请求异常,测试人员可对该函数的请求变量进行设置,并将第三标识设置为第二子标识,若为异常的请求,则直接终止函数的执行,然后执行完程序的其余函数后,最终返回测试结果,该测试结果包含请求异常信息。在此类场景中,可以将命中次数设置为1,即每次请求均进行测试。
为了便于进一步的理解,以下将结合一个具体应用例对本申请实施例中程序测试的方法作进一步的介绍。图2为本申请实施例中程序测试的方法的一个应用例示意图,请参阅图2,本申请实施例中程序测试的方法的一个应用例,包括:
201、接收测试指令;
本应用例中,终端设备可以展示如图3所示的显示界面供用户输入测试请求。图3为本申请实施例中测试请求的输入界面示意图,请参阅图3,界面上的输入栏可以包括但不限于待测进程名、目标函数名、修改变量(即上述变量修改信息)、命中次数、回调函数标识(即上述第三标识)等等。
202、启动测试指令指向的待测程序;
203、通过GDB根据测试指令生成测试代码,并将测试代码添加至待测程序中;
204、判断是否命中待测程序的目标函数;
若未命中目标函数,则执行步骤205,若命中目标函数,则执行步骤206。
205、继续循环执行目标函数直至命中;
206、执行测试代码;
207、判断是否执行目标函数的剩余原代码;
若需要执行目标函数的剩余原代码,则执行步骤208,若不需要执行目标函数的剩余原代码,则执行步骤209。
208、执行目标函数的剩余原代码;
209、执行待测程序的其余函数,得到测试结果。
当执行完步骤209后,则完成测试,可以得到测试结果。
本应用例通过GDB向运行中的待测程序添加测试代码,由于测试代码能够修改待测程序的执行逻辑,使得待测程序能够实现与测试代码对应的测试场景,进而得到测试结果,由于通过GDB可向运行中的待测程序进行动态调试,可以随时修改待测程序的执行逻辑,不会因测试需求的改变而去重新修改待测程序的源代码,因此,本申请可以节省测试资源和时间成本,提高测试效率。
以上是对本申请实施例中程序测试的方法的具体说明,以下将对本申请实施例中程序测试的装置的结构和连接关系进行具体介绍,图4为本申请实施例中程序测试的装置的一个结构示意图,请参阅图4,本申请实施例中程序测试的装置的一个实施例,包括:
接收模块401,用于接收测试请求;
启动模块402,用于启动与测试请求对应的待测程序;
添加模块403,用于当待测程序运行时,通过GDB向待测程序添加与测试请求对应的测试代码,其中,测试代码用于修改待测程序的执行逻辑;
获取模块404,用于当待测程序运行结束时,根据测试代码获取待测程序的测试结果。
可选的,基于图4对应的实施例,本申请实施例中程序测试的装置的一个可选实施例中,测试请求包括与待测程序对应的第一标识,启动模块还用于启动与第一标识对应的待测程序。
可选的,基于图4对应的各个实施例,本申请实施例中程序测试的装置的一个可选实施例中,测试请求包括与目标函数对应的第二标识和与测试代码对应的变量修改信息,目标函数为待测程序所包含的至少一个函数,添加模块还用于:
当待测程序运行时,通过GDB在待测程序中,确定与第二标识对应的目标函数;
通过GDB将与变量修改信息对应的测试代码添加至目标函数中;
通过GDB在测试代码的添加处设置断点。
可选的,基于图4对应的各个实施例,本申请实施例中程序测试的装置的一个可选实施例中,变量修改信息包括目标变量与目标变量的修改值。
可选的,基于图4对应的各个实施例,本申请实施例中程序测试的装置的一个可选实施例中,测试请求还包括命中次数和第三标识,第三标识用于指示执行目标函数的剩余原代码的情况,获取模块还用于:
当运行待测程序至目标函数的断点时,若目标函数的运行次数小于命中次数,则继续执行目标函数的原代码直至目标函数的运行次数等于命中次数;
若目标函数的运行次数等于命中次数,则执行测试代码;
在执行测试代码后,若第三标识为第一子标识,则执行所目标函数的剩余原代码,并执行待测程序的剩余函数,得到测试结果;
若第三标识为第二子标识,则执行待测程序的剩余函数,得到测试结果。
本申请实施例还提供了一种终端设备,如图5所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
图5为本申请实施例中终端设备的一个结构示意图。参考图5,手机包括:射频(radio frequency,RF)电路510、存储器520、输入单元530、显示单元540、传感器550、音频电路560、无线保真(wireless fidelity,WiFi)模块570、处理器580、以及电源590等部件。本领域技术人员可以理解,图5中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对手机的各个构成部件进行具体的介绍:
RF电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将设计上行的数据发送给基站。通常,RF电路510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图5中,触控面板531与显示面板541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器561,传声器562可提供用户与手机之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路510以发送给比如另一手机,或者将音频数据输出至存储器520以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行手机的各种功能和处理数据。可选的,处理器580可包括一个或多个处理单元;可选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
手机还包括给各个部件供电的电源590(比如电池),可选的,电源可以通过电源管理系统与处理器580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器580还具有以下功能:
接收测试请求;
启动与测试请求对应的待测程序;
当待测程序运行时,通过GDB向待测程序添加与测试请求对应的测试代码,其中,测试代码用于修改待测程序的执行逻辑;
当待测程序运行结束时,根据测试代码获取待测程序的测试结果。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上所述程序测试的方法。
本申请实施例还涉及一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上所述程序测试的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (8)

1.一种程序测试的方法,其特征在于,包括:
接收测试请求;所述测试请求包括命中次数、第三标识、与目标函数对应的第二标识和与测试代码对应的变量修改信息,所述目标函数为待测程序所包含的至少一个函数,所述第三标识用于指示执行所述目标函数的剩余原代码的情况,所述命中次数用于作为断点的判断条件;
启动与所述测试请求对应的待测程序;
通过GDB在所述待测程序中,确定与所述第二标识对应的所述目标函数;
通过所述GDB将与所述变量修改信息对应的所述测试代码添加至所述目标函数中;
通过所述GDB在所述测试代码的添加处设置断点,其中,所述测试代码用于修改所述待测程序的执行逻辑;
当运行所述待测程序至所述目标函数的所述断点时,若所述目标函数的运行次数小于所述命中次数,则继续执行所述目标函数的原代码直至所述目标函数的运行次数等于所述命中次数;
若所述目标函数的运行次数等于所述命中次数,则执行所述测试代码;
在执行所述测试代码后,若所述第三标识为第一子标识,则执行所述目标函数的剩余原代码,并执行所述待测程序的剩余函数,得到测试结果;
若所述第三标识为第二子标识,则执行所述待测程序的剩余函数,得到测试结果。
2.根据权利要求1所述的程序测试的方法,其特征在于,所述测试请求包括与所述待测程序对应的第一标识,所述启动与所述测试请求对应的待测程序包括:
启动与所述第一标识对应的待测程序。
3.根据权利要求1所述的程序测试的方法,其特征在于,所述变量修改信息包括目标变量与所述目标变量的修改值。
4.一种程序测试的装置,其特征在于,包括:
接收模块,用于接收测试请求;所述测试请求包括命中次数、第三标识、与目标函数对应的第二标识和与测试代码对应的变量修改信息,所述目标函数为待测程序所包含的至少一个函数,所述第三标识用于指示执行所述目标函数的剩余原代码的情况,所述命中次数用于作为断点的判断条件;
启动模块,用于启动与所述测试请求对应的待测程序;
添加模块,用于当所述待测程序运行时,通过GDB向所述待测程序添加与所述测试请求对应的测试代码,其中,所述测试代码用于修改所述待测程序的执行逻辑;
获取模块,用于当所述待测程序运行结束时,根据所述测试代码获取所述待测程序的测试结果;
所述添加模块还用于:当待测程序运行时,通过GDB在待测程序中,确定与第二标识对应的目标函数;通过GDB将与变量修改信息对应的测试代码添加至目标函数中;通过GDB在测试代码的添加处设置断点;
获取模块还用于:当运行待测程序至目标函数的断点时,若目标函数的运行次数小于命中次数,则继续执行目标函数的原代码直至目标函数的运行次数等于命中次数;若目标函数的运行次数等于命中次数,则执行测试代码;在执行测试代码后,若第三标识为第一子标识,则执行所目标函数的剩余原代码,并执行待测程序的剩余函数,得到测试结果;若第三标识为第二子标识,则执行待测程序的剩余函数,得到测试结果。
5.根据权利要求4所述的程序测试的装置,其特征在于,所述测试请求包括与所述待测程序对应的第一标识,所述启动模块还用于启动与所述第一标识对应的待测程序。
6.一种终端设备,其特征在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
接收测试请求;所述测试请求包括命中次数、第三标识、与目标函数对应的第二标识和与测试代码对应的变量修改信息,所述目标函数为待测程序所包含的至少一个函数,所述第三标识用于指示执行所述目标函数的剩余原代码的情况,所述命中次数用于作为断点的判断条件;
启动与所述测试请求对应的待测程序;
通过GDB在所述待测程序中,确定与所述第二标识对应的所述目标函数;
通过所述GDB将与所述变量修改信息对应的所述测试代码添加至所述目标函数中;
通过所述GDB在所述测试代码的添加处设置断点,其中,所述测试代码用于修改所述待测程序的执行逻辑;
当运行所述待测程序至所述目标函数的所述断点时,若所述目标函数的运行次数小于所述命中次数,则继续执行所述目标函数的原代码直至所述目标函数的运行次数等于所述命中次数;
若所述目标函数的运行次数等于所述命中次数,则执行所述测试代码;
在执行所述测试代码后,若所述第三标识为第一子标识,则执行所述目标函数的剩余原代码,并执行所述待测程序的剩余函数,得到测试结果;
若所述第三标识为第二子标识,则执行所述待测程序的剩余函数,得到测试结果;所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
7.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至3中任一项所述的方法。
8.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1至3中任意一项所述的方法。
CN201910768347.3A 2019-08-15 2019-08-15 一种程序测试的方法及相关装置 Active CN112395185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910768347.3A CN112395185B (zh) 2019-08-15 2019-08-15 一种程序测试的方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910768347.3A CN112395185B (zh) 2019-08-15 2019-08-15 一种程序测试的方法及相关装置

Publications (2)

Publication Number Publication Date
CN112395185A CN112395185A (zh) 2021-02-23
CN112395185B true CN112395185B (zh) 2024-04-12

Family

ID=74603641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910768347.3A Active CN112395185B (zh) 2019-08-15 2019-08-15 一种程序测试的方法及相关装置

Country Status (1)

Country Link
CN (1) CN112395185B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761184A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 程序的代码段测试方法、装置和系统
CN107590066A (zh) * 2016-07-08 2018-01-16 广州市动景计算机科技有限公司 应用程序的测试方法、设备及可编程设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10127138B2 (en) * 2013-06-06 2018-11-13 Microsoft Technology Licensing, Llc. Debugging native code by transitioning from execution in native mode to execution in interpreted mode

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761184A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 程序的代码段测试方法、装置和系统
CN107590066A (zh) * 2016-07-08 2018-01-16 广州市动景计算机科技有限公司 应用程序的测试方法、设备及可编程设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Eclipse的嵌入式软件交叉调试;田丹;李运喜;胡宁;麦先根;;现代电子技术(06);全文 *

Also Published As

Publication number Publication date
CN112395185A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
US10628271B2 (en) Method for information processing and related device
CN107291586B (zh) 一种应用程序的分析方法和装置
CN104516812A (zh) 一种软件测试方法和装置
CN110378107B (zh) 一种安装包检测的方法及相关装置
CN112148579B (zh) 一种用户界面的测试方法和装置
CN108073495B (zh) 应用程序崩溃原因的定位方法及装置
CN110569078B (zh) 一种网页级程序的预加载方法和装置
CN110046497B (zh) 一种函数挂钩实现方法、装置和存储介质
CN112415367B (zh) 驱动芯片异常侦测方法、装置、电子设备及可读存储介质
CN104809055B (zh) 一种基于云平台的应用程序测试方法和装置
CN111273955B (zh) 热修复插件优化方法、装置、存储介质及电子设备
CN111966491B (zh) 统计占用内存的方法及终端设备
CN110213313B (zh) 一种文件上传的方法、相关装置及系统
CN112749074B (zh) 一种测试用例推荐方法以及装置
CN110413497B (zh) 异常监控方法、装置、终端设备及计算机可读存储介质
CN110347578B (zh) 一种应用的测试方法、装置及存储介质
CN115269361A (zh) 一种软件开发工具包的测试方法、装置和可读存储介质
CN111177612B (zh) 一种页面登录鉴权的方法及相关装置
CN111367502A (zh) 一种数值处理方法和装置
CN112395185B (zh) 一种程序测试的方法及相关装置
CN110908586A (zh) 一种键盘的显示方法、装置及终端设备
CN112214699B (zh) 一种页面处理的方法及相关装置
CN108595958B (zh) 一种用于实现跨进程注入的方法、装置及终端
CN113961380A (zh) 一种跨应用修复的方法、装置、设备及存储介质
CN108073508B (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