JavaScriptテストの疑問、お答えします

自己紹介


(自覚は無いです)

今日話すこと

今日話すこと

会場に質問

「テストしてますか?」

「Yes!」 or 「No...」

実際「No」は多分ほぼない

手動テストも含めれば基本的に何らかのテストは行う

Q「テストってほんとうに必要?」

Q「テストってほんとうに必要?」

A「Yes。ただし、自動テストが必要かは場合による」

テストとは自動テストだけではない

手動テストも十分テストとして考えて良い

テスト自動化の功罪

テスト自動化の功罪

常に自動化が良いとは限らない

常に自動化が良いとは限らない

ただ、手動テストはあまり語ることもないのでここからは自動テストに関して話します

Q「あんまり意味がある気がしないんだけど。。。」

Q「あんまり意味がある気がしないんだけど。。。」

A「割にあわないならやらない方がいい。ただし、改善は必要」

テストを特別視しない

開発手法やフレームワークのように費用対効果の検討を

ただし、仕事でやるなら予測が必要

使ったことない手法の費用対効果を予測するのは困難

(道を知っていないと歩き出すことはできない)

最初は捨てる前提で簡単な部分から

自動テストは個人でも簡単に実践できる

費用、効果は開発者の技術力、経験によって違う

改善していけばコストは低くなる

ただし、テスト技術はテストをしないと身につかない

Q「どこまでやればいいの?」

Q「どこまでやればいいの?」

A「できるところまで」

この問題は線引が難しい

(ケースバイケースな要素が多い)

テストはまだまだ個人のスキルに大きく依存する

(チーム全体のスキルもある)

ただ、この質問はそもそもテストの経験がない場合が多い

(すでにやってる場合どこまで出来るか見えてるから)

見極めができないならできるところまでとしか言えない

Q「UIのテストはやらないって言うけど、JavaScriptだとほとんどUIだよね?」

Q「UIのテストはやらないって言うけど、JavaScriptだとほとんどUIだよね?」

A「不安にフォーカスしよう。UIが不安ならやるべき」

テストとは不安に対向するための手法である

「UIはやらない」は「UIのテストはコストが高いから費用対効果に見合わない可能性が高い」という意味

実際今手動でUIのテストを行っていて、その費用対効果が高いなら改善すべき

最近はUI(CSS、HTML)のテストもコストが低くなりつつある

(自動でキャプチャ取って一覧でみれるだけでも違うのでは?)

Q「で、今手元にあるコードをどうしたら良いの?」

Q「で、今手元にあるコードをどうしたら良いの?」

A「まずはE2Eテストフレームワークを導入してみては」

テストを考慮していないコードに対してユニットテストを書くのは難易度が高い

(ユニットテストの矛盾)

E2Eテストは比較的ターゲットコードの品質に依存しない

(E2Eテストの法則)

また、テストの文化が根付いていない環境でテストをする困難もある

(テストが難しい部分の修正にテストがいる問題)

Q「なんでJavaScriptのテストってこんなに面倒なの?」

Q「なんでJavaScriptのテストってこんなに面倒なの?」

A「そもそもテストは大変」

サーバサイドも昔は大変だった

技術革新で楽になった部分もあるけど、UIがなくなってAPIベースになった部分も大きい

UIのテストは基本大変

(さらにUIはリッチ化している)

ここまでで何か質問は?

ここからは演説になります

テストの目的

テストの目的

基本、目的がなければやってはいけない

ただ、難しく考える必要はない

とりあえずこのへんから考えて見ては?

おすすめの目的

おすすめの目的

それぞれ解説します

自分の不安の解消

自分の不安の解消

他人の不安の解消

他人の不安の解消

手動テストの自動化

手動テストの自動化

勉強、趣味、見栄

勉強、趣味、見栄

複数環境検証

複数環境検証

デグレーションの回避

デグレーションの回避

ドキュメント代わり

ドキュメント代わり

知識の共有

知識の共有

設計

設計

目的に注力したテスト

目的に注力したテスト

「一般的じゃない」?
「きれいじゃない」?

目的を達成できれば勝ち

テストを書く文化

テストを書く文化

テストを書く文化

テスト、事始め

テスト、事始め

テスト、事始め

「やっぱりどこからやるか分からない。。。」

「やっぱりどこからやるか分からない。。。」

「やっぱりだめだった。。。」

「やっぱりだめだった。。。」

「テスト書けたけどなんか違う。。。」

「テスト書けたけどなんか違う。。。」

そもそもの話

そもそもの話

ここから実践編

ツールに関して

ツールに関して

ツールに関して

ツールに関して

テストと数値

テストと数値

テストの振り返り

テストの振り返り

コードカバレッジどうする

コードカバレッジどうする

コードカバレッジどうする

コードカバレッジどうする

テスト技術は重要なのか問題

テスト技術は重要なのか問題

ご清聴ありがとうございました

ChatWorkではエンジニアを募集しています!