DeNAにおけるSWETの役割

18
DeNA における SWET の役割 2017/10/13(Fri) iOSDC 2017 Reject Conference days1 平田敏之 (@tarappo)

Transcript of DeNAにおけるSWETの役割

DeNAにおけるSWETの役割2017/10/13(Fri)

iOSDC 2017 Reject Conference days1

平田敏之(@tarappo)

自己紹介

平田敏之@DeNA

SWET (Software Engineer in Test)

私がやっていること(一部)

• クライアントアプリ周りのテスト戦略、自動テストの開発

• CI/CD環境整備

• テスト基盤環境の開発(マスティフ、ダルメシアン etc)

• iOS / Android Test Night 主宰

• 12/5 iOS Test Night #6 - 1周年 -

• 12/15 Android Test Night #2

今日の流れ

• SWETとは?

• グループ構成

• 事業サポートチームの話

• やっていることについて

• テスト基盤チームの話

• やっていることについて

• おわりに

今までのSWETの話(一部)

• DeNA TechConf 2016

• DeNAが取り組む Software Engineer in Test

• http://www.slideshare.net/masaki/dena-software-engineer-in-test

• DeNA TechConf 2017

• DeNAの取り組むテストエンジニアリング

• https://speakerdeck.com/okitan/denafalsequ-rizu-mutesutoensiniarinku

SWETとは?Software Engineer in Test

• ミッション・ステートメント

• ソフトウェアテストを起点とした

• プロダクト・サービスの品質向上

• エンジニアの開発生産性向上

• 価値のあるものを素早く提供できるようにする

Make Testing Fun, Smart, and Delighting End-Users

テストをもっと楽しく賢くそしてユーザのデライトにつながるようにしていきたい

Vision

SWET

グループ構成

A事業サポート

テスト基盤

B事業サポート

A事業 B事業 C事業

C事業サポート

D事業

事業サポートチーム(複数)とテスト基盤チームから構成される

各チームの役割

• 事業サポートチーム(深さ担当)

• 事業チームの開発生産性・品質の向上

• 事業チームのテスト成熟度の向上

• 事業チームの品質的なコミットメントの引き出し

• テスト技術の追求と蓄積

• テスト基盤チーム(広さ担当)

• 共通で利用できるサービスの開発

• 一歩(以上)先のテストエンジニアリング

• R&D的な要素が強い

事業サポートチーム対象:Sakasho

Sakashoとは?• ゲームアプリ向けの内製BaaS

• ゲーム開発者にSDK(Unity / C++)と管理ツールを提供

• 多種多用な機能(一部)

• マスターデータ配信

• アセット配信

• プレイヤー管理

• 課金

• Push通知

DeNA TechConf 2017

• DeNAのゲームを支えるプラットフォーム Sakasho

• https://www.slideshare.net/dena_tech/dena-sakasho-denatechcon-72603307

事業サポートチームSWETのやったこと・やっていること

• 対象サービスのドメイン知識の獲得(必須)

• SDK(C++/Unity)を利用したテストアプリの開発、改良

• 初期:知識の獲得や初期ユーザとして1つ1つ実装

• 今:開発コストをあまりかける必要がないように改良

• 開発効率化

• CI(Jenkins)環境の改善

• Ansibleや独自pluginなども導入

• Dangerの導入

• リリース周りの最適化

• リリースプロセスの改善

• CI環境のパイプラインによるサポート

• E2Eの自動テストの導入(C++SDK / UnitySDK)

委譲できるタイミングになれば開発側に委譲し運用を任せる

事業サポートチーム自動テスト(C++SDK/UnitySDK)の進め方

• [SWET] どのように攻めていくかを決める

• どの機能か、正常系か、準正常系か、どのバージョンか

• [SWET]テストコードの実装周りの初期サポート

• 自動テストのコード、Helperやsetupスクリプトなど用意

• [SWET] CI環境(Jenkins)の用意

• 自動テストを実行するjobを用意

• 実行環境:iOS:シミュレーター、Android:OpenSTF

• nightlyで自動テストを定期実行

• 自動テストの安定性の確認など

• [開発側] 自動テストの実装

• [SWET] 初期のレビューはSWETが担当

事業部が自ら品質にコミットメント出来るように整えていく

テスト基盤チーム

共通で利用できる基盤開発を主軸とするチーム

※事業サポートが無い事業チームにおいても基盤としてサポートすることができる※

• やっていること(一部)

• ゲーム自動化

• 犬シリーズの開発

• CIサポート

• 導入支援

• Jenkinsのplugin開発、運用ツールの開発

• CircleCI Enterpriseサポート

テスト基盤チーム犬シリーズ

SWETが開発しているサービスは犬の名前が命名されています

• マスティフ• バージョンアップ対応軽減サービス

• ダルメシアン• コードレビュープロセスサポート

• ポメラニアン• テスト並列化サポート

• ラブラドール・レトリーバー• 機械学習を使ったUIテストの簡易化

テスト基盤チーム犬シリーズ:マスティフ(1/3)

• バージョンアップ対応で苦労したことありませんか?

• Xcode、ライブラリなど

• こんな経験はありませんか?

• 新バージョンへの移行時のコスト見積もりが難しいので先延ばし

• バージョンアップしてみたらビルドすら通らなかった

• バージョンを固定化していたのに動かなくなった

• fastlane/deliverとか使っているとあったり(Apple側の改修で..)

• いつバージョンがあがるか(あがったか)は分からない

• 気づいたときにバージョンアップをしてみる

テスト基盤チーム犬シリーズ:マスティフ(2/3)

テスト基盤チーム犬シリーズ:マスティフ(3/3)

Slack Web

バージョン通知とテスト結果の通知

各バージョンの情報• 利用出来るかどうか• バージョンアップ時に対応がいるかどうか

テスト基盤チーム犬シリーズ:参考資料

各カンファレンス、勉強会などで紹介していますので詳細はそちらの資料を参考に。

• マスティフ• @iOS Test Night

• https://www.slideshare.net/tarappo/for-xcode-beta

• https://www.slideshare.net/tarappo/ss-71179542

• ダルメシアン• @Android Test Night、iOS Test Night

• https://www.slideshare.net/tarappo/danger-x-android

• https://www.slideshare.net/ShunsukeMaeda/ios-80347918

• ポメラニアン• @iOSDC2017、iOS Test Night

• https://speakerdeck.com/yusukehosonuma/uitestshort

• https://www.slideshare.net/tarappo/ui-76205186

• ラブラドール・レトリーバー• @SeleniumConf Berlin

• https://www.slideshare.net/ToshiyaKomoda/introduce-machine-learning-into-ui-tests

おわりに

• SWETとは

• 「事業サポート x テスト基盤」の「深さ x 広さ」の体制

• SWETの技術・スキルを支え、展開する体制

• 一歩先のテストエンジニアリングへの取り組み

• 技術的チャレンジの機会が多いグループ

• 課題

• SWET/SETの認知度

ブランディング

SWET/SETはまだまだ知名度が低いためブランディングが重要

• Test Engineers Meetup

• https://test-engineers-meetup.connpass.com/

• iOS Test Night / Android Test Night

• https://testnight.connpass.com/

• testnightのslack

• https://testnight-invitation.herokuapp.com/

• SWETのブログ

• http://swet.dena.com/