I’ve published [iOS]try out Azure pipeline for Xcode build including XCTest/XCUITest as an article about Azure pipeline and iOS build. I thought we can use arm architectured emulators in Azure environment for Android case as well as Travis or CircleCI, etc. But I noticed we could run tests on x86 emulators in Azure. PR: https://github.com/KazuCocoa/EspressoEnv/pull/18/files…More
Retrospective in 2018
Recent a couple of years, I had retrospective every year in Japanese. This time, I would write up in English as well here. Japanese is here. 2018 Work From last December, I started working as a member of HeadSpin as a senior software engineer, device automation. They are a mobile performance venture company. I am…More
2018年振り返り
昨年の2017年 ~> 2018年に向けてに続いて引き続き。 今年は元から海外メンバ、英語の負荷が上がることからそこ以外はあまり活動を積極的にしない感じでした。結果的に、ある程度英語圏における活動の幅が広がる種まきみたいな年でした。 2018年 会社関係 ちょうどこの12月から、HeadSpinというところで働き始めることにしました。米国のベンチャーです。”Senior Software Engineer, Device Automation“として、開発のコアメンバに参画します。 会社自体は最近の資金調達の記事や、The Rising Stars of QA: Six New Vendors to Watch in 2019とかに名前が載っている、モバイルアプリの性能テストの環境を提供するところです。Appiumの開発やCookpadにおけるテスト自動化の時に感じた課題感を解決/改善するところに共感し、一緒に活動することに決めました。toCのサービス開発会社ももちろん好きなのですけどね。年明けよりUS VISA取得に向けて弁護士と動き、家族でSilicon Valleyに引っ越すことを目指します。それまでは日本からリモートワークです。 11月まではCookpadの海外事業部で働いていました。イギリスのブリストルに拠点を置く事業部です。内容は、Software Engineer in Qualityとして、横断的な不具合収集フローの改善とかがありました。また、中頃くらいからはAndroidの開発インフラ周り(CI環境やテスト環境)の整備に多くの時間をかけていました。いくつかのブログ記事を公開したりしました。これとか、これ。 多様性のある環境(10は超えるnationalityをもつ人たちと一緒に働いていた)で働くことや、彼らの多くも英語を第二言語として学び仕事で使っていること、その環境下でプロジェクトなど回していくことを経験しました。その環境下において、開発の芯をどこに置くかといったことの大事さを再度認識しました。日本人同士が慣れた言葉、コンテキストの持ちようで会話するものとはやっぱり納得に到るまでにちゃんと言語として伝えることが必要であったりと。 総じて、技術的な学びもモバイルアプリを取り巻く環境の前進に伴いあったりはしたのですが、それ以上に多様性のある環境下で働く、活動するというものを強く学んだ時期でした。なお、Cookpad tech conf 2018ではテスト自動化の面で発表させていただきました。 仕事の多くは英語が中心です。issueに書かれた英語を読み、理解し、表現などを学び、自分もそういう表現を書き慣れていく。そんな感じでした。口頭コミュニケーションは来年以降の方が真剣に英語onlyの環境になりますね。(表現の多くもネイティブ英語話者が取り巻く環境になりますし) OSS周り 特に、Appium周りへの貢献は継続して行なっていました。不具合対応の他、新機能の追加やW3C対応に向けた実装、動作確認のテストなど。こちらは仕事時間外の活動だったのですが、おかげでAppiumのW3C対応もW3C actions含めて終わりました。クライアントも、そういえばRubyの他にPython, .NETなんかもメンテをはじめました。.NETは本当に初心者なので、既存コードから学びながら、一部W3C対応する、といったことをしていました。 Appiumは最近ではtest.aiの記事にもあるように、画像ベース + 機械学習を交えた要素検索などの機能が利用できるようにもなりました。Google/Appleのような企業が自分たちのOS向けのUI Test frameworkを成熟させる中で、Appiumはそれらを抽象化した中間機として機能しているように見えますね。ツールごとに開発のなかでどの類のテストをケアできるか、という役割がある程度付いてきたように思えます。 カンファレンス SeleniumConf 2019 Tokyoが開催されます!私はその運営者の1人として活動してきました。主には英語圏、スポンサー対応。毎年EUかUS付近で行なっていた公式SeleniumConfがアジア圏で初めて開催されます。CfPも多く集まりました。結構な作業負荷もありますが、色々と経験を積んだり、積んだものを活かしたりできているのでやってて楽しさもありますね。 AppiumConf2019へCfPを出しました。2019はインド。2018はロンドンで4月に開催されました。Cookpadで働いていた頃だったので、ブリストルオフィスへの出張を組み合わせて参加しました。 国内カンファレンスでは、JaSST Tokyoに今年の初め頃に出ました。クロージングパネルなんかでは米国Googleから来日した人と一緒にセッションしたりしました。他にも少し、私の海外のメンバと働く経験を共有したり。 12月頭にはテスト自動化カンファレンスをヘルプしたり。継続して運営側です。成果の内容が運用経験なども含まれてきて、より深い知見や議論の場になってきていてとても素晴らしかった。 そのほか Androidテスト全書のレビューをさせていただいたり、そのiOS版の執筆準備をはじめました。入門、UIテスト付近を中心に貢献予定です。 開発言語がNodeJS,…More
2018年に新たに読んだ書籍群を振り返って ~ Recap books I read in 2018
前回はこちら => 2017年に新たに読んだ書籍群を振り返って 毎年行なっているもの。毎回、Elixirを学び始めたころに作ったwordpress_exを更新しながらつかい続けている。今年も変わらずそれを使い、Elixirのバージョン、使っているライブラリの置き換え、出力形式の整形などを行なった。こう見ると、Elixirも1年たって順調に更新されているな、と感じますね。 読んだ書籍は以下。技術書と、いくつか残したものだけを取ってきている。載ってないけれど、最近出たWIREDの2019年に向けてといった本もよかった。(US/JP版を読んだ) 2018年はいくつか大きな変化があった。そのため、それに引きづられて読んだ書籍もある。JS系やPython系列なんかはその類。あと、English Grammer in Useなど。 Programming iOS 11 Programmingを今更だけれど読んだ [JavaScript] Learned “You Don’t Know JS” Read “Python Testing with pytest” Read “Practical Object-Oriented Design in Ruby” 2nd edition Software Testing/Quality Read “Software Design X-Rays”, measure code quality Read “A Practical Guide to Testing in DevOps” [Android]Androidテスト全書は是非手にとって読んでほしい1冊 Read “Are Your Lights On?”…More
Read “Property-Based Testing with PropEr, Erlang, and Elixir”
I finished reading “Property-Based Testing with PropEr, Erlang, and Elixir” a couple of days ago. Do you know or know of the testing? Property-based testing is very interesting to learn. Through this book Through this book, we can learn what is property-based testing, how to consider property driven and practice in a real-world product. If…More
[Appium][Espresso]Using View Tag to test for Android on RN
I investigated before about testID feature if ReactNative [ReactNative][Appium]testIDの振られ方. Then, I found the framework maps the testID as android view tag. link The view tag is available via Espresso framework. Appium had not accessed the element by uiautomator2-driver since it uses uiautomator framework. But, appium-espresso-driver has been published. The driver can access to Espresso framework.…More
[Appium]appium-doctorをつかて環境の確認を行う
Selenium/Appium Advent Calendar 2018の19日目の記事です。空いてたので、またちょっとしたtipsを載せようと思います。 今日はAppiumには環境構築時に設定を確認できる appium-doctor と呼ばれるコマンドラインツールを紹介します。何かのOSSなりのツールを利用する際、最近はよく xxxx-doctor と呼ばれる環境確認用のコマンドラインツールをよく見かけるかと思います。Appiumも前々から同様なdoctorツールを持っていました。 v1.6まではこの appium-doctor は必須環境のみを確認するツールでした。例えばAppium自体の実行環境、AndroidやiOSに対してAppiumを実行できる環境を確認することができていました。あと、問題があった時に可能な限り自動でfixさせるautofixの機能もありました。 v1.7以降ではオプションとして利用される他のツール群の確認もするようにしました。 現在のmasterでは以下の通りの結果を得ることができます。v1.7以降にも少し確認する内容を増やしたり文言を調整したので、少し現状の npm install -g appium-doctor で入手できるものとは異なる表示、結果かもしれません。 この拡張により、画像による要素検索を行うために必要な opencv4nodejs が入っているか、などが確認可能です。iOS Simulator限定ですが、あらかじめ各種permissionを操作するためにplistを直接操作するAppleSimulatorUtilsも利用可能になります。いくつかのpermission操作はもとからサポートしていたのですが、これにより、より多くの種類のpermissionを調整可能です。 私は以前、このutilsを使いテスト実行時に不要なpermission dialogを抑制するためにあらかじめ権限を許可しておく、などしていました。(毎回、xxxのダイアログが表示されていると閉じるというようなXCTestでも必要になる記述を、Simulatorだけですが省くことができます。) Android/iOS/オプションの設定の中には手動で設定する必要のあるものもいくつかあります。そのためautofixにより全て自動で設定、とまではいかないのですが、手探りで必要なライブラリを手に入れていったり、何かライブラリのインストールが必要になる(例えば opencv4nodejs など)エラーに出くわして初めてその対応をする、というようなことを減らすことができるものとなります。 あまり大きな機能ではないですが、初めの一歩であったり、環境確認の時に利用していただけると幸いです。More
[Appium][Android]Set DataPicker and TimePicker via Espresso Driver (Eng)
This post is English edition of [Appium][Android]Set DataPicker and TimePicker via Espresso Driver which is for Selenium/Appium Advent Calendar 2018 in Japanese. mobile command Appium provides mobile command to conduct native commands in order to extend Appium actions using native features. In general, we follow the W3C webdriver spec. We add new endpoints which have…More
[Appium][Android]Set DataPicker and TimePicker via Espresso Driver
Selenium/Appium Advent Calendar 2018、17日目の記事です。空いていたので、ちょっとしたtipsということでAppiumの mobile command を紹介しようと思います。(English edition is available in [Appium][Android]Set DataPicker and TimePicker via Espresso Driver (Eng)) AppiumはW3Cに沿った基本的なコマンドのほか、iOS/Androidなどに特化したコマンドを拡張しやすくするために mobile command を定義しています。これは、例えばW3Cの定義には当てはまらない上に、AndroidやiOS固有の機能を拡張するためによく使っています。 従来の機能追加の方法としては、各種コマンドは全て何らかのURIにマッピングされていました。 ただ、特定のDriverでしか使うことはないのに必要以上にURIを乱立させたくはありません。保守が難しくなってきます。 そのため、 mobile: というprefixをつけたコマンドを文字列で定義し、このように各々の固有な機能を定義するようにしました。Androidだと adb コマンド、iOSだと siri の機能を使ったコマンドなどが拡張されています。 ここでは、それらで定義されたAndroidの2つのコマンドを紹介しようと思います。 DatePickerとTimePicker 最近ではAndroidだとDatePicker, TimePicker, 任意のpublic method を呼び出すことができる backdoor などの機能が追加されました。 これらの機能は、Appium 1.10.0 などで automationName: espressoと指定すると利用可能な、 Espresso Driver に追加されたmobile commandです。技術的にはEspressoベースだからできるようになったことです。 これらは今まではuiautmaotor経由だったためにできなかった/不安定だったところを解消する可能性が高いです。 テストコード 先ほど埋め込んでいたanimation gifは、すでにruby_lib_coreに用意している以下のテストコードを動かしている時のものです。実際に mobile: setDate…More
[Flutter]Tests strategy in Flutter
I read the documentation of Flutter 1.0 based. I also tried to run each test type explained by the documentation. Flutter has three type testing feature. When I saw the page and below a table, I remember my opinion for mobile test automation like 1 or 2. The flutter also has a similar role for each…More