发布新日志

  • 手机自动化测试的原理

    2014-01-14 16:23:47

    一、首先说说手机自动化测试的原理
      1、手机自动化测试的原理为PC上一个控制端(测试工具)与手机上的一个agent端,通过串口、USB或者无线方式将PC与手机终端相连,然后应用测试工具向手机发送请求或者命令,手机收到命令或者请求后,交给agent端解析,然后agent将这些解析的命令下发给手机的各个功能模块所能识别的命令,调用那些功能模块模拟操作。完成这些操作后,手机会返回一些信息,agent可以抓取这些信息,然后传回给PC端,这样就完成了一个完整的手机自动化测试。
      2、关键点在于agent,有的公司是向自己的手机终端的软件功能模块中植入测试程序响应代码,有的公司可以利用MMI_Command的方式来控制手机终端;原理就是给手机提供一个响应的接口。
      3、而对于PC控制端,这个测试脚本用各种编程语言都可以,看如何定义
      4、而又的自动化测试设计成录制的机制,说通俗点,就是记录手工操作的键盘信息或者LCD的操作信息(LCD需要用到智能识别机制)
      5、自动化测试框架的搭建方法是通用的,你需要有一套自己的测试框架才能保证自动化测试的顺利开展。
      二、Android自动化测试方向:
      1、CTS,CTS 测试基于Android instrumentation 测试, 其又基于JUnit 测试。说白了, CTS 就是一堆单元测试用例。这也是Java 语言的擅长部分。
      2、 Monkey工具,Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
      3、ASE,ASE 意思为Android 脚本环境, 即我们可以通过脚本(比如Python)调用Android 的功能,从而定制一些测试。比如打电话,发短信,浏览网页,等。我们可以扩充它的API(Java 部分), 并用python 脚本调用这些API, 从而实现丰富的测试功能。用于API 部分可以访问到Android 全部API, python 又能灵活部署测试,所以ASE 的扩展性非常好。
      4、Robotium,该工具用于黑盒的自动化测试。可以在有源码或者只有APK 的情况下对目标应用进行测试。Robotimu 提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text等等。(推举你可以研究一下这个工具,开源的,我有资料)
      5、可以自己开发一个手机方面的自动化测试工具,原理上一样
  • monkey使用

    2013-12-26 17:34:35

    今天来看看具体的使用

    1 先看看安装和删除测试包的命令
    安装:C:\document and setting>adb install D:/xxx.apk  

    删除:C:\document and setting>adb uninstall apk的包名(如com.qq)


    2、在命令行输入命令:adb shell

    3、应用程序包都在data目录中的data目录下,我们输入命令:cd data/data

    进入目标data文件夹,在执行命令:ls,可找到刚才加载项目的应用程序包.

    找到对应的包名后,就可以通过monkey命令来进行测试了。

    4、看看相关参数
    -p:所在测试的包,可以是一个也可以是多个(如:monkey -p com.androd.a 

    -p com.androd.b)

    2.-c:如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些

    类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列

    类别中列出的Activity:Intent.CATEGORY_LAUNCHER或

    Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选

    项只能用于一个类别.

    3.-ignore-crash:当应用程序崩溃或发生任何失控异常时,Monkey将停止运

    行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成.

    4.-ignore-timeouts:通常,当应用程序发生任何超时错误(如“Application 

    Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey

    将继续向系统发送事件,直到计数完成.

    5.-ignore-security-exceptions:通常,当应用程序发生许可错误(如启动一

    个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,

    Monkey将继续向系统发送事件,直到计数完成

    6.-monitor-native-crashes:监视并报告Android系统中本地代码的崩溃事件

    。如果设置了–kill-process-after-error,系统将停止运行

    7.-kill-process-after-error:如果程序出现错误,monkey将结束此程序进程

    8.-hprof:设置此项,将在monkey事件序列之前和之后立即生成profilling

    报告。这将会在data/misc中生成大文件(约5mb)所以要小心使用它

    9.-pct-touch:调整触摸事件的百分比(触摸事件是一个down-up事件,它发

    生在屏幕的某单一位置)

    10.-pct-motion:动作事件的百分比(动作事件由屏幕上某处的一个down事件

    、一系列的随机事件和一个up事件组成)

    11.-pct-trackball:调整轨迹事件的百分比(轨迹事件由一个或几个随机移

    动组成,有时还伴随着点击)

    12.-pct-syskeys:调整系统按键事件的百分比(这些按键通常被保留,由系

    统使用,如home,back,start call,end call及音量控制)

    13.-pct-nav调整基本导航事件的百分比(导航事件来自方向输入设备的

    up/down/left/right组成)

    14.-pct-majornav:调整“主要”导航事件的百分比(这些导航事件通常引发

    图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    15.-pct-appswitch:调整启动Activity的百分比。在随机间隔里,Monkey将执

    行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方


    16.-pct-anyevent:调整启动Activity的百分比。它包罗了所有其它的事件类

    型,如:按键,其它不常用的设备按钮

    17.–wait-dbg:停止执行中的Monkey,直到有调试器和它相连接

    18.–dbg-no-events:设置此选项,Monkey将执行初始启动,进入到一个测试

    Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个

    或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,

    从而提供一个环境,可以监视应用程序所调用的包之间的转换

    19.-port:为monkey开启专用端口。此时只monkey不会帮你乱点击,而此时你

    自己就是一只monkey了,在你乱点的时候,monkey会输出你点击后回馈的信息

    。如果你打完命令之后模拟器上没有启动你所要启动的包,你需要自己启动,

    但是你只能启动你-p中指定的那几个包。ctrl+c中断

    20.--throttle:当事件起效时等待的毫秒数

    21.-s:随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生

    成相同的事件序列

    22.COUNT:要发送的事件数

    5 常用的组合有一下几种

    1、monkey -p com.yourpackage -v 500简单的输出测试的信息。
    2、monkey -p com.yourpackage -v -v -v 500以深度为三级输出测试信息。
    3、monkey -p com.yourpackage --port端口号-v为测试分配一个专用的端口

    号,不过这个命令只能输出跳转的信息及有错误时输出信息。
    4、monkey -p com.yourpackage -s数字-v 500为随机数的事件序列定一个值

    ,若出现问题下次可以重复同样的系列进行排错。
    5、monkey -p com.yourpackage -v --throttle 3000 500为每一次执行一次

    有效的事件后休眠3000毫秒。

     以上信息参考的网上的内容,自己整理了一下。如有版权问题请联系我。
  • HTTP 状态代码

    2013-09-24 13:44:57

    HTTP 状态代码< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

    如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求。

    此状态代码提供了有关请求状态的信息,且为 Googlebot 提供了有关您网站和请求的网页的信息。

    一些常见的状态代码为:

    • 200 - 服务器成功返回网页
    • 404 - 请求的网页不存在
    • 503 - 服务器暂时不可用

    以下提供了 HTTP 状态代码的完整列表。点击链接可了解详细信息。

    1xx(临时响应)
    用于表示临时响应并需要请求者执行操作才能继续的状态代码。

    代码

    说明

    100(继续)

    请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。

    101(切换协议)

    请求者已要求服务器切换协议,服务器已确认并准备进行切换。

    2xx(成功)

    用于表示服务器已成功处理了请求的状态代码。

    代码

    说明

    200(成功)

    服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果您的 robots.txt 文件显示为此状态,那么,这表示 Googlebot 已成功检索到该文件。

    201(已创建)

    请求成功且服务器已创建了新的资源。

    202(已接受)

    服务器已接受了请求,但尚未对其进行处理。

    203(非授权信息)

    服务器已成功处理了请求,但返回了可能来自另一来源的信息。

    204(无内容)

    服务器成功处理了请求,但未返回任何内容。

    205(重置内容)

    服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。

    206(部分内容)

    服务器成功处理了部分 GET 请求。

    3xx(已重定向) 
    要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。Google 建议您在每次请求时使用的重定向要少于 5 个。您可以使用网站管理员工具来查看 Googlebot 在抓取您已重定向的网页时是否会遇到问题。诊断下的抓取错误页中列出了 Googlebot 由于重定向错误而无法抓取的网址。

    代码

    说明

    300(多种选择)

    服务器根据请求可执行多种操作。服务器可根据请求者 (User agent) 来选择一项操作,或提供操作列表供请求者选择。

    301(永久移动)

    请求的网页已被永久移动到新位置。服务器返回此响应(作为对 GET  HEAD 请求的响应)时,会自动将请求者转到新位置。您应使用此代码通知 Googlebot 某个网页或网站已被永久移动到新位置。

    302(临时移动)

    服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET  HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置。但由于Googlebot 会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知 Googlebot 某个页面或网站已被移动。

    303(查看其他位置)

    当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除HEAD 请求之外的所有请求,服务器会自动转到其他位置。

    304(未修改)

    自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。

    如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。由于服务器可以告诉 Googlebot 自从上次抓取后网页没有更改过,因此可节省带宽和开销

    305(使用代理)

    请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。

    307(临时重定向)

    服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET  HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置。但由于Googlebot 会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知 Googlebot 某个页面或网站已被移动。

    4xx(请求错误) 
    这些状态代码表示,请求可能出错,已妨碍了服务器对请求的处理。

    代码

    说明

    400(错误请求)

    服务器不理解请求的语法。

    401(未授权)

    请求要求进行身份验证。登录后,服务器可能会返回对页面的此响应。

    403(已禁止)

    服务器拒绝请求。如果在 Googlebot 尝试抓取您网站上的有效网页时显示此状态代码(您可在Google 网站管理员工具中诊断下的网络抓取页面上看到此状态代码),那么,这可能是您的服务器或主机拒绝 Googlebot 对其进行访问。

    404(未找到)

    服务器找不到请求的网页。例如,如果请求是针对服务器上不存在的网页进行的,那么,服务器通常会返回此代码。

    如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具"诊断"标签的 robots.txt 上发现此状态,那么,这是正确的状态。然而,如果您有 robots.txt 文件而又发现了此状态,那么,这说明您的 robots.txt 文件可能是命名错误或位于错误的位置。(该文件应当位于顶级域名上,且应当名为 robots.txt)。

    如果您在 Googlebot 尝试抓取的网址上发现此状态(位于"诊断"标签的 HTTP 错误页上),那么,这表示 Googlebot 所追踪的可能是另一网页中的无效链接(旧链接或输入有误的链接)。

    405(方法禁用)

    禁用请求中所指定的方法。

    406(不接受)

    无法使用请求的内容特性来响应请求的网页。

    407(需要代理授权)

    此状态代码与 401(未授权)类似,但却指定了请求者应当使用代理进行授权。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。

    408(请求超时)

    服务器等候请求时超时。

    409(冲突)

    服务器在完成请求时发生冲突。服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会提供两个请求的差异列表。

    410(已删除)

    如果请求的资源已被永久删除,那么,服务器会返回此响应。该代码与 404(未找到)代码类似,但在资源以前有但现在已经不复存在的情况下,有时会替代 404 代码出现。如果资源已被永久删除,那么,您应当使用 301 代码指定该资源的新位置。

    411(需要有效长度)

    服务器不会接受包含无效内容长度标头字段的请求。

    412(未满足前提条件)

    服务器未满足请求者在请求中设置的其中一个前提条件。

    413(请求实体过大)

    服务器无法处理请求,因为请求实体过大,已超出服务器的处理能力。

    414(请求的URI 过长)

    请求的 URI(通常为网址)过长,服务器无法进行处理。

    415(不支持的媒体类型)

    请求的格式不受请求页面的支持。

    416(请求范围不符合要求)

    如果请求是针对网页的无效范围进行的,那么,服务器会返回此状态代码。

    417(未满足期望值)

    服务器未满足"期望"请求标头字段的要求。

    5xx(服务器错误)
    这些状态代码表示,服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    代码

    说明

    500(服务器内部错误)

    服务器遇到错误,无法完成请求。

    501(尚未实施)

    服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。

    502(错误网关)

    服务器作为网关或代理,从上游服务器收到了无效的响应。

    503(服务不可用)

    目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。

    504(网关超时)

    服务器作为网关或代理,未及时从上游服务器接收请求。

    505HTTP 版本不受支持)

    服务器不支持请求中所使用的 HTTP 协议版本。

     


  • HTTP协议

    2010-04-30 15:34:25

     
    HTTP协议
    2007年03月03日 星期六 16:05
    计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。(2) Web浏览器向Web服务器发送请求命令。
    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

    HTTP使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务器告诉Web浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有一系列的可配置的辅助应用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。

    HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

    (1) 建立TCP连接

    在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80

    (2) Web浏览器向Web服务器发送请求命令

    一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令

    例如:GET/sample/hello.jsp HTTP/1.1

    (3) Web浏览器发送请求头信息

    浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

    (4) Web服务器应答

    客户机向服务器发出请求后,服务器会客户机回送应答,

    HTTP/1.1 200 OK

    应答的第一部分是协议的版本号和应答状态码

    (5) Web服务器发送应答头信息

    正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

    (6) Web服务器向浏览器发送数据

    Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

    (7) Web服务器关闭TCP连接

    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    Connection:keep-alive

    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

        

    HTTP请求格式

    当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:

    l 请求方法URI协议/版本

    l 请求头(Request Header)

    l 请求正文

    下面是一个HTTP请求的例子:

    GET/sample.jspHTTP/1.1

    Accept:image/gif.image/jpeg,*/*

    Accept-Language:zh-cn

    Connection:Keep-Alive

    Host:localhost

    User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

    Accept-Encoding:gzip,deflate


    username=jinqiao&password=1234


    (1) 请求方法URI协议/版本

    请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1

    以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

    根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。

    URL完整地指定了要访问的网络资源,通常只要给出相对于服务器
Open Toolbar