Layout Tests 应用场景 - 百度手机浏览器T5内核2 - LayoutTest apk 结构分析

百度手机浏览器的体验地址: http://shouji.baidu.com/browser/

=========================正文===========================================

从上一篇的执行示意图中可以看到,LayoutTest 的执行以及报告生成都发生在 apk

 中,所以 apk 是这个测试方案的核心,本文就着重讲述这个 apk 

LayoutTests apk的结构

从 AndrodManifest.xml 里面可以看到,这个 apk 由一个 Application 一个 Instrumentation组成。
Instrumentation  
是可以让应用通过  adb shell am instrument 的命令启动这个 apk,并传入参数进来,目前这个参数是测试用例的相对路径
mTestsRelativePath = arguments.getString("path");
Application 包括三个Activity 和 一个 service。
ManagerService 

顾名思义,是管理者的角色,实际上是负责TestsListActivity、Executor 还有一个 Summarizer 进行沟通的。

三个Activity,

DirListActivity 

是通 luncher 点开apk之后展现测试列表的 Activity,如下图:


TestsListActivity 

主要作用是遍历 server 端的目录,找到给定路径下面所有的测试case,存入到变量中,调用 Executor 去执行,并且等 executor 的执行结果,把结果通过 managerService 传递给 Summerizer。

executor 在独立的进程中

是真正加载测试用例(网页)的activity,它封装了百度的统一内核SDK,统一内核SDK封装了T5 内核。executor 中通过 BWebView.loadUrl 加载 TestsListActivity 传递过来的 url,调用到 T5 内核进行 html 的解析、渲染,JavaScript 的执行 等。当页面加载完成之后,会调用 dumpAsText 把页面中的文本导入到文本文件中。比如下面这个测试用例:

fast/cookies/local-file-can-set-cookies.html

<html>
<head>
<title>Local File Can Set Cookies</title>
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>

<body>
<script>
    description('This test checks that a local file can set cookies.  See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files');

    shouldBe("document.cookie.indexOf('ppkcookie1=testcookie')", "-1");
    document.cookie = 'ppkcookie1=testcookie';
    shouldBeTrue("document.cookie.indexOf('ppkcookie1=testcookie') >= 0");
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>

在相同目录下由一个文件 fast/cookies/local-file-can-set-cookies-expected.txt

This test checks that a local file can set cookies. See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS document.cookie.indexOf('ppkcookie1=testcookie') is -1
PASS document.cookie.indexOf('ppkcookie1=testcookie') >= 0 is true
PASS successfullyParsed is true

TEST COMPLETE
LayoutTest 执行完这个 case 之后页面会显示如下图:


dumpAsText 会把页面存到 sdcard 里面,文件名是 fast/cookies/local-file-can-set-cookies-actual.txt,当然,字体信息会丢失,但是不影响文本比对。

之后对比 fast/cookies/local-file-can-set-cookies-expected.txt 和fast/cookies/local-file-can-set-cookies-actual.txt

如果两者相同,就PASS,如果不同,就 Fail。 (ps. 如果这个case 过不了,显然是一个最基本的问题,浏览器引擎根本无法上线使用。)

LayoutTest apk 的核心源码



下一篇再分析详细过程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值