トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

テストシンポジウム JaSST'19 Tokyo に行ってきました

こんにちは、QAエンジニアの坂田です。

去る3月27〜28日に、東京御茶ノ水で開催された JaSST'19 Tokyo に参加してきました。 少し日が経ってしまいましたが、ミニレポートしたいと思います。

今年は AI がテーマ

JaSST は NPO法人ソフトウェアテスト技術振興協会(ASTER)が2003年から全国各地で開催している国内最大級のソフトウェアテストシンポジウムです。

毎回、特定のテスト技法に関する技術的な発表からチーム運営やキャリア形成まで様々なトピックのセッションが開かれます。今年は「AI」がフィーチャーされた構成になっていました。 (メイン会場は特にAI絡みが多かった!)

「AI テストする(AIによるテスト自動化)」話や「AI テストする(例えば自動運転システムに対する品質保証)」話など、様々な観点からテストとAIの関わりを学べるシンポジウムでした。

基調講演:AI-Driven Testing

基調講演は「AI テストする」側のトピックとして、海外から Ultimate Software のTariq King氏を迎えてAI駆動のテスト自動化の取り組みが紹介されました。

ソースはGitHubで公開されています。素晴らしいですね。 github.com

私が聞いた限り、概ね以下の流れでテストが行われるようです。

Webサイトに対し、AIがサイト内を探索して入力エリアやボタン等を探す
  ↓
各要素に対し、サイト構造やDOM、前後のテキストの文脈からあるべき操作やインタラクションを推定する
  ↓
Test Agentがテスト実行プランを生成し、実際にテストを実行する
  ↓
実行後、テスト結果をレポートする
面白かった話
  • AIがテスト生成する際「IF→WHEN→THEN」の順にストーリーを組み立てる
    • 「FirstNameというテキストボックスを見つけた→空にしたままSUBMITを押す→エラーが表示される」など
    • 「事前条件→実行手順→期待結果」ということで、人間がテストを書く際のモデルと一緒ですね
  • AIがAI自身の動作を評価しフィードバックする仕組みを入れている
    • Adoptive behaviorと呼ばれてました
  • 並列実行が可能
    • 親分のTest Agentが多数の子workerを統制し、探索〜テスト実行を非同期かつ最適に行えるらしい

講演後も下記のような質疑が活発に行われました。

  • AIによってブラックボックス化されたテストを、我々はどう信頼し正しいと判定すれば良いか?
  • テスト結果の膨大なアウトプットに対し、どうトリアージを行えば良いか?
  • 人間の感覚に基づくテスト(ユーザビリティテストなど)は可能か?
  • Agentが学習すると、徐々に探索テストに近づくのではないか?そこに含まれるランダム性はどう制御できるか?
  • システムの正しい振る舞いをAIが推測するのにも限界があるのでは?
  • AIによる自律テストの今後は、汎化に向かうのか特化に向かうのか?

まだ開発は道半ばのようですが、今後の展開が楽しみです。

講演:AIプロダクトに対する品質保証の基本的考え方

こちらは「AI テストする」側の話です。 QA4AIコンソーシアム の設立発起人である電通大の西さんと国立情報学研究所の石川さんによる講演でした。

AIは下記の特性から従来の品質モデルによる評価やテストは不可能、新しい品質軸が必要、とのこと。

  • 帰納的開発である
    • 通常のプログラミング (演繹的開発) とは逆に、ML (機械学習) 技術は入出力ペアの集合から導き出し方 (関数) を構築するシステムである
    • 結果実装はブラックボックスになり、なぜ正しいのか説明できない
  • 確率的振る舞いをする
    • CACE (Changing Anything Changes Everything) 性により入力条件が微妙に変わっただけで出力が全く別物になる可能性がある
    • 非線形な振る舞いを予測できず同値クラスなど従来のテストアプローチも通用しないため、テスト不可能
    • 結局大量で多角的なデータによる検証が必要になり、データ生成・検証・評価の自動化も必須になる
AIの面白い(困った)特性の例
  • 自動運転の画像認識で天下一品の看板を進入禁止と認識し、永遠に天一に入れない
  • 同じく自動運転で、STOPの標識にステッカーを貼りつけた途端にGOの標識と誤認識する
  • オオカミの画像のどこが識別に効いたか分析したら、周りの雪景色しか見ていなかった
AIプロダクトの品質軸

以下の5つが提唱されました。

  • Data Integrity
  • Model Robustness
  • System Quality
  • Process Agility
  • Customer Expectation

システム面では上3つの 学習に用いるデータ 適用する機械学習モデル システム全体の信頼性・安全性 が該当します。

データに関しては学習の偏りや過学習を防ぐ必要があり、モデルに関しても筋の良いアルゴリズムを選定するなど、AIならではのテクニックを駆使しないと太刀打ちできなさそうだなぁ、、という感想。 信頼性・安全性もAIである以上確率的/非線形的な振る舞いは避けられず、クリティカルな機能や例外・制約・セーフティーネットに当たる部分は非AI(ルールベース)で押さえる等の考慮が必要だ、とのことでした。

講演資料

www.slideshare.net

参考資料:IoT/AI時代のテスティング・検証技術の最前線

www.slideshare.net

他に聴講したセッション

AI以外にもテスト自動化関連を中心にいくつか聞きました。長くなるのでこちらは割愛します。

  • テストの未来、品質の未来 ~自動化はテスター撲滅の夢を見るか?~
  • 赤い会社のテストエンジニアたちが語りつくす ~テスト現場で起こるリアル課題と対処策~
  • Unit Testing: What Every Tester and Developer Should Know

