#STAREAST day1 でアジャイルテスティングと自動化を中心に参加したメモ

世界最大級のソフトウェアテストカンファレンス「STAREAST」がオンラインで開催されました。カンファレンスは現地の空気を吸うのが重要だと思っていますが、オンラインはオンラインで便利な点もあります。ここでは「アジャイルテスト(Agile testing)」と「自動化(Test automation)」のセッションを中心に参加したときのメモをざっくりまとめます。

STAR Software Testing Conference

STAR Software Testing Conferenceは歴史あるカンファレンスですが、今回はオンラインでの開催となりました。

チャット機能もついているので、セッション聞きながらあーだこーだできます。たくさんの国から参加者が集まっていますね。

セッションのテーマを見てみると以下のように分かれており、カンファレンスのトレンドがよく分かります。

  • Design Thinking
  • Agile Testing
  • AI/ML
  • Test Strategy
  • Automation
  • Agile Teams
  • Testing In Production
  • Quality
  • DevOps
  • Career Building
  • Performance Testing
  • Security
  • Test Techniques

「Test Techniques」に偏りがちな日本のカンファレンスとは違い、より実務的な内容が多く感じます。それもそのはず。テストツールなどのスポンサーセッションがほとんどだからでしょうね。STARはツールやテスト系新サービスのショールームのようです。

ちょっとまえにヨーロッパのイベント「EuroSTAR」に参加しましたが、EuroSTARのセッションはQAエンジニアのコミュニティ色が強い印象です。一方、STARの「AIは世界を救う」とか「自動化でコスト削減どーん」といったUSならではの「盛られた」セッションがお好きな模様。

Return to the Circus: A Retrospective on Software Security

ひとつめのキーノートは、ソフトウェアセキュリティのふりかえりセッション。この15年の移り変わりを確認し、何がが変わって何が変わらなかったか。そして未来はどうなるかを考えるセッションです。

以下、ざっくり。

セキュリティバグについて調べてみると、ほとんどが既知のバグであり、問題になっているのはエッジケースがほとんど。上記のような図が紹介されていましたが、これはとてもわかりやすい説明です。

つまり、がんばればほとんどの脆弱性を防げるということ。

たとえば、誰もが学んだことのあるであろうSQLインジェクションはまだ現役でがんばっています。これだけ知名度が高いのに、OWASP top ten throughout the yearsをみると毎年上位に食い込んでくるツワモノです。

スピーカーいわく、「だいぶましになったけど、ねずみ算的にサイト・アプリ・コードが増えているから減らない」そう。

最近は充実したフレームワークやクラウド環境によって簡単にアプリが作れますし、StackOverFlowの功罪として「問題コードのコピペ大量生産問題」もあります。

さらにパッケージシステムの進化が進み、http://www.modulecounts.com/ を見て分かる通り、2010年に登場したNPMが世界を制覇しました。2019年で100万パッケージ到達です。

その恩恵と同時に複雑性も増しました。Analyzing the NPM dependency networkに表現されるように、もう人間の目で依存関係を理解するのは不可能です。

データ漏洩についてはどうでしょう? GitHubで簡単に調べただけで、AWSの生Key情報が1万件ヒットする時代です。こちらもSQLインジェクションに負けず、現役バリバリの脆弱性と言えます。

発表者は、テストや品質について、6つポイントをまとめとして挙げていました。

  1. Test is not dead
    • セキュリティテストはいまだに必要
    • 環境の変化により、ML、Cloud、Mobileといった領域のスペシャリティが必須スキルになっています
  2. Open mindset
    • NPMの説明でもあったようにOSSが台頭する現在、オープンな情報や技術にアクセスするマインドセットが重要です
    • 組織に閉じこもってエッジケース攻めてる場合じゃないってこと
  3. Manual days of testing are long behind us
    • 手動テストはとっくの昔のものなっています
    • DevOpsを受け入れるしかありません
    • エンジニアリングにおけるテスト領域は関係者全員の共通の仕事です
  4. Understand dependency chains
    • NPMのようなパッケージシステムに限らず、マイクロサービスなど、依存関係の理解が求められます
    • これはソフトウェアに限らずCPUなどのハードウェアにも関係があります(Spectre & Meltdown CPU issues)
  5. Data, data, everywhere!
    • データはどこにでもたくさんあります
    • どんな場所にどんなデータがあるか理解が必要です
  6. There is no border
    • 境界線なんてもうありません
      • Cloud, SaaS, BYOD and multi-tenant infrastructure
      • 簡単に環境構築できるようになりましたが、同時にShared responsibility security modelを受け入れなければなりません。
      • 人間はミスをしますし、悪意のある人間は隣りに座っているかもしれないわけです

最後のメッセージはこちら。

everything old is new again

Return to the Circus: A Retrospective on Software Securityより

温故知新といいますか、決して古くならいといいますか、過ちは繰り返されると言うか、深い言葉ですね。

Wait, You Can Test That? The Art of Testing Art and the Science of Testing Fun

こちらの方はゲーム会社のQAエンジニア。上の図の表すとおり、考えるべき観点がたくさんありすぎ、さらにそれらは互いに影響し合うのがゲームの宿命。ゲームのQAたいへんだなぁと感じるしかないキーノートでした。

大変だけど、MDA: A Formal Approach to Game Design and Game Researchをベースに考えるといいらしい。

Boost Quality in DevOps Pipelines with Agile Test Management

俺たちは「No.1 leader Continuous testing and advanced automation」だぜと高らかに宣言するTricentisのセッション。

海外のテスト関係ツールはかなり作り込まれていて、画面上でノンプログラミングで実装でき、さらにテスト管理、データ管理、CI/CDなどを自社で統合的に用意していたり、Tricentisのようにプラグイン的に各サービスをつなげるアーキテクチャをとったりしています。

今回のイベントはオンライン開催ですが、スポンサーブースもまわれてデモも見れて、チャットもできてなかなかよかったです。

ITP5 Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow

「テスト自動化は「品質」と「効率」の2軸で考えるべし」と説いてるのが面白かったです。自動化を進める上での必要な要素がまとまっているのはよかったけどキャプチャがまにあわず。。。

  • Test automation
    • Efficiency and quality
  • Controlled environment
    • Fresh
    • Repeatable
  • Continuous Integration
    • headless process
    • Design code pipeline management
  • Dashboads
    • Visibility of successes and failures
    • static code analysis
    • test status per run/release
    • deploy status
  • Define Future state
    • Maturity

カンファレンスを通して「Maturity(成熟度)」という言葉をよく聞きました。組織やチーム、プロダクトなど、それらの成熟度に合わせたアクションを取っていく。

まぁ、こう書けば当たり前に見えますが、理想を求めすぎて転んだりもするので気をつけないと。

それにしてもみんな「成熟度」を気にしているのだな。

How AI is Revolutionizing Software Test Automation

時代はAIですよまじでまじで。AIはテスト領域でもしばらくはホットトピックなのでしょうね。

このセッションではAIについて、テスト自動化の観点で整理されているのがとてもよかったです。AIやML、ディープラーニングなどをちょっと勉強したあとだったので、技術的にどう自動化に使われていくかが見えてきました。

  • 時代背景
    • Package > Web > Mobile > Everything
    • 大量のテスト時代(Tons of test)
    • 複雑さも向上
  • 複雑さを壊すためにどうすべきか?
    • もっと人を巻き込む
    • 必要なものを必要なだけ
    • もっとスマートに。自動化
  • まとめると「AIはすげー重要」
  • AIが助けてくれるもの(Test automation challenge)
    • Fast pace releases(Time to market challenges)
      • AIによってIncrease Reliabilityへ(信頼性の向上)
    • Automation カバレッジ
      • AIによってEliminate Skill Barriers (QAエンジニアのスキル不足の解消)
    • High Maintenance
      • AIによってReduce Maintenance(後述)
  • Fast pace releases
    • OSやプラットフォームごとのテストケースが必要だったが、AIによる要素や部品検出によって、1シナリオで複数環境実行が当たり前になるつまりメンテナンスコストがこの場合、3分の1になる
      • このあたりはiOSとAndroidとWindowsアプリをワンソースで作りたい願望に似てる
  • Automation カバレッジ
    • QAエンジニアのスキルの壁
      • 特にコーディング
      • 技術知識
      • 個人的にこれは簡単に超えられない気がする
  • High Maintenance
    • テスト失敗を教えてあげればAIは学ぶ
    • 実際にFBフォームをサービスにつけてモデルを改善しているらしい
  • UFT one

Shifting Left: It’s Not Just about Testing Earlier

初日最後はシフトレフト(Shift left)について。シフトレフトについてはぐぐったらたくさんでてきますが、ようは「早期にテスト活動したほうが徳だよ」ということだと思います。何度も事例として紹介されていたのは、IBMかなんかが発表した「リリース後のメンテナンスは設計のバグ発見の100倍コストがかかるよ」という指標でした。

テスト自動化も大切な要素なのですが、品質を作り込んでテストしなくても良い状態をめざすほうが健康的です。

しかしながら、従来型のプロセスを中心に、人間はだめな生き物なのでプロジェクトの後半になって盛り上がるケースが多いという事実があります。

これを、いやいや前半盛り上がろうぜというのがシフトレフトです。マインドセットの変更が必要かも。

それとは別にシフトライトもあります。たとえばNetFlixのカオスエンジニアリングは、カンファレンスのテーマにもなっている「Testing In Production」のひとつと言えます。それ以外でもA/Bテストも本番でのテストで、テストや品質がテストフェーズの右側にも進んでいます

重要なポイントとして書かれていたのは以下。

  • Feedback loops
    • これ重要。まじ重要
    • スクラムイベントとかまじ重要
  • 完了の定義と準備OKの定義
    • これ重要。まじ重要
    • Featureの定義が未熟でも、これがチェックポイントになり得る
  • Opsとしてやれること
    • Static code analysis
    • Feature flagging
    • Testing in Production
    • Blue/Green, A/B, canary
    • Logging and monitoring

おわりに

現地の雰囲気を感じられないのは残念ですが、セッションの内容はどれも興味深かったのでとても満足してます。

それにしても眠いので、今から少し寝て、今日夜21時ごろからはじまるDay2も楽しみます。