Slide 1

Slide 1 text

Dreamforce 2022 Global Gahering バックエンド、フロントエンド、E2Eテストについて知っておくべき事 2022/11/02(水) Salesforce Architects Meetup

Slide 2

Slide 2 text

本日のトピック 2
 ● Developersのエピソード6より ○ バックエンド、フロントエンド、E2Eテストについて知っておくべき事 ○ https://www.salesforce.com/plus/experience/Dreamforce_2022/ series/Developers/episode/episode-s1e6/ ● きっかけは「テストの品質を高めたい!」と思ったので

Slide 3

Slide 3 text

テストのピラミッド 3
 ● 単体テスト ○ 小さい塊、メソッド単位、ファンクション単位 ○ フロントエンド JavaScript, HTML, CSS ○ バックエンド Apex ● 結合テスト ○ 例えば、Eメールサーバーとプラットフォー ム、アプリケーションサーバーとデータベース やWebサービスなど ● エンドツーエンドテスト ○ 実際のお客様のシナリオに沿ったテスト ○ ユーザーのやりとりを厳密に模倣

Slide 4

Slide 4 text

テストのピラミッド 4
 ● パフォーマンステスト ○ 例)1万のケースに3秒以下でメール送信 ● ブラックボックスとホワイトボックス ○ 境目は図の通り ○ ホワイトボックステスト メソッドやパラメータを知っていてテストする ○ ブラックボックス 正しい振る舞いをテストする

Slide 5

Slide 5 text

コードカバレッジ 5
 ● 重要だがテストの質を測ることと混同してはダメ ● コードカバレッジは量であって質ではない

Slide 6

Slide 6 text

スタブ、スパイ、モック 6
 ● スタブ: テスト対象のコードが呼び出しているコードを代替するもので、呼び出し先のコードがまだ作成されていない 場合などに使用 ● スパイ: テスト対象の一連の処理をひととおり実行した後に「メソッドは呼び出されたかどうか」「メソッドは何回呼び出 されたか」「メソッドに渡された実引数は何だったか」といったポイントを検証したいときに使用 ● モック: テストスパイが対象の処理が終わった後に検証を行うのに対し、モックオブジェクトは対象の処理の途中にリ アルタイムに検証

Slide 7

Slide 7 text

パフォーマンステスト 7


Slide 8

Slide 8 text

バックエンド: Apex テスト 8
 ● Winter'23で追加 Assert.areEqual Assert.isNotNull Assert.isInstanceOfTyp e など

Slide 9

Slide 9 text

フロントエンド: LWC テスト(Jest) 9
 ● Platformと切り離してテストできる ● コードカバレッジの要件は無い ● バーチャルブラウザ、画面も無く、メモリ上で実行

Slide 10

Slide 10 text

E2E: UTAM 10
 ● Salesforceによって構築されたオープンソースソリューション ● 堅牢で維持しやすい仕組みがある

Slide 11

Slide 11 text

UTAMとは 11
 ● UTAM ページオブジェクトを JSONで記述 ● CSS セレクタを使用してテスト対象ページの DOMを参照(再利用可能) ● テストを実行する準備ができ るとページオブジェクトをコン パイル

Slide 12

Slide 12 text

画面のテストの例 12
 ● オレンジ色はテストしなければ ならない、カスタムコンポーネン ト ● 青色はLightning ベースコン ポーネント

Slide 13

Slide 13 text

シフトレフト 13
 ● 開発ライフサイ クルの早い段階 で「テスト活動」 を行うこと ● 単体テストから 始めよう

Slide 14

Slide 14 text

Unit テストの構造 14
 ● Given, When, Then ● 複雑すぎるものはUnit Testではない

Slide 15

Slide 15 text

まとめ 15