本気でNoCode & One Click Testingを目指したときの話
こちらはウイングアーク Agile and DevOps Stories のAdvent Calendar 2021、2021年12月2日の投稿です。
こんにちは。ウイングアーク1stでソフトウェア&品質改善部副部長兼DEJIRENグループのマネージャーをしている井川です。
私は異端のエンジニア(自称マッドサイエンティスト)なので、ブログを書くとなったときの題材は全てユニークなものになると思います。
さて、これから書くのは今から12年程前のお話しです。
当時の私は日本発の技術で世界のソフトウェア開発の品質保証の分野に革命を起こしてやろう!と考える、情熱溢れるエンジニアでした。若かりし頃の私は、様々な困難を乗り越えて世界にソフトウェア革命を起こすことができたのでしょうか。
ここからは、12年前の私がブログを書いていると思ってください。
もし、目の前にあるボタンをOne Clickしただけで、全てのテストが自動的に実行されて、そのソフトウェアやサービスの品質を測定出来たら素晴らしいと思いませんか?
結論から言えば、一生懸命テストコードを書いてテストを全て自動化すれば可能です。
しかし、誰もが気が付いていると思いますが、そんなに自動化テスト作成に時間を割いてもコスト的に元が取れません。自己満足でやるのであればいいのですが、会社の開発するプロダクトでやってしまうと、大赤字になってしまいます。
では、そこまでわかっているのに何故「One Click Testing」にこだわったのか。それは私が「マニュアルテスト(いわゆる手動のテスト)をするのが大嫌いな開発者だからです」
いくらきれいなソースコードを書いて、開発時に品質を高めていったとしても、そこは人間がやることなので必ずミスが混入します。ユニットテストを充実させて単機能レベルでは確実に動くことを開発時に確認しても、結合・システムテストレベルで何が起こるかは、単独のエンジニアが把握できる規模を超えてきます。
だからテストを設計して実行するという活動は、避けて通ることができません。しかも大規模なプロダクトになるほどテスト工数は多く必要になります。
ところが前述のとおり、私はマニュアルテストを実行することが嫌いです。嫌いなものは嫌いなのです。大量のマニュアルテストをやっているとストレスで死んでしまうくらい嫌いです。
マニュアルテストは嫌いなのですが、少なくとも機能正確性の面においては高水準のものを作りたいと考えています。
・マニュアルテストは嫌だからテストは自動化したい。
・テストを自動化するためにスクリプトを書く工数は使いたくない。
このぶつかり合う事象を深く考えて突き詰めていった結果、ある一つの結論にたどり着きました。
「NoCode & One Clickで世の中の全てのソフトウェアの状態を測定できる汎用テストツールを作ろう」
考えるまでもなく、期待値がわからないものをテストすることは不可能だということにすぐに気が付きました。(例えばデフォルト値が正しく設定されているかというテストを、期待値なしで実施することはできませんよね。)
なので、測定結果を観測してバグであるか否かを判断する部分はスコープから外しました。私は神ではありませんでした。笑
というわけで、そのソフトウェアの仕組みを考え、まず特許を取りました。
<ツリ−構造を利用した、ユ−ザ・インタフェイスの構成要素情報の記録およびユ−ザ・インタ−フェイス操作を記録再生するためのプログラム>
特許を先に取得するのは、この仕組みを他社に模倣されて開発されるのを防ぐためです。また、リリースを先に行うと先進性や新規性が無いとされて特許が取得できません。
この程度であれば特許を取るのは簡単です。弁理士の力を借りることなく単独で書き上げ、特許庁に提出しに行きました。審査も意外と簡単に通りました。(IT特許の取り方をネタにブログを書くのもいいな)
特許の内容はざっくりとですが以下のようなものです。
・アプリケーションに実装されているUIの情報を芋づる式にDBに格納するためのロジック
・格納したDBをツリー状に表示されるロジック
・取得したUIが同じ要素を持っていた場合の処理方法
・格納DBの構造
そして、その特許のロジックを使ってツールを作成しました。(※不完全な状態で開発中止してしまったのでインストールしないほうがいいです)
試しに、Windows標準のNotepadをこのツールにかけると、Notepadの持っているUI要素の全てが情報として自動的に収集されて、DBに格納され、ツール上ではツリー形式で表示されます。
対象はWebページであってもかまいません。
「NoCodeで(一行もスクリプトを書かずに)」
「One Clickで」
「対象アプリケーションの持つ全てのUI情報を取得できます」
勝利を確信した瞬間でした。懐疑的な方は、特許に書かれているロジックを熟読してください。
このツールはCI/CDに組み込まれ、コード変更の度に差分が検出され、開発者は想定外のエラーに素早く気が付くことができるでしょう。しかも、テストにかかるコストはほぼゼロ。メンテナンス工数もほぼゼロ。期待値と異なる結果になっているかどうかは、最初にツールを動かした後に一回だけ行えばいいのです。
今、世界のITに革命を起こすツールがここ日本で爆誕したのである!!
ん?って・・・あれ?2021年現在、世界が変わった感じがしませんね。おかしいなー。夢でもみていたのでしょうか。エル・プサイ・コングルゥ・・・。それが世界の選択か・・・。
いいえ、このプロダクトは2012年のWingarc1stアイディアコンテストで大賞を受賞し、その後全社バックアップの元で開発がおこなわれることになっていました。当時にしても評価の高い発明だったと言えます。
その後9年間、開発が中断した理由は私の転職によるものです。プロジェクトマネジメントや経営が楽しくなってしまい、このプロダクトのことを忘れていました。
ただ、最近になってWingarc1stに復職した私は
「やっぱりこれって今でもIT業界に革命を起こす発明だよね」
と改めて思ったので、UICrawler Ver.2.0の開発を再開しようと思います。というか開発を再開しています。気長にお待ちください。
以上、よろしくお願いいたします。
次回ブログでは「10回の転職を経て得たもの失ったもの」を執筆予定です。