行ってみて

元々は自動化が目当てで参加を決めたのですが、色々聞いて一番刺激を受けたのはAIでした。 日々のQAそのものに直接生きる訳ではありませんが、全く新しい視点から改めて「品質とは」を考える良い機会になりました!

try! Swift Tokyo 2019に参加してきました!

こんにちは。iOSエンジニアの山口です!トレタnowのアプリ開発を担当しています。

先日、「try! Swift Tokyo 2019」が行われましたね。トレタはゴールドスポンサーとして参加し、ブース出展も行いました。来場者数は約800-900名、2日間で多くの方とお話しすることができました。ブースにお越しくださったみなさま、ありがとうございました。トレタnowを知っている方、その場でインストールしてくれた方、2日目に昨日早速使ったけどとっても感動したよ!と伝えに来てくださった方もいて、大変嬉しかったです。

f:id:kyo__hei:20190329153638j:plain

会場の様子

try! Swift には昨年も参加したのですが、年々海外からの参加者が増えており、1/3くらいは海外の方だった印象です。ブースもFirebase、IBM、Bitriseなど海外企業が多く参加しており、いたるところで英語が聞こえてくる状況でした。私は英語が得意ではなく「Firebase使ってるよ」くらいしか伝えられなかったので来年こそは質問できるよう頑張りたいです。

f:id:kyo__hei:20190329154053j:plain

セッションについて

私を含め参加者の多くが、普段はiOSアプリ開発でSwiftを使っている方が多いと思います。try! Swiftでは iOSアプリ開発に閉じず Swiftという言語にフォーカスしたセッションが多く、普段とは違った知識を得ることができました。個人的に興味深かったセッションをいくつかピックアップします。

⚡️🎤PixarのようなグラフィックをSwiftで実現する

CGのレンダリング手法の一つである、レイトレーシングをSwiftで実装した発表でした。

レイトレーシングとは私達が普段ものを見たり、カメラが映像を映し出す原理をシミュレートし、CGとしてレンダリングする手法です。具体的には、カメラからスクリーンに向かって光線(Ray)を無数に飛ばして、光線一つ一つに対してオブジェクトとの交差や反射・屈折を計算し最終的にスクリーンに到達する色を求めるというものです。

実装自体は、Metal等のグラフィックAPIを利用せずSwiftで地道に光線の計算を行い、ムービーとして書き出していました。Swiftの幅広さを証明するとても興味深い発表でした!

f:id:kyo__hei:20190329154901g:plain
レンダリング結果

Swiftでソーシャルネットワークをつくろう

KituraというSwift製のWeb Frameworkを使い、SNSのようなバックエンドシステムのデモを構築する発表でした。

私も2年ほど前にKituraを使ってチャットボットを実装した経験があり、Swiftを使ってシンプルに実装できる印象でした。また、今回注目したのはKituraを使ってWebAPIサーバを構築すれば、OpenAPI Specを自動生成してくれる点です。普段からWebAPIを利用する立場からすると、実装と齟齬のないAPIドキュメントやクライアントSDKが自動生成できることは大変嬉しいポイントです。

参加してみて

今回はiOSチーム3名、フロントエンドエンジニア1名、出展担当の2名で参加しました。セッションはもちろんのこと、チームメンバーと一緒に参加することで業務とは少し違った視点でSwiftやiOS開発について盛り上がることができ、とても楽しかったです。また、懇親会では国内・海外のエンジニアと話す機会もあり、刺激をたくさん受けられるすばらしいカンファレンスでした!運営の方々に対して感謝の気持ちでいっぱいです。ありがとうございました!

最後はやっぱりトレタnow

初日のカンファレンスが終わって。 私はスピーカーディナーに参加させて頂いたのですが、他のメンバーは早速トレタnowを使って2次会に行ってました。

まだリリースしたばかりなので地域も都心部に限定されているのですが、今広めるためにメンバー一同頑張っているところです。 try! Swiftの様なカンファレンスや勉強会後の「この後どうする?」に使えるアプリになっています! UIもこだわって作っているので是非使ってみて下さいね!

f:id:y_koh:20190329164341j:plain

Empty State表示共通化の事例

トレタ Advent Calendar 2018の24日目の記事です。
iOSエンジニアの@kenkenken_3が担当しております。

Empty State表示(0件表示、何もないよ状態の表示)共通化について、トレタの事例をご紹介します。

potatotips #57で発表させてもらいました。

本件はエンジニアだけでなく、デザイナー・プロダクトマネージャーと協力することによって実現したいい取り組みだったと感じています。

そして、スライドの出来栄えもいい感じではなかったでしょうか・・・?
実はこれ、トレタのデザイナーが作成したテンプレートを利用しています!
以前はスライド作成に結構時間がかかっていたのですが、今回は大幅にスライド作成時間短縮できた上にクオリティは格段にアップ!嬉しい!!

テンプレートに関してはデザイナーdate001の記事がありますのでこちらも是非ご覧ください。

note.mu

こんな感じで私としては毎日楽しんで仕事ができています。
興味を持った方がいたらお気軽にトレタに遊びに来てくださいね!

明日はトレタ Advent Calendar 2018最終日。
記事を書くのはなんとあの・・・!?
お楽しみに!!

© Toreta, Inc.

Powered by Hatena Blog