android的cts测试到底有多细

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的cts测试到底有多细相关的知识,希望对你有一定的参考价值。

  1.下载完整的cts测试工具包,方式有两种:

  a.在现有代码上编译,代码版本与目标机器版本一致;

  b.在Google官网下载:http://source.android.com/compatibility/downloads.html,Compatibility
Test Suite (CTS)即可。

  2.下载media测试内容,还是上边的官网,在网页最下边:

  CTS Media Files

  These media files are required for the CTS media stress tests.

  CTS Media 1.0

  3.连接手机与电脑(至少一台手机)

  4.测试前准备

  android-cts/repository/testcases中的CtsDelegatingAccessibilityService.apk和CtsDeviceAdmin.apk

  安装完成以上apk后,在手机端操作:

  a.设置->辅助程序->Delegating Accessibility Service,打开;

  b.设置->安全->设备管理器->CTS相关的两个选项都激活;

  c.打开USB调试模式;

  d.保持屏幕唤醒;

  e.允许模仿位置;

  f.切换至英文模式US。

  5.进入cts控制台

  执行android-cts/tools/cts-tradefed

  dev@linux -dev:~/android/CTS/android-cts/tools$ ./cts-tradefed

  09-0509:20:52 I/: Detectednew device c8090fe4

  09-0509:20:52 I/: Detectednew device5348300e

  Android CTS 4.2_r1

  我现在连接着两台设备,都检测到了。

  6.开始进行CTS测试

  首先,在控制台中输入help看这个控制台都能干什么。

  cts-tf > help

  CTS-tradefed host version 4.2_r1

  CTS-tradefed is the test harness for running the Android Compatibility
Suite, built on top of the tradefed framework.

  Available commands and options

  Host:

  help: show this message

  help all: show the complete tradefed help

  exit: gracefully exit the cts console, waiting till all invocations are
complete

  Run:

  run cts --plan test_plan_name: run a test plan

  run cts --package/-p: run a CTS test package

  run cts --class/-c [--method/-m]: run a specific test class
and/ormethod

  run cts --continue-session session_ID: run all not executed tests from a
previous CTS session

  run cts [options] --serial/s device_ID: run CTS on specified device

  run cts [options] --shards number_of_shards: shard a CTS run into given
number of independent chunks, to run on multiple devices inparallel

  run cts --help/--help-all: get more help on running CTS

  List:

  l/list d/devices: list connected devices and their state

  l/list packages: list CTS test packages

  l/list p/plans: list CTS test plans

  l/list i/invocations: list invocations aka CTS test runs currentlyin
progress

  l/list c/commands: list commands: aka CTS test run commands currently in
the queue waiting to be allocated devices

  l/list r/results: list CTS results currently present in the repository

  Add:

  add derivedplan --plan plane_name --session/-s session_id-r
[pass/fail/notExecuted/timeout]: derive a plan from the given session

  Dump:

  d/dump l/logs: dump the tradefed logsfor all running invocations

  Options:

  --disable-reboot: Do not reboot device after running some amount of
tests.

  run cts --plan + 运行某个plan,查看当前支持的plan,运行l
p,实际上所有的plan存放在android-cts/repository/plans;

  run cts --package/-p 运行某一个测试包;

  run cts --class/-c [--method/-m] 运行某一个测试类或测试方法;

  run cts --continue-session session_ID 继续运行之前没有完成的CTS测试,要知道它的session_ID;

  run cts [options] --serial/s device_ID 在某个串号的设备上进行CTS测试,对应多个机器的时候,通过adb
devices能够查看当前连接的所有设备的串号;

  run cts [options] --shards number_of_shards 在多个设备上同时运行CTS测试,如run cts --plan
CTS --shards 2,在两个设备上同时运行;

  run cts --help/--help-all 展示更多帮助

  查看列表:

  查看行为是l/list,接不同的参数显示对应信息。

  d/devices 当前连接的设备,效果同adb devices,不过信息更详细,还有设备电量信息;

  packages 当前CTS plan的所有测试包;

  p/plan 当前所支持的CTS plan有哪些;

  i/invocations 当前CTS的运行状态;

  c/commands 展示出用户输入过的命令;

  r/results 展示以往的测试结果

  Session Pass Fail Not Executed Start time Plan name Device serial(s)

  0 17720 239 12 2013.08.24_18.23.23 CTS c8090fe4

  1 17907 64 0 2013.09.04_17.51.15 CTS FUSC85YLYPAMRC69

  需要特别关注的几点注意事项:

  首先,手机的功能一定要完整,WIFI BT 3G CAMERA等;

  手机要切换至英文语言;

  连接到可用WIFI;

  有SIM卡,并能够打电话发短信;

  对于屏幕密度,目前CTS中最高支持320,但实际上Google已经添加了对480,也就是1080p的支持;

  会检测Fingerprint,注意厂家名;

  要保证能够访问到www.google.com;

  实战演戏:

  连接两台手机后,进入cts控制台:

  run cts --plan CTS --shards 2

  两台手机上会同时跑起CTS测试,大概5小时候测试完成,生成测试报告,保存在results下。
参考技术A 以wifi测试为列android.net.wifi模块的cts测试结果如下:android.app.cts.SystemFeaturesTest-- testBluetoothFeaturepass -- testCameraFeaturespass -- ...
以wifi测试为列
android.net.wifi模块的cts测试结果如下:
android.app.cts.SystemFeaturesTest
-- testBluetoothFeature
pass

-- testCameraFeatures
pass

-- testFeatureNamespaces
pass

-- testLiveWallpaperFeature
pass

-- testLocationFeatures
pass

-- testNfcFeatures
pass

-- testScreenFeatures
pass

-- testSensorFeatures
pass

-- testSipFeatures
pass

-- testTelephonyFeatures
pass

-- testTouchScreenFeatures
pass

-- testUsbAccessory
pass

-- testWifiFeature
pass

android.net.http.cts.ApacheHttpClientTest

-- testAndroidTestCaseSetupProperly
pass

-- testExecute_withMobile
pass

-- testExecute_withWifi
pass

android.net.wifi.cts.ConcurrencyTest
-- testAndroidTestCaseSetupProperly
pass

-- testConcurrency
pass

android.net.wifi.cts.ScanResultTest
-- testAndroidTestCaseSetupProperly
pass

-- testScanResultProperties
pass

android.net.wifi.cts.SupplicantStateTest
-- testAndroidTestCaseSetupProperly
pass

-- testIsValidState
pass

android.net.wifi.cts.WifiConfigurationTest
-- testAndroidTestCaseSetupProperly
pass

-- testWifiConfiguration
pass

android.net.wifi.cts.WifiInfoTest
-- testAndroidTestCaseSetupProperly
pass

-- testWifiInfoProperties
pass

android.net.wifi.cts.WifiManagerTest
-- testAndroidTestCaseSetupProperly
pass

-- testSignal
pass

-- testWifiManagerActions
pass

-- testWifiManagerNetWork
pass

-- testWifiManagerProperties
pass

android.net.wifi.cts.WifiManager_WifiLockTest
-- testAndroidTestCaseSetupProperly
pass

-- testWifiLock
pass

上面的assert部分为断言,用来检查cts的测试结果是pass还是fail。你会发现cts的测试比较简单,它只能保证 你的android设备支持wifi,和中间件接口控制wifi的工作。
搜遍了wifi的全部测试模块,都没有找到哪里验证了 WifiConfiguration.KeyMgmt (wifi鉴权)。本回答被提问者和网友采纳
参考技术B CTS看起来挺复杂,其实很简单,无非就是输入命令,然后查看有没有fail的,再将fail的多跑几次也就OK了。另外就是装那个apk进行一些简单的手动测试。没有什么难度。多做几次自然就会了。

Relay/Apollo 碎片应该有多细?

【中文标题】Relay/Apollo 碎片应该有多细?【英文标题】:How granular should Relay/Apollo fragments be? 【发布时间】:2019-04-04 01:40:02 【问题描述】:

我在我的应用程序中使用 GraphQL + Relay,发现自己几乎用 createFragmentContainer 包装了每个组件,包括那些在 DOM 层次结构中非常低的组件(通常是功能组件)。

这是使用片段的正确方法吗?我想知道何时将组件包装在片段容器中的准则是什么?当组件只需要一个字段并且我可以通过 props 从父级传递该数据时,包装组件似乎是多余的。

我正在使用 Relay,但我认为这些概念也类似于 Apollo。

【问题讨论】:

【参考方案1】:

这是我在 Relay 团队工作的同事 Jan Kassens 的回答:

如果拆分组件对您有意义,您应该这样做。我发现较小的模块通常有助于使代码更易于理解。 现在,一个 Button 组件可能不必附加一个片段,但如果它是一个带有突变的“Like Page”按钮,并且可能是页面特定的标签,我认为让它成为自己的片段是完全有意义的容器。

与工程中的许多事情一样,拆分太多可能需要权衡取舍,但我们花了很多心思来使片段容器尽可能轻巧高效,因此您不应该考虑太多引入开销。

【讨论】:

非常好!也感谢分享:)【参考方案2】:

是的,是的。与其查询根组件上的所有数据并将其作为道具传递给其他人,不如创建片段容器,并且每个组件都查询自己的数据。并且由于中继数据屏蔽,这些来自片段的数据只能在需要它的组件内部看到。

也许这是一个很好的阅读:https://medium.com/entria/relay-apollo-anti-pattern-d9f4dea47738

这在Data Masking: https://facebook.github.io/relay/docs/en/thinking-in-relay.html

希望对你有帮助:)

【讨论】:

谢谢,您链接的文章为支持片段提供了一个很好的理由(:

以上是关于android的cts测试到底有多细的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Android CTS测试

Android TV CTS 测试认证汇总

Android CTS

如何在win 环境下进行Android CTS 测试

Android CTS不执行测试

如何通过Android CTS测试