一种进程控制方法、装置,及系统的制作方法_2

文档序号:9261262阅读:来源:国知局
实施例提供了一种进程控制方法,如图1所示,包括:
[0045]101:注入启动进程启动被控制进程,并获取预置的函数文件;
[0046]上述预置的函数文件,通常可以是技术人员编写的可执行代码。本发明实施例将要实现的是控件级别的控制,这些可执行代码通常是一些编程语言编写的,例如C语言等。这些用编程语言编写的可执行代码不能被进程所直接执行,需要进程依据这些可执行代码加载二进制编码文件并调用库函数实现执行过程。相应的,上述函数文件就是初始执行控制的发出者。
[0047]102:上述注入启动进程将上述函数文件注入上述被控制进程,使上述被控制进程通过上述函数文件加载与上述函数文件对应的二进制编码文件;上述二进制编码文件被上述测试进程加载后,上述二进制编码文件在运行过程中调用上述被控制进程之外的库文件。
[0048]本发明实施例中,注入启动进程控制被控制进程启动,并获得预置的函数文件,将函数文件注入到被控制进程,使之加载到二进制编码文件并通过运行二进制编码文件调用被控制进程之外的库文件。实现了对被控制进程的控件级别的控制,不用重新签名;可以避免被控制的进程发生异常。
[0049]基于控制进程的不同需求,技术人员可以将函数文件针对不同的技术目的进行编写,以下实施例以测试需求进行举例说明,可选地,上述二进制编码文件为二进制编码的测试脚本文件;上述二进制编码文件在运行过程中调用上述被控制进程之外的库文件包括:
[0050]上述测试脚本文件在运行过程中调用安卓自动化测试框架库文件。
[0051]以上实施例中,函数文件最终被编译加载的是二进制的测试脚本文件,那么在测试脚本文件运行过程中,将会实现测试的功能。本实施例中,测试的是调用安卓自动化测试框架库,那么将会对安卓系统下的框架进行测试。可以理解的是,如果测试的对象是其他对象,则可以调用与被测试对象相关的函数库。因此以上调用安卓自动化测试框架库文件不能理解为函数库的唯一调用方式。
[0052]基于前述实施例的说明,在调用安卓自动化测试框架库文件之后具体的测试过程可以如下:上述调用安卓自动化测试框架库文件之后,还包括:
[0053]通过调用安卓自动化测试框架库文件获取控件信息,并对用户界面进行测试。本实施例可以实现对用户界面的自动化测试。
[0054]在本发明实施例中需要对被控制进程进行注入操作,本发明实施例给出了其中的一个优选实现方案,具体如下:上述将上述函数文件注入上述被控制进程,包括:
[0055]通过进程注入函数PTRACE将上述函数文件注入上述被控制进程。
[0056]PTRACE函数(也称为PTRACE系统调用)介绍如下:提供了一种父进程可以控制子进程运行,并可以检查和改变它的核心影像(image)。它主要用于实现断点调试和系统调用跟踪。一个被跟踪的进程运行中,直到发生一个信号。则进程被中止,并且通知其父进程。在进程中止的状态下,进程的内存空间可以被读写。父进程还可以使子进程继续执行,并选择是否忽略引起中止的信号。Request参数决定了系统调用的功能,例如:
[0057]PTRACE_TRACEME,用于指示本进程被其父进程所跟踪。PTRACE_ATTACH:用于指定跟踪的进程。父进程可通过调用fork创建进程命令,接着指定所产生的子进程的PTRACE_TRACEME行为,最后使用exec(编程函数)等操作来初始化一个进程跟踪。可替代的做法是,父进程通过PTRACE_ATTACH请求跟踪一个现存进程的执行。exec是函数族的一种,可以把当前进程映像替换成新的程序文件。
[0058]以上实施例是基于注入启动进程提出的解决方案,本发明实施例还提出了基于被控制进程的解决方案具体如下:本发明实施例提供了另一种进程控制方法,如图2所示,包括:
[0059]201:被控制进程启动,并开始运行;
[0060]202:在上述被控制进程运行过程中接收来自注入启动进程注入的函数文件;上述函数文件为预置的函数文件;
[0061]上述预置的函数文件,通常可以是技术人员编写的可执行代码。本发明实施例将要实现的是控件级别的控制,这些可执行代码通常是一些编程语言编写的,例如C语言等。这些用编程语言编写的可执行代码不能被进程所直接执行,需要进程依据这些可执行代码加载二进制编码文件并调用库函数实现执行过程。相应的,上述函数文件就是初始执行控制的发出者。
[0062]203:上述被控制进程通过上述函数文件加载与上述函数文件对应的二进制编码文件;上述二进制编码文件被上述测试进程加载后,上述二进制编码文件在运行过程中调用上述被控制进程之外的库文件。
[0063]本发明实施例中,函数文件被注入到被控制进程,使之加载到二进制编码文件并通过运行二进制编码文件调用被控制进程之外的库文件。实现了对被控制进程的控件级别的控制,不用重新签名;可以避免被控制的进程发生异常。
[0064]基于控制进程的不同需求,技术人员可以将函数文件针对不同的技术目的进行编写,以下实施例以测试需求进行举例说明,可选地,上述二进制编码文件为二进制编码的测试脚本文件;上述二进制编码文件在运行过程中调用上述被控制进程之外的库文件包括:上述测试脚本文件在运行过程中调用安卓自动化测试框架库文件。
[0065]以上实施例中,函数文件最终被编译加载的是二进制的测试脚本文件,那么在测试脚本文件运行过程中,将会实现测试的功能。本实施例中,测试的是调用安卓自动化测试框架库,那么将会对安卓系统下的框架进行测试。可以理解的是,如果测试的对象是其他对象,则可以调用与被测试对象相关的函数库。因此以上调用安卓自动化测试框架库文件不能理解为函数库的唯一调用方式。
[0066]基于前述实施例的说明,在调用安卓自动化测试框架库文件之后具体的测试过程可以如下:上述调用安卓自动化测试框架库文件之后,还包括:
[0067]通过调用安卓自动化测试框架库文件获取控件信息,并输出获取的上述获取控件信息。本实施例可以实现对用户界面的自动化测试。
[0068]以下实施例将以Android系统下的进程控制为例,进行详细说明。
[0069]Android代码注入和Linux代码注入基本没有区别,具体方案如下:使用PTRACE打开被测程序的进程,将SO文件(是测试人员编写的文件,用于调用安卓二进制编码dex文件的文件)注入到到被测程序的进程里面,SO再去加载测试代码并且执行,实现测试。
[0070]在本发明实施例中,可以让SO加载robotium (安卓自动化测试框架库文件)相关代码并执行,这样,robotium运行于被测程序的进程里,能够实现快速获取控件信息,并且无需更换签名。这样,QQ、微信、QQ游戏等,都可以轻松实现自动化Π (User Interface,用户界面)测试。具体请参阅图3所示的系统结构图,包含注入启动进程(InjectOr)、S0文件、robotium
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1