スティーブ・マコネルの「ソフトウェア見積り」読み始めた。なんでこの本今まで読んでこなかったんだろう。15年前に読んでおきたかった。もっと定番本として取り上げられるべき本なんじゃないか。人月の神話なんかよりよっぽど実際の役にたつ気がするんだが…。

Maestroというテスト自動化ツールについて

MaestroというE2Eテスト自動化ツールについて思うことがあるので、書く。

Maestroは、iOS、Android、WebのE2Eテスト実装・実行のためのツールで、以下のような特徴がある:

見た目はこんな感じ

# flow_contacts_android.yaml

appId: com.android.contacts
---
- launchApp
- tapOn: "Create new contact"
- tapOn: "First Name"
- inputText: "John"
- tapOn: "Last Name"
- inputText: "Snow"
- tapOn: "Save"

E2Eテスト実装の経験がある人だったら、パッと見、「あっ、良さそう」と思うのではないかと思う。実際ぼくは思った。なにしろ簡潔で、テストステップの本質だけが抽出されたような見た目をしているので。ただ、各ステップ自体は極限まで簡潔ではあるものの、シナリオがある程度複雑になれば、テストの「意図」を読み解くのは、やはり労力が必要になってくる。まあこれは、どのE2Eツールについても言えることなので、とくだんMaestroがダメということではなく、むしろ簡潔なテキストで表現されているぶん読み解きやすい部類だと思う。

とはいえ、自作のアプリで実際につかってみると、思ったほど便利ではなかった。むしろ本質的にコンセプトがあまりイケてないのではないかという気さえした。YAMLの簡潔なフォーマットというコンセプト自体はなにも文句はない。ただ、エンジンがあまり賢くない。というか、賢いのだけど、賢さが中途半端な感がある。UIのアニメーションがidleになったかどうかとかを見るロジックがあるようなのだけど、それが誤動作して、意図してないところでタップが暴発したりする。そういう挙動に遭遇したときには、試行錯誤がはじまる。Maestroの挙動を観察して、なにが原因なのか突き止める必要がある。もっとも基本の動作となるtapOnにも、実はretryTapIfNoChangeやwaitToSettleTimeoutMsといったオプションが用意されており、それらを適用してみてどうにかして最後までうまいこと進んでくれるシナリオを実装する。

MaestroでのE2Eテスト実装は、はじめの期待とは裏腹に、単に望む結果を羅列しただけだと、期待どおりになってくれなかった。一見簡潔に見えるものの、背後には何らかのロジックがあるらしい。そしてそれはブラックボックスである。結果、使用感としては、使っているというより使われているという感覚になり、ストレスフルだった。それから、Loop、条件分岐、共通部分の外部ファイル化など、抽象化、冗長性排除の仕組みも一通りあるものの、ここでは逆にYAMLによるフォーマットの制約が足枷になり、ぶっちゃけ使い辛い。正直、これを使うくらいなら、ふつうにAppiumのコードをTypeScriptで書いたほうがストレスなく、柔軟に、理想のE2Eテストが書けると思う。

また、YAMLで書けてガチプログラミング言語不要とは言え、それだけだと、QAという文脈においていろいろ不都合があることを認識しているからなのか、Maestro Studioという、実際にアプリ画面をさわりながらYAMLを構築できるGUIツールも用意している。ただ、これもなかなか不思議で、現在のところ部分的なコマンドしかサポートしていない。たとえば、inputTextとかがなかったりする。いずれにせよ、Loopや条件分岐なども、このGUIでうまくサポートするのは難しいだろうから、あくまで補助的な立ち位置のツールとなる。もちろん、accessibility IDなどを画面上で簡単に確認できるのはすごく便利ではあるけど、けっきょくYAMLには向き合わなければいけない。中途半端なのかなと思った。

ただ、一個可能性があるなと感じるのは、このYAMLのフォーマットは、LLMに食わせても、たぶんそのまま実行してくれるので、背後のロジックを完全にAIにすげかえてもうまくいくポテンシャルはあるのかなという気がした。まあ、けっきょくAIにやらせるのであれば、このフォーマットでもMaestroでもなくていいかもしれないけど…。

LLMによるコーディングというのは、人の身では成しえない大量の出力を短時間で、かつ不確実な形で行うというのが特徴で、やっかいなところでもある。すると、よく言われるように、人がボトルネックになる。つまり、成果物の精査がいままで以上に重要になる一方、それを人がいままでと変わらないやりかたでやっていたのでは、到底間に合わない。だから、ある種の可視化技術、俯瞰して把握する技術が重要になってくるのかもしれない。

Context: davidbau.com/archives/…

思い込みの良い点は、行動をうながすということで、行動すればフィードバックを得られるので前進できる。原動力になり得る。

まあ当たり前かもだけど、日本の認定NPOしか対象にならないそう(LLM)

Torに寄付したら、控除できるよってメール来たけど、日本では無理だよね?

よくよく考えると、一歳という年齢の長さは閏年などで伸び縮みするんだよなあ。44歳という特定の年齢の長さも、人によって違う。他の惑星で地球と似たような日付システムを採用してるとこがあったら、もっと違うかもしれない。まあ、このことは地球ではほとんど問題にならないな。

おれは中央線ユーザー。まれに会社に行くとき、最近はいつもグリーン車だけど、今朝はグリーン車なのに混んでて納得性低かった。特快とかだと混んでしまうようだ。べつに速さは要らないので、今後は常にただの快速で行くこと。