Mobageオープンプラットフォームのテストについて 第1話〜SWETとは!?〜

icon.jpg

みなさまはじめまして。@ikasam_a と申します。

 

SWETグループというチームのリーダーとして、Mobageオープンプラットフォームのソフトウェアテスト全般を担当しています。

2011年に入社して以来、一貫してプラットフォームのソフトウェアテストに従事しています。最近では自分でテストコードを書く機会も減りましたが、まだまだ現役だと思っています!

 

今回から何回かに分けて、Mobageオープンプラットフォームでは実際にどのようなテストを行っているのか、紹介していきたいと思います。まず今回は、実際にテストの自動化・運用をしているSWETグループのお話をします。

 

SWETとは?

SWETというのは “Software Engineer in Test” の略称で、Wikipediaで見てみると、SETというページに “a Quality Assurance job title in some software companies” と書かれています。“some software companies” とあるように、実はDeNAに限らず色々な会社に同じ役割の職種があります。GoogleではSETという名称で呼ばれていますが、DeNAではSWETという呼称を使っています。

SWETの役割について、Google Testing Blogに書かれている内容を抜粋してみます。

 

  • テスタビリティに注目した開発者の役割

  • デザインレビューをする

  • テストしやすくなるようにコードを書く。リファクタもする

  • テストフレームワークも作成する

 

中々色々なことが書かれていますが、ざっくり言うと「主にテストの領域で、コード書くし、レビューもするし、必要なら基盤技術整備もするし、リファクタだってするよ」という、いわばテストするために必要なことは何でもやる、という感じです。

また同ブログでは、SWETがどこにフォーカスすべきかということにも触れられていて、それは「開発者」というところにフォーカスすべきだと書かれています。具体的には「開発者がテストしやすくなるように」というところが、フォーカスすべきポイントだということです。

同じエンジニアという職種もありますが、SWETとは、プロダクト開発者やサービス開発者と非常に近い位置で仕事をする役割になります。

 

テストエンジニアとは?

さて、世の中にはテストエンジニアと呼ばれる職種もあります。SWETはテストに関する色々なことをやる、というのはわかりましたが、テストエンジニアとSWETではどう役割が違うのでしょうか?

テストエンジニアについてもGoogle Testing Blogに役割が書かれているので、また内容を抜粋してみます。

 

  • テストファーストを推進する役割

  • 自動テストスクリプトを書く

  • テスト結果を分析・判断する

  • テストの実行プロセスそのものを推進する

 

こちらも当然のようにテストという単語が頻出しますが、SWETの文脈では、開発者によるソフトウェアテストの領域でのテストを指していました。

一方ここでいうテストとは、いわゆるQAと呼ばれる領域でのテストを指していて、同じテストでも明らかに対象領域が違っています。テストエンジニアとは、ソフトウェアリリースプロセスでの検証フェーズで特に活躍する役割、と言うのがわかりやすいかもしれません。

 

DeNAにおけるSWETとは?

SWETは主に開発フェーズで、テストエンジニアは主に検証フェーズで、それぞれ重点を置いてテストに関する活動を行う役割であることがわかりました。私たちはもう一歩踏み込んで、開発フェーズと検証フェーズの両方での役割を併せ持ったエンジニアの役割をSWETと考えています。

開発フェーズでの活動は、プロダクトやサービスの品質に結びつくものの、フォーカスする方向から考えると、開発者の「生産性向上」という観点で活動していると考えています。一方検証フェーズでの活動は、QAの名前が示す通りで、プロダクトやサービスの「品質保証」の観点で活動していると言えます。

これら「生産性向上」と「品質保証」、両方の観点を持って、開発者がテストしやすくなるテスト基盤を作ることもするし、あるいは自動テストスクリプトを作成して、システムテストの自動化にも取り組んでいます。

 

最後に

今回は私たちSWETの紹介をしましたが、次回は私たちがMobageオープンプラットフォームの中で、どのようなテストを作って実施しているか、事例を交えて書いていこうと思います。