webサービスのソフトウェアqaと自動テスト戦略
TRANSCRIPT
Web Service QA Meeting Vol.1
Web サービスのソフトウェア QA と自動テスト戦略
〜 15 分版〜
2015/07/13
Masaki NakagawaSWET Gr.Quality Management Dept.DeNA Co., Ltd.
Web Service QA Meeting Vol.1
自己紹介
#1
⁃ 中川 勝樹⁃ 株式会社ディー・エヌ・エー⁃ SWET (Software Engineer in Test)
⁃ SELECKの取材記事
⁃ デブサミ発表資料
⁃ mobage developers blog
#2
⁃ @ikasam_a
⁃ github.com/masaki
⁃ CPAN Author (metacpan.org/author/MASAKI)
⁃ Testing Casual Talks (#1, #2)
2
Web Service QA Meeting Vol.1
3
Web Service QA Meeting Vol.1
4
Web Service QA Meeting Vol.1
ソフトウェアエンジニアです。
5
Web Service QA Meeting Vol.1
SWET (Software Engineer in Test)
Google の SET とほぼ同じことをしています⁃ “How Google Tests Software” 参照⁃ 邦題「テストから見えてくるグーグルのソフトウェア開発」
やっていること⁃ 自動テストコード作成⁃ テスト基盤環境構築⁃ 自動化技術の応用・実用化⁃ 品質や開発生産性の向上に関する様々なコンサルや導入支援
https://career.dena.jp/job.phtml?job_code=476
⁃ SWET という役割に興味のある方は是非!
6
Web Service QA Meeting Vol.1
今日話したいこと
Web サービスの QA とは⁃ ソフトウェア中心の世界⁃ Web サービス「じゃない」領域の QA とは⁃ 違いとは
Web サービスの QA と自動化戦略⁃ ソフトウェア中心だからできること⁃ 逆にできないこと⁃ エンジニアだからできる QA
⁃ 最適なアプローチ⁃ やることとやらないこと
7
Web Service QA Meeting Vol.1
Web サービスの QA を考える
Web 以外の分野の QA とは⁃ ( 例 ) 従来の工業製品の QA
ハードウェア出荷製品と QA の関係性⁃ 何か問題が起こると人命に関わる可能性がある• ( 例 ) 出火、爆発、…
• 人命に関わる問題を起こすわけにはいかない
• 少しでも発生確率があれば QA で取り除く必要がある
⁃ 出荷後に全ての製品をアップデートするのはほぼ不可能• 全国・全世界のすべての製品流通を突き止めることは困難
• 突き止めても全台回収することは非現実的
• リコール
• 出荷前に QA で極力問題を取り除いておきたい
8
Web Service QA Meeting Vol.1
Web サービスの QA を考える
製品の出荷ではなくサービス運用で成立する世界⁃ リリース後でもサービスアップデートで対応可能⁃ 多少の問題は後からでもリカバリ可能⁃ とはいえ絶対に問題を起こしてはいけない部分ももちろんある
多種多様なユーザが色んな場所から同時利用する世界⁃ 様々なユーザに使ってもらって初めて分かる事実がある⁃ そのためにも価値提供のスピードを落としたくない
Web サービスの QA でやりたいこと⁃ 如何に事業展開のスピードを QA で落とさずにリリースさせるか⁃ 且つユーザに使ってもらうために必要なものは揃っているか⁃ その上で最低限守らないといけない部分を守り切るか
9
Web Service QA Meeting Vol.1
Web サービスの QA を考える
ソフトウェアで構成される世界⁃ ソフトウェアテスト
ソフトウェアテストとは⁃ コンピュータのプログラムを実行し、以下を確認する作業• 正しく動作するか、
• 目標とした品質に到達しているか、
• 意図しない動作をしないかどうか
⁃ (from: ja.wikipedia.org/wiki/ソフトウェアテスト)
10
Web Service QA Meeting Vol.1
ソフトウェアテストの分類
Who Which
How What
11
テストレベル
テスト技法 テストタイプ
Web Service QA Meeting Vol.1
ソフトウェアテストの分類
Who⁃ Developer Testing
⁃ Acceptance Testing
Which⁃ Unit Testing
⁃ Integration Testing
How⁃ Black Box Testing
⁃ White Box Testing
⁃ Gray Box Testing
What⁃ Functional Testing
⁃ Non-Functional Testing (Performance, Stress, Usability, …)
12
Web Service QA Meeting Vol.1
Web サービスの一般的な構成
13
View
Controller
Model
datadatadata
Web Service QA Meeting Vol.1
Web サービスの一般的な構成とテスト戦略
14
View
Controller
Model
datadatadata
AcceptanceIntegrationBlack Box, Gray BoxFunctional, Usability, Stress
DeveloperUnitWhite Box, Black BoxFunctional
DeveloperIntegrationGray Box
Web Service QA Meeting Vol.1
Web サービスの一般的な構成とテスト戦略
15
View
Controller
Model
datadatadata
AcceptanceIntegrationBlack Box, Gray BoxFunctional, Usability, Stress
DeveloperUnitWhite Box, Black BoxFunctional
DeveloperIntegrationGray Box
開発者がしっかり単体テストする
自動化できる部分とできない部分がある
View/Model 境界重複しがち
Web Service QA Meeting Vol.1
Model のテスト
開発時にしっかり単体テストをする⁃ ビジネスロジックごとにテストする
単体テストできるように設計する⁃ ビジネスロジックを適切に分割する⁃ 外部依存を切り離せるようにする• テストダブル、フィクスチャ
⁃ テスタビリティの高い設計にする
16
Web Service QA Meeting Vol.1
View のテスト
ユーザシナリオに沿ってエンドツーエンドテストをする⁃ シナリオテスト・機能テストに相当する部分は自動化可能
自動化できない・しない部分こそ、マニュアルでしっかりやる⁃ 表示・レイアウトの確認⁃ ユーザビリティテスト⁃ スクリーンショットなど効率化できる部分は半自動化
17
Web Service QA Meeting Vol.1
Controller のテスト
いっそのこと重複する部分はやらない⁃ Model と重複する部分はビジネスロジックのテストとして実施⁃ View と重複する部分はエンドツーエンドテストとして実施⁃ 上 (View) と下 (Model) からトータルでしっかり抑える
重複・スキップするための設計⁃ Model と View の設計・実装範囲が適切であること⁃ テスタビリティの高い設計(ry
( 参考 ) プログラマの三大美徳⁃ 怠惰( Laziness)⁃ 短気( Impatience)⁃ 傲慢( Hubris)
18
Web Service QA Meeting Vol.1
まとめ
Web サービスの QA とは、⁃ 如何にスピード感を持ってリリース「させる」かが重要で、⁃ そのために、必要なことは揃っている状態であって、⁃ 且つ、守るべきものがしっかり守れているか。
Web サービスのテスト戦略とは⁃ 上 (View) と下 (Model) からトータルでしっかり抑えこむ⁃ そのためにもテスタビリティの高い設計にする⁃ 自動化できる部分は自動化して効率化する⁃ 手動テストは見るべきところに注力する
19