20151021 cookpad talk_test_engineer

23
!エンジニアのトークナイト クックパッドにおけるテストエンジニアのあり方

Transcript of 20151021 cookpad talk_test_engineer

Page 1: 20151021 cookpad talk_test_engineer

!エンジニアのトークナイトクックパッドにおけるテストエンジニアのあり方

Page 2: 20151021 cookpad talk_test_engineer

•Name ‣ 松尾和昭 •Job ‣ テストエンジニア •accounts ‣ Twitter: @Kazu_cocoa ‣ GitHub: KazuCocoa

Page 3: 20151021 cookpad talk_test_engineer

~ 2011 広島市立大学にて情報科学を専攻 映画『マトリックス』の影響で情報系を目指す 研究: 暗号系、分散コンピューティング系 教授の影響: QA/テストする人の知識/技術の広さ

ACCESS入社 ソフトウェアのQA/テストを志向して入社 テスト関係、新規サービスのサーバ/インフラの設計・発注など

クックパッド株式会社へ入社 Quality Improvementという表現に共感 食、ソフトウェアのサービス産業

2011 ~

2014 ~

Page 4: 20151021 cookpad talk_test_engineer

何をする役割?

Page 5: 20151021 cookpad talk_test_engineer

QAオペレーター

テスター

テストエンジニアQAエンジニア

Page 6: 20151021 cookpad talk_test_engineer

• 手順書に沿って何かを実施する人?

• 何をテストするか、から考える人?

• Chekingを自動化する人?

• Testingする人?

• Testingまで自動化する人?

• 成果物に対して指標を計測し、ソフトウェアを評価する人?

Page 7: 20151021 cookpad talk_test_engineer

Test Engineer @Google (not software engineer in test)

•"Test Engineers at Google aren't manual testers."

•Jobs on Linkedin

•"The TE is a newer role at Google than either Software Engineers (SWEs) or SETs. As such, it is a role still in the process of being defined."

•How Google Tests Software(2012)

Page 8: 20151021 cookpad talk_test_engineer

Senior Software Engineer @Netflix Tools, Test and Reliability Engineering

•What you will do:

•Develop tools and architect new solutions as necessary. •Validate software that gets shipped on a variety of devices.

•What you have:

•BS/MS in Computer Science or related field.

•Strong software design skills and experience with OO programming languages.

•Excellent computer networking knowledge.

•5+ years of test and automation experience.

•A passion for learning and working effectively in a nimble environment.

Page 9: 20151021 cookpad talk_test_engineer

SWET @DeNA•具体的な業務内容 •Webアプリ・WebAPIの自動テストコード作成

•スマートフォンアプリの自動テストコード作成 •テスト自動化ツールおよび基盤環境の開発・運用 •自動テスト実施計画の策定、自動テスト項目の作成 •作成した自動テストの実行と、それに伴う不具合報告

•必須の経験・能力 •スマートフォンアプリの開発経験 (iOSおよびAndroid) •Webアプリ・Webサービスの開発経験

•何らかの自動テストコードの作成経験 •望ましい経験・能力 •Ruby・Perlでの開発経験 •具体的なテスト設計の経験 •テスト工程の管理経験

Page 10: 20151021 cookpad talk_test_engineer

テストエンジニア @Cookpad•ソフトウェアテストに関する知識と実務経験 •Android/iOS/Ruby on Railsやそれに類するシステムの開発経験、もしくはそれらに対するテスト実装経験

•RSpec、JUnit、Selenium WebDriver、Appiumなどのテストフレームワークを使ったテストの自動化、運用経験

•組織/チームにおける開発体制/プロセス改善の実施経験 •コンピュータサイエンスの知識と体系的なテスト技法や分析技法の理解 •インクリメンタル/アジャイルな開発環境下におけるソフトウェアテストの実施経験 •品質メトリクスの収集・分析・評価の実施経験 •サービスのサポート業務と開発者の間を取り持つような支援業務の経験

Page 11: 20151021 cookpad talk_test_engineer

Qualityって?

Page 12: 20151021 cookpad talk_test_engineer

品質とは誰かにとっての価値である

ジェラルド・ワインバーグ

Quality Software Management: Systems Thinking v. 1

Page 13: 20151021 cookpad talk_test_engineer

あなたのビジネスは 何を生業としていますか?

Page 14: 20151021 cookpad talk_test_engineer

製造業から発展した方面の品質

•自動車などの製造物 •物理的に壊れないことが購入者からしたら大事な要素 •腐食、経年劣化、環境による破壊など、考慮すべきことが多い

•自然界を基準に計測可能 •品質管理部などによる、計測によるQuality Assurance

※付け加えると、制御ソフトウェアが入るまでは、機械の隅々まで物理的な計算のもと、網羅的なテストが実施可能だった

Page 15: 20151021 cookpad talk_test_engineer

受託開発からの品質

•納品のために検査的なテストを行う •合意形成した指標を満足している、など •顧客に数値を示す必要があるため

Page 16: 20151021 cookpad talk_test_engineer

サービス業からの品質

•利用時の品質とか、そこらへんは大きな要素を占める •ISO 25000とか、ISO 9241、ITILとか…

•対人によって品質が評価されることが多い •品質保証?(Quality Assurance?) •クックパッドというサービス自体の品質を保証する? •絶対の指標が無い世界での保証?

•サービス業における品質とは

Page 17: 20151021 cookpad talk_test_engineer

Qualityで欲しているものは違う

Page 18: 20151021 cookpad talk_test_engineer

サービス開発における品質の向上

価値検証を しっかり素早く できるようにし、

改善を繰り返して品質を 向上 させていく

Page 19: 20151021 cookpad talk_test_engineer

サービスの開発速度を高めるための TDD/BDD、自動化されたテスト

•ソフトウエアの内部品質を高める •動作する綺麗な設計/コード •TDDのサイクル => Red > Green > Refactor •Checkingの拡充による安定したサイクル •サイクルを回すための精神

Page 20: 20151021 cookpad talk_test_engineer

サービスの開発速度を高めるために 補完されるテスト

•不具合発生からの調査にかける労力を減らすための、効率的なテストコードの拡充

•一連の流れの中で、最短で道を駆け抜けるためのテスト設計/実施など

Page 21: 20151021 cookpad talk_test_engineer

サービスの開発速度を高めるための 組織

Page 22: 20151021 cookpad talk_test_engineer

サービス/組織の成長と専業化

•サービスや組織の発展に伴い進行する専業化 •Quality Engineer •Software Engineer in Test •Test Engineer •AB Test Engineer •Productivity Engineer •Release Engineer

Page 23: 20151021 cookpad talk_test_engineer

クックパッドにおけるテストエンジニア、 テストの形

•今

•サービスの品質を継続して向上させるための土台作り

•組織/プロセス改善

•Web/Mobileのテスト/テスト環境の改善

•組織の潤滑油

•発展

•サービスの開発、発展、向上させるための浸透

•分散した組織における開発速度を保った成長の土台作り

•既存のテスト資産の改善

•Testing領域へ注力できる仕組み作り