Learning Model Context Protocol

We have recently seen information related to the Model Context Protocol (MCP). I knew of them some part, but had some small questions. This post is a note for me about that. Below is a summary of our conversation with ChatGPT, as summarized by them. 🔍 Understanding the Model Context Protocol (MCP) Over the course…More

[Appium][Python]pytest-xdistを使ってparallel-testsを実現する

Selenium/Appium Advent Calendar 2018、4日目の記事です。 1 日目の 2018 年の Selenium と Appium について、なるべく他の人とかぶらないことに言及するテスト でも言及いただいたのですが、ちょうどこの 12 月より HeadSpin にて活動をはじめました。現状はまだ日本に滞在しています。 今、私は Appium project をメンテしています。その中で感じたここ最近の 普通 になったなということに並列実行(parallel execution)があります。 Appium の公式ドキュメントでも parallel-tests にある通り、その実行方法に関して言及しています。人によっては Selenium Grid を介していたりもします。その中で大事なものは、Appium の各種 Driver と通信できるように、ポートの設定とテスト端末の特定を適切に行うことです。 Appiumの基本構成としては、各種clientライブラリがAppiumサーバと通信します。その先は、Appiumサーバが各種Driver(例えばappium-xcuitest-driver)を経由して端末にインストールされたサーバ(例えばWebDriverAgent)と通信してOS提供のAPIを利用して操作を模倣します。そのため、それぞれの間で行われる通信が正しく行われる必要があります。 https://github.com/appium/ruby_lib_core#run-tests では、 parallel_tests を利用した parallelisation を例の 1 つとして実行可能にしています。 https://github.com/appium/ruby_lib#run-tests-in-parallel ではいくつかの parallelisation を載せています。例えば、Thread を使ったものや Process を使ったものを。 ここでは、Ruby ではなく、Python を使った例を載せておこうと思います。Appium の parallelisation…More

「食の世界地図」を読んだ

食の世界地図を読んだ。 食の起源を、文献などから辿れるだけ辿って、そのルーツを垣間見ることができる文庫。その食の時代背景なども含めて見ることができる。 少し前に読み終わっていたのだけれど、メモ。More

[Mac][RedwoodHQ]Run on Mac

RedwoodHQ on Macを過去書いた時点ではMacで動かすことができていなかったのですが、最近見て見るとLinux/Mac上でも動作するようになっていました。 http://redwoodhq.com/redwood-download/ からダウンロード・展開して、 を実行、 http://172.0.0.1:3000 へブラウザからアクセスする、です。私はNode 4.7.2で実行していました。 ちなみに、このRedwoodHQは以下にフォークされてPRなどが取り込まれていました。 https://github.com/wolterskluwer-redwoodhq/RedwoodHQ もともと作ってた人は退いたのかな。More

[Android][Accessibility]accessibility check in Espresso

Androidでは、以下のようにしているといくつかのAccessibilityCheckをEspresso実行時にViewに対してチェックしてくれます。 View要素に対するチェックはこれ https://github.com/google/Accessibility-Test-Framework-for-Android/blob/dafd7ed63daff45dba53c49c893ea9f84af4a942/src/main/java/com/google/android/apps/common/testing/accessibility/framework/AccessibilityCheckPreset.java#L58 accessibilityの付加情報に関してはこれ https://github.com/google/Accessibility-Test-Framework-for-Android/blob/dafd7ed63daff45dba53c49c893ea9f84af4a942/src/main/java/com/google/android/apps/common/testing/accessibility/framework/AccessibilityCheckPreset.java#L101 公式サイト https://google.github.io/android-testing-support-library/docs/accesibility-checking/ accessibility checkのGitHub https://github.com/google/Accessibility-Test-Framework-for-Android これに似た機能をEarlGreyでも実現してほしいというissueが立ってました。 – https://github.com/google/EarlGrey/issues/393 ここら辺をうまく拡張していくと、自分たちの組織におけるViewなどのチェックを拡充していくことができるのでないかなーと期待。More

[Elm]getting start Elm language

Elm is a functional language that compiles to JavaScript GitHub : https://github.com/elm-lang 知ってはいたのですが触っていなかったElm。少しきっかけがあったので触ってみました。 ※Elmについて、といった内容はここでは触れません。 この理由としては、チームメンバの1人がSwiftでとある機能を実装している時にこのElm Architectureから構成をインスパイアされたといっていたためです。といっても、Elm Architecture付近をチュートリアルを元に学んでみたというくらい。なので記法を学ぶというよりは、どんな問題を解決しようとどういう設計を行ったか、です。(そういえば、このElm->JSのコンパイラはHaskell製) 試したElmは0.18.0 tutorial(guide): https://guide.elm-lang.org/ tutorialをいくつか実際に動かしたGitHub repository: https://github.com/KazuCocoa/my_first_elm Elm、実行環境も elm-repl コマンドでターミナル上から簡単に動作みることできるし、 elm-reactor コマンド実行するとローカルホストにブラウザでアクセスするとすぐに動作みることができるので触ってみる障壁がとても低くて感動しました。ドキュメンテーションとか、コミュニティパッケージ群も揃っていました。テストツールとかも、パッケージとしていくつも既に存在しているみたいです。 http://package.elm-lang.org/help/documentation-format http://package.elm-lang.org/ Elixirをもともと触っていると感じたのですが、なかなかElixirと似通ったものがありました。類似言語に影響を受けているっぽいので文法的なところもなのですが、 One crucial detail here is that commands and subscriptions are data と書いていたり、 Elm treats errors as data とあるように、データの流れを基軸として表現しようとしているところです。 では、かいつまんで。 Architecture https://guide.elm-lang.org/architecture/ Elmの実装設計パターンは画面の操作を以下のように3つに分割してデータを記述するところ、データを更新するところ、それをViewに反映するところ、で分けるところです。これにより、基本的なボタンをタップするとか、そういうことに対してデータを受け取り、更新し、Viewに反映するという一定の操作を決まった定型文によって区切りながら実装することができるようになっています。 Model —…More

[Appium]preventWDAAttachments for XCUITest strategy

Appium1.6.2から、 preventWDAAttachments というパラメータが付与されました。 これは、WebDriverAgentを動作させるときにXcodeのDerivedDataに多くの不要なファイルを書き込むことを抑制するために、そのディレクトリの権限を読み込み専用(555)に変更させるものみたいです。 defaultはtrueのようですね。 https://github.com/appium/appium-xcuitest-driver/blob/0c36c7659373c1c82a1411e50fa2503920909624/lib/desired-caps.js#L45 ただ、これはXcodeの権限設定を一部変更することになるので、capsには明記しておいたほうが良さそう。More

[Elixir in Action]No technology is a silver bullet.

ここ最近、ざっとGetting startedやらexercism.io、PhoenixとElixirやその周辺ライブラリを触って、ちょっとしたライブラリも作って。Phoenix使って簡単なWebアプリ作って、というところをしました。 そんな折、Elixir in Actionを読み始めました。他のElixirの本も読もうと思うのですが、Actionシリーズなのでまずはこちらから読んでみようかな、と思いまして。 この書籍は言語自体の話から、Elixirのプラットフォームの話へと進んでいきます。多分、他の書籍も同じ。ただ、この書籍の著者はErlangを専門とする人のようで、RubyからElixirに寄った人たちとは異なった視点からの意見を望めます。良いですね。 Erlang Erlangの話から。Erlangはfault tolerance、Scalability、Distribution、Responsiveness、Live updateを重視した、高い可用性(high availability)を目指した言語です。それらを実現するための核が、concurrency。BEAM VM上に存在するプロセスとプロセス間通信を構築するなどでconcurrencyを核に添えた開発環境を構築できる、と。 WhatsAppsなんかはかなり有名ですね。私もErlangは少し触れたことがあります。ただ、言語の記述には慣れなかった… Elixir Elixirは、Erlangの記述を単純化したり、拡張することで描き易くしたものです。一言でいうとそんな感じなのですが、そこは開発者を取り込むために必要なものです。ClojurやRubyに影響を受けているので、そちら方面の人は馴染みやすそう。 No technology is a silver bullet. ErlangやElixirにも苦手なところがあります。この書籍では、その点も書いていて良かったです。 Speed: CやC++にはかないません。BEAM VMは、ハードウェア資源をめいいっぱい使うので、貧弱なハードウェアだと性能劣化が発生します。これは多くのプロセスを立ち上げ、処理を行っていくという特徴を持つから。なので、CPUの拘束が長い処理を行う場合、別の言語を選んだほうが良いでしょう。 Ecosystem: 単純に、まだ、エコシステムとしては小さい。 まだまだ先は長いですが、ちょっとづつ読んでいこう。 こういうfault toleranceなシステムや分散システムを前提としたシステムのテスト、品質(Quality)をどうやって評価するか、それをどうやって安定した開発に繋げることができるか?といったところ、テストエンジニアとして技術的な視点では非常に挑戦的で面白さを感じますね。 ただ、それらの先にユーザがいなければ自己満足な世界で終わるのでそこは忘れてはダメですね。More