テスト自動化とは
p テスト手順をプログラム化しておくと、コンピュータが
自動でテスト実行してくれる。
システム全体を通しでテスト
UIテストツールなどを活用
複数の部品を結合してテスト
APIテストツールなどを活用
個々の関数やクラスのテスト
ユニットテストツールなどを活用
E2E Test
Integration
Test
Unit Test
Magic Podの開発環境
p Webサーバ・AIエンジン: Python、Django
p 自動テストエンジン: Node.js
p 開発者: 約6人
p QA: 0人
n ただし、
n 本書いている人とか、Selenium/Appiumコントリビュータとか
p ほぼフルリモート
p 読み書き(Slack、GitHub等)は英語
テスト自動化のエキスパートは多数
Slide 14
Slide 14 text
Magic Podの開発フロー
p アジャイル的開発
p 2週間ごとのイテレーション(& リリース)
n 細かいパッチリリースは随時
p ビルド、デプロイは自動化
Slide 15
Slide 15 text
Magic Podの開発フロー
p テスト
n 新規開発部分は各自手動テスト
n 一部のテストは自動化
n リリース前の3日間は社内ドッグフーディング
3日前
main
branch
次の開発
feature
branches
リリース
次の開発
1. 自動化コストが低いところ
p ツールを設定するだけでチェックができるもの
p スクリプトのメンテナンスが(ほぼ)不要なもの
p Magic Pod開発でやっているもの:
n ソースコード静的解析
p やっていないもの:
n Botでサイトリンクをたどり404エラー検出(モンキーテスト)
n アプリクラッシュ検知(Firebase Crashlytics)
Slide 21
Slide 21 text
ソースコード静的解析
p Python: PyLint
p JavaScript: ESLint
p nginx: 構文チェック
Slide 22
Slide 22 text
ソースコード静的解析
p PyLint、ESLint
n 動的型言語だと、コンパイラ代わりになるので効果的
n 静的型言語だと、書式統一以上のメリットは少ないかも
p nginx構文チェック
n 構文が間違っているとサーバが起動しなくなるので、
チェックは効果的
Slide 23
Slide 23 text
2. 処理が複雑なところ
p そもそも複雑すぎて人力では品質を担保できないロ
ジック
n テストコードを書きながら開発を進めることが不可欠
p Magic Pod開発でやっているもの:
n AIエンジンのUnit Test、Integration Test
Slide 24
Slide 24 text
AIエンジンのUnit Test
- UI解析AIのテスト
p UI画像とツリーを解析し、操作できる要素をリスト
アップするAI
n 特殊な画面のパターンを多数テスト
Slide 25
Slide 25 text
AIエンジンのUnit Test
- 自動修復AIのテスト
p テスト対象画面のバージョンアップでテストが失敗し
そうになった時に、スクリプト側を自動修正するAI
n どんな失敗をどう修正するかのパターンを多数テスト
Slide 26
Slide 26 text
AIエンジンのIntegration Test
- 自動修復AIのテスト
p 複数のテストで使い回されている要素の修復など
p DBを使ったテスト
n レコード数を少なくすれば、DBアクセスしても十分高速
p 画面やWeb APIは特に利用しない
MySQL
テストコード
(pytest)
Slide 27
Slide 27 text
3. 重要なところ
p 不具合があるとビジネスインパクトが大きいところ
p Magic Pod開発でやっているもの:
n セキュリティテスト(Integration Test)
n 自動テストエンジンのテスト(E2E Test)
n 主要な画面のテスト(E2E Test)
Slide 28
Slide 28 text
セキュリティテスト
(Integration Test)
p ふだん目に見えないので軽視しがちなので注意
p 問題が起きると最悪サービス終了くらいのインパクト
p テスト内容は割愛