Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

ソフトウェアテストの大規模カンファレンス「STARWEST」で学んだ3つのこと

f:id:gmgchow:20181025173535j:plain:w500
ステージ上で講演するスピーカー

* English follows Japanese

Automation & QA グループ(通称:AQA)でぶりぶり自動化している@gloriaです。最近は、iOSアプリの自動テスト実装などを中心に担当しています。

9月の下旬から10月の頭にかけて、カリフォルニアのアナハイムで開催された「STARWEST Software Testing Conference」に参加しました。STARWESTは、品質保証や自動化に関するトピックが中心のカンファレンスです。

* なお、この記事は、@gloriaの原文(英語)を意訳しております。原文はこの記事の下部にありますのであわせてお楽しみください。

なぜSTARWESTなのか?

f:id:gmgchow:20181025173654p:plain:w500

STARWESTは6日にわたり、80を超えるチュートリアル、ワークショップ、プレゼンテーションが開催されます。そして、世界中から1000人以上のソフトウェアテスター、自動化エンジニア、開発者、マネージャーが知識や情熱を共有するために世界中から集まってきます。スピーカーも豪華で、マイクロソフト、eBay、インテルといった巨大IT企業や、ISTQB (国際ソフトウェアテスト資格認定委員会) といったプログラムで構成されています

f:id:gmgchow:20181025174048j:plain:w500
セッション前のチュートリアルルーム

カンファレンスはとても興味深いものでした。それは、ソフトウェアテストに直結した、とても大きなカンファレンスの一つですし、とても長い歴史のあるカンファレンスでもあるからです(最初のSTARWESTはなんと1992年に開催!)。世界中から集まったスペシャリストたちは、最近の自動化に関するリサーチや品質保証に関するベストプラクティスを共有してくれます。このカンファレンスに参加することによって、メルカリAQAチームが未来のソフトウェアテストやその自動化にむかって進んでいくための知識を得たいと思いました。

今回、STARWESTで学んだことが3つあります。

その1:AIは自動化の未来

f:id:gmgchow:20180822171509p:plain:w500
AIによって生成された2つのテストケース( https://tech.mercari.com/entry/2018/08/23/184237 より)

ソフトウェアテストのためにAI(Artificial Intelligence)を利用するアイデアは、最近になってその領域をとても広げています。そのゴールとして考えられているのは「過去の結果やパターンを活用し、テストケースを自分自身で作り、実行し、メンテナンスするAIを作る」です。

リサーチはまだ続いていますが、AIや機械学習(ML)は、この数年以内に自動化の文脈でとても広く使われれうようになっています。そして、これら技術によって、テストや自動化の方法が変わっていくと考えられます。

その2:アジャイルからDevOpsへ。注目される「継続的テスティング」

f:id:gmgchow:20181025174630p:plain:w500
DevOpsの4つの原則

過去数年間で、ソフトウェア開発におけるアジャイル開発の認知度は高まってきました。しかし、継続的インテグレーション(CI)継続的テスティング(CT)継続的デリバリ(CD)継続的モニタリング(CM)という4つの原則を中心としたDevOpsという新しい方法論が現れています。

f:id:gmgchow:20181025174848p:plain:w500

DevOpsにおいて開発者は、よりテストや品質保証に対する役割を担うようになり、自動テスト(単体テストや結合テスト、UIテストなど)は、コードがコミットされるたびに実行され、結果も品質を維持するために継続的にモニタリングされるようになります。機能を作ったり、作ってからQAエンジニアにテストを任せる代わりに、開発者は即時的なフィードバックをすべてのコミットから手に入れ、早期にバグを見つけられるようになります。このような傾向は「Shift Left Movement」と呼ばれており、左から右に開発工程が流れるとすれば、テストというものがどんどん左の開発ステージへと向かっていきます。そして、リアルタイムでバグをみつけ、修正していくのです。

f:id:gmgchow:20181025174922p:plain:w500
ウォーターフォール、アジャイル、DevOpsにおけるリリースサイクルの違い

アジャイル開発において、テストフェーズはボトルネックになりがちだと言われてきました。しかし、DevOpsが登場したことによって、自動テストが開発ステージに組み込まれるようになります。実際のテストフェーズはより短くなり、すばやいリリースが可能になります。短い開発サイクルや頻繁なリリースはより重要になってきており、たくさんの企業もDevOpsの実現へと向かっています。

その3:テストメトリクスやデータ分析の重要性

f:id:gmgchow:20181025175429p:plain:w500
4つの重要な測定値と5つのメトリクスカテゴリ

テストメトリクスのレポーティングや分析は、ソフトウェアテストにおいて、とても重要な部分を占めてきました。ソフトウェア開発プロセス内で、メトリクスは定量的な測定となり、レポートや分析によって、プロジェクトがどういう状態なのかという視点を提供してくれます。メトリクスは、見る人によって変化します。たとえば、プロダクトマネージャは、開発者やQAエンジニアと比べると、違うメトリクスを欲しがるものです。なぜなら、技術的な詳細よりも、顧客に対するインパクトに興味を持っているからです。一般的に、プロジェクトにおいて4つの重要な測定するための特性があると言われています。それは、現在のプロセスの価値、テスト結果の予測性、チームの生産性、仕事の品質です。

QAと自動化に関するメトリクスだと、5つのカテゴリがあります。

  • プロダクト品質: 顧客の経験を通したプロダクトの品質。たとえば、「本番環境において、顧客から報告されたバグの数」や「顧客からの一日の問い合わせ数」などがこのカテゴリに当てはまります。これらのメトリクスは、プロダクトマネージャやそれより上位のマネジメント層が特に興味をもつものです。
  • テストの状態: テスト状態を反映したメトリクスです。たとえば、「失敗したテストケースの数」や「自動テストによってカバーされた機能カバレッジ」です。両方とも現在のテスト状態を表したものになっています。
  • テストの有効性: テストプロセスがきちんと品質を保証しているかを表すメトリクスです。たとえば「ビルドから次のビルドまでの間に入り込んだバグの数」や「テストケースに一致しないユーザーストーリーの数」があり、現在のテストプロセスの効力を測定します。
  • テストの効率性: 現在のテストプロセスの効率性をあらわすメトリクスです。たとえば、「マニュアルテストに使っている時間」や「自動テストのメンテナンス時間 VS 新しいテストの作成時間の割合」です。どこにどうテスト時間を使っているかが明確にわかります。
  • リソース: プロジェクトリソースの適切さを測定します。たとえば「実際に必要な開発時間 VS 予想時間」や「それぞれのスプリントで完了したストーリーポイント数」です。これらはプロジェクトマネージャがリソースコントロールを評価するのに役立ちます。

テストにまつわるメトリクスを集め、分析することはとても重要です。なぜなら、それぬきで、現在のテストプロセスを評価することができないからです。収集と分析によって、パターンやボトルネックを導き出し、潜在的な改善点を特定できるようになります。

おわりに

f:id:gmgchow:20181025175748j:plain:w500
チュートリアルセッションで使った資料

今回、STARWESTに参加する機会をもて、とてもうれしくおもっています。世界中から集まった優秀なエンジニアやマネージャ、テスターから情熱や知識を共有してもらい、とても刺激的な経験となりました。カンファレンス期間中にたくさんのことも学びました。最新のソフトウェアテストや自動化技術に興味があるなら、ぜひこのカンファレンスへの参加をおすすめします。

f:id:gmgchow:20181025180637j:plain:w500
「晴れの州」カリフォルニアはさすがにとても綺麗でした

今月の「AQA POP TALK」で STARWEST の報告も行われるので、よかったら是非参加してください!

mercaridev.connpass.com

Original Text

f:id:gmgchow:20181025173535j:plain:w500
A speaker presenting on stage

Hello. This is @gloria, an Automation Engineer from Mercari’s Automation & Quality Assurance Group (shortened to AQA). I mostly work on automation for Mercari’s iOS app.

Last week, I went to Anaheim, California to attend STARWEST Conference, a conference about quality assurance and automation.

Why STARWEST?

f:id:gmgchow:20181025173654p:plain:w500

STARWEST is a six-day event with over 80 tutorials, workshops, and presentations. Over 1000 software testers, automation engineers, developers, and managers from all over the world gathered to share their knowledge and passion. Some key speakers from big companies such as Microsoft, eBay, Intel, and ISTQB (International Software Testing Qualifications Board) were also present.

f:id:gmgchow:20181025174048j:plain:w500
In the tutorial room waiting for the session to start

This conference caught my interest because it is one of the biggest and longest-running conferences that focuses solely on software testing (the first STARWEST was actually held in 1992!). Specialists from around the world came together to present the latest research in automation and best practices for quality assurance. By attending this event, I hoped to gain knowledge to help move Mercari’s AQA team forwards into the future of software testing and automation. There are three important lessons that I learned.

Point 1: AI is the Future of Automation

f:id:gmgchow:20180822171509p:plain:w500
A tree model showing two test cases that can be generated by AI ( from https://tech.mercari.com/entry/2018/08/23/184237 )

Recently, the idea of using artificial intelligence for software testing has been a growing area of research. The goal is to create an AI that is capable of creating, executing, and maintaining test cases by itself. To do this, the AI will use various models such as decision trees and Bayesian networks to create test cases, while leveraging machine learning techniques to adjust and maintain test cases based on past results and patterns.

Although research is still on-going, it is expected that AI and machine learning will become widely-used in automation within the next few years, and it will change the way that we test and automate.

Point 2: From Agile to DevOps: The Rise of ‘Continuous Testing’

f:id:gmgchow:20181025174630p:plain:w500
DevOps. Four principles

In the past few years, Agile methodology has gained popularity in the software development world. However, a new methodology has recently emerged- DevOps. DevOps methodology focuses on four principles: Continuous Integration (CI), Continuous Testing (CT), Continuous Delivery (CD), and Continuous Monitoring (CM). While CI and CD are not new, CT (Continuous Testing) and CM (Continuous Monitoring) stood out to me.

f:id:gmgchow:20181025174848p:plain:w500

Under DevOps methodology, developers take on a more active role in testing and quality assurance-- automated tests (unit tests, integration tests, UI tests, etc.) are executed with every code commit and the results are constantly monitored to maintain quality. Instead of creating a feature and then handing it over to QA to test, developers will have instant feedback for every commit so that bugs can be caught early on. This is called the “Shift Left Movement”-- testing has shifted left into the development stage so that bugs are caught and fixed in real time.

f:id:gmgchow:20181025174922p:plain:w500
A diagram showing the length of release cycles in Waterfall, Agile, and DevOps

It has long been said that the QA phase tends to be the bottleneck in Agile software development but under DevOps, because automated testing is incorporated into the development stage, the actual testing stage is shortened and release becomes quicker. As shorter development cycles and frequent releases are becoming increasingly important, more and more companies are moving towards DevOps methodology.

Point 3: The Importance of Test Metrics and Data Analytics

f:id:gmgchow:20181025175429p:plain:w500
A matrix showing the four important measures and the five main categories of metrics

The reporting and analysis of metrics are important parts of software testing. A metric is any quantitative measurement taken during the software development process that is analyzed and reported to provide insight on how the project is doing. The metrics that are of interest varies depending on who the data is for-- for example, product managers will want to measure different metrics than developers and QA because they are more interested in customer impact than technical details. Generally, there are four important characteristics to measure for any given project: the value of the current processes, the predictability of test results, the productivity of the team, and the quality of the work.

There are five main categories of metrics relating to QA and automation:

Quality of Product: These metrics measure the quality of the product as experienced by customers. For example, “the number of bugs reported by customers in production” and “the number of customer service inquiries per day” both fit into this category. These metrics are particularly of interest to product managers and upper management.

Test Status: These metrics reflect the status of testing. For example, “the number of failed test cases” and “the percentage of features covered by automated tests” both provide insight on the current status of testing.

Test Effectiveness: These metrics measure how well the testing process actually ensures quality. For example, “the number of bugs introduced in a build that were not discovered until the next build” and “the number of stories that do not have a corresponding test case” both measure how effective current testing processes are.

Test Efficiency: These metrics measure efficiency of the current testing processes. For example, “the number of hours spent manual testing” and “the ratio of time spent maintaining automated test cases vs creating new tests ” both provide insight on how testing time is being used.

Resources: These metrics measure the appropriateness of a project’s resource assignment. For example, “the actual number of development hours needed vs the expected number” and “the number of story points completed each sprint” both help project managers to evaluate their resource assignment.

It is important to gather and analyze testing metrics because without them, there is no way to evaluate the current testing process. By gathering and analyzing metrics, patterns can be derived and bottlenecks or potential areas for improvement can be identified.

Endnote

f:id:gmgchow:20181025175748j:plain:w500
Course materials from tutorial sessions

I am very glad that I had the opportunity to attend this amazing event. It was truly inspiring to see so many talented engineers, managers, and testers gather from all around the world to share their passion and knowledge. I learned a lot during the four days that I spent at this conference and I would like to recommend it to anyone who is interested in learning the latest technologies and trends in software testing and automation.

f:id:gmgchow:20181025180637j:plain:w500
"The Sunny State" California was very beautiful

There will be a presentation about STARWEST at this month's "AQA POP TALK" event so please feel free to attend!

mercaridev.connpass.com