Upgrade to Pro — share decks privately, control downloads, hide ads and more …

uiautomatorでテスト自動化を始める前に知っておくと良いこと

TOYAMA Sumio
December 21, 2014

 uiautomatorでテスト自動化を始める前に知っておくと良いこと

ABC 2014 WinterのLTセッションで発表した資料です。

TOYAMA Sumio

December 21, 2014
Tweet

More Decks by TOYAMA Sumio

Other Decks in Programming

Transcript

  1. uiautomatorͰ  
    ςετࣗಈԽΛ࢝ΊΔલʹ  
    ஌͓ͬͯ͘ͱྑ͍͜ͱ
    2014.12.21  
    @sumio_tym  (TOYAMA  Sumio)
    Android  Bazaar  and  Conference  2014  Winter

    View Slide

  2. ࣗݾ঺հ
    •  ࢯ໊:  ֎ࢁ७ੜ(TOYAMA  Sumio)  
    @sumio_tym  (twitter),  @sumio  (github)  
    •  ॴଐ:  NTTιϑτ΢ΣΞגࣜձࣾ  
    •  ۀ຿಺༰:  
    – ࣾ಺Androidؔ࿈ϓϩδΣΫτٕज़ࢧԉ  
    •  ϓϥΠϕʔτ:  
    – STAR(ςετࣗಈԽݚڀձ)  
    – uiautomator΢Υονϟʔ(?)  
    – uiautomatorͷهࣄ΋ॻ͖·ͨ͠  
    •  http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html  
    •  http://www.atmarkit.co.jp/ait/articles/1411/05/news038.html  
    2  

    View Slide

  3. •  Android  SDKඪ४ͷUIςετࣗಈԽπʔϧ  
    http://developer.android.com/tools/testing/testing_ui.html  
    •  apk͕खݩʹແͯ͘΋ૢ࡞Ͱ͖Δ  
    – ΞϓϦʹ·͕ͨͬͨૢ࡞΋OK!  
    – ϓϦΠϯΞϓϦ΋OK!  
    •  Android  4.1Ҏ্ରԠ  
    •  WebViewͷૢ࡞͸ෆՄ
    3  
    uiautomatorͬͯ?
    AndroidόʔδϣϯผγΣΞ(2014/12/1·Ͱͷ7೔ؒͷ౷ܭ)  
    https://developer.android.com/about/dashboards/index.htmlΑΓҾ༻
    82.6%
    ࢖ͬͯΈͨ͘ͳΓ·ͤΜ͔?

    View Slide

  4. ͓࿩͢͠Δ͜ͱ
    uiautomatorΛ࢖͍࢝ΊΔલʹ  
    ஌͓ͬͯ͘ͱศརͳ  
    ϙΠϯτΛ঺հ͠·͢!
    4  

    View Slide

  5. ΞδΣϯμ
    •  جຊతͳ࢖͍͔ͨ  
    •  ςετ։࢝࣌ʹΞϓϦΛىಈ͠௚͢  
    •  ೔ຊޠςΩετͷೖྗ  
    5  

    View Slide

  6. •  جຊతͳ࢖͍͔ͨ  
    •  ςετ։࢝࣌ʹΞϓϦΛىಈ͠௚͢  
    •  ೔ຊޠςΩετͷೖྗ  
    6  

    View Slide

  7. جຊతͳ࢖͍͔ͨ(1/2)  
    •  ʮOKϘλϯʯΛԡ͢ྫ  
    7  
    UiSelector criteria = new UiSelector()
    .className(Button.class)
    .text("OK");
    UiObject okButton = new UiObject(criteria);
    okButton.click();
    ݕࡧ৚݅Λߏங
    ৚݅ʹ߹͏UI෦඼  
    Λ୳ͯ͠ΫϦοΫ!

    View Slide

  8. جຊతͳ࢖͍͔ͨ(2/2)  
    8  
    •  ݕࡧ৚݅͸uiautomatorviewerͰ֬ೝ  
    DDMSʼDevicesʼ

    View Slide

  9. •  جຊతͳ࢖͍͔ͨ  
    •  ςετ։࢝࣌ʹΞϓϦΛىಈ͠௚͢  
    •  ೔ຊޠςΩετͷೖྗ  
    9  

    View Slide

  10. ςετ։࢝࣌ʹ  
    ΞϓϦΛىಈ͠௚͢(1/2)  
    •  ΞϓϦΛىಈ͠௚͢ૢ࡞εΫϦϓτΛॻ
    ͍ͯ΋ྑ͍͕ɾɾ  
    – ஗͍!  
    – ෳࡶ!  
    10  
    ϗʔϜ ϥϯνϟ ઃఆ ΞϓϦ ڧ੍ऴྃ

    View Slide

  11. ςετ։࢝࣌ʹ  
    ΞϓϦΛىಈ͠௚͢(2/2)  
    •  amίϚϯυΛςετεΫϦϓτ಺෦͔Β
    ࣮ߦ͢Δͷ͕؆୯!  
    11  
    Process p = new ProcessBuilder("am", "start",
    "-S", "-W", "-a",
    Intent.ACTION_MAIN, "-n",
    "/")
    .start();
    p.waitFor();

    View Slide

  12. •  جຊతͳ࢖͍͔ͨ  
    •  ςετ։࢝࣌ʹΞϓϦΛىಈ͠௚͢  
    •  ೔ຊޠςΩετͷೖྗ  
    12  

    View Slide

  13. •  จࣈྻೖྗʹ࢖͏UiObject.setText(String)  
    –  Virtual  Keyboard  Device(=QWERTYΩʔϘʔυ)ͷ  
    ΩʔΠϕϯτΛٖࣅతʹൃੜͤ͞Δ͜ͱͰೖྗΛ࣮ݱ  
    ೔ຊޠςΩετͷೖྗ(1/2)
    •  (΄΅)ASCIIҎ֎ΛؚΉจࣈྻೖྗ͸ແࢹ͞ΕΔ!  
    •  ಈ࡞தͷIMEʹӨڹ͞ΕΔ!  
    ೔ຊޠ  
    IME
    Android  
    ΩʔϘʔυ
    setText("aiueo");
    http://source.android.com/devices/tech/input/key-­‐character-­‐map-­‐files.html
    13  

    View Slide

  14. ೔ຊޠςΩετͷೖྗ(2/2)
    Uiautomator  Unicode  
     Input  Helper  (IME)
    [&MFMwkzBrMGEwbw-­‐!]  
    Λ[͜Μʹͪ͸!]ʹม׵  
    14  
    •  ASCIIจࣈྻ͔ΒUnicodeʹม׵͢ΔIMEΛ࢖͏  
    (࡞Γ·ͨ͠)  
    Uiautomator  Unicode  Input  Helper  
    https://github.com/sumio/uiautomator-­‐unicode-­‐input-­‐helper  
    setText( Utf7ImeHelper.e("͜Μʹͪ͸!") );
    "&MFMwkzBrMGEwbw-­‐!"͕ฦΔ

    View Slide

  15. ΑΓৄ͘͠͸
    •  ҎԼͷهࣄ(ˏITʹͯެ։)Λ͝ࢀর͍ͩ͘͞  
    –  ʮAndroid  SDKඪ४ͷԿͰ΋ςετπʔϧuiautomatorͷ
    جຊతͳ࢖͍ํʯ  
    http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html  
    –  ʮAndroidςετͰศརͳuiautomatorviewerɺ
    UiScrollableͷ࢖͍ํɺςΩετೖྗAPI੍ݶࣄ߲ͷ  
    ճආํ๏ʯ  
    http://www.atmarkit.co.jp/ait/articles/1411/05/news038.html  
    15  
    ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    ˞STAR(ςετࣗಈԽݚڀձ)ͷ׆ಈͷҰ؀ͱͯࣥ͠ච͠·ͨ͠

    View Slide