Movatterモバイル変換


[0]ホーム

URL:


2,039 views

JustTechTalk#10 React開発における自動テスト実践

2017年10月27日の発表資料です。

Embed presentation

2017/10/27JustTechTalk#10株式会社ジャストシステム 田中優太
 自己紹介 薬学出身の新卒2年目エンジニアです。 JUST DWHのフロントエンド担当 JUST DWH 医療用データウェアハウス 院内の各システムに散らばったデータを取り込んで一元化 システムをまたがったデータ抽出・分析、全文検索 フロントエンドにReact-Reduxを採用
 E2Eテスト(今回は説明を省略)実際のユーザー操作で正しく動くことシナリオテスト数個 ユニットテスト各モジュールが正しく動くことNode.js上のテスト 処理系が違うが実行が速いため開発中に使うブラウザ上でのテスト実行 ユニットテストをブラウザ環境でも動かす ブラウザ間のJSエンジンの違いを確認 テスト以外のバグ検知ソースコード静的解析(ESLint)
テストランナーMocha:Node上での実行Karma:ブラウザ環境での実行モック・スタブSinon.js:コールバック関数のテストなどEnzyme:React.ComponentのテストアサーションPower Assert:APIがシンプルなアサーション
メンテコストを考慮して書く/書かない特にViewは流動的 Viewはユニットテスト書かないという方針ではない共通部品はしっかり書くテストしやすい設計は常に意識テストを書かない判断をした場所も開発者が不安な点をテストに書く
設計と性能を両立できる(Virtual DOM, 永続データ構造、メモ化)宣言的プログラミングで可読性が高い(対義語は手続き的、命令型)ライブラリの設計レベルで"テストしやすさ"が考慮されているここを次から詳しく見ていきます。 React採用事例増加中 Facebook、Instragram、Twitter、Qiita、Trello、Bitbucket、My VisualStudio・・・ React-Redux、フロント以外にも進出中 スマホアプリ(React-Native) デスクトップアプリ(React-Native On Windows、Electron + React-Redux)
※これ以降の説明では、わかりやすさを優先した結果、不正確な記述があります。ComponentMiddlewareActionCreatorActionStateReducer
ComponentMiddlewareActionCreatorActionStateReducerModelViewController
ブラウザ上のHTMLComponentMiddlewareActionCreatorActionStateReducer
ComponentMiddlewareActionCreatorActionStateReducerIn:Stateの一部Out:仮想HTML要素 純粋関数とは・・ 引数が同じなら返り値が常に同じ 副作用がない 純粋関数のテスト 関数のIN/OUTのセットが正しいかどうか をテストすればいいだけIn:現在のStateActionOut:新しいState In:生成に必要な情報Out:Action(JSON)JSONJSON副作用有※コンポーネントを純粋関数というのは少し乱暴かも
状態を"State"に、副作用を"Middleware"に隔離することで、他の部分の純粋性を実現ComponentMiddlewareActionCreatorActionStateReducer アプリ全体の"状態"を保持する一つのJSONオブジェクト 基本、読み取り専用。 Reducerによってのみ更新される。 イベント処理全体の流れを記述する 副作用を伴う処理 Reducerでできない処理 API処理、非同期処理、Actionの連鎖など
ComponentMiddlewareActionCreatorActionStateReducer Stateを更新する関数 現在のStateとActionを受け取って新しいStateを返す アプリのロジックはStateに対する操作ととらえて実装 テスト 引数と結果の組が正しい → アプリのロジックが正しいIn:現在のStateActionOut:新しいStateIn:生成に必要な情報Out:Action(JSON)イベントを表現するJSON動作の種類(type)と動作に必要な情報を持つ
Actionとして、以下のようなオブジェクトが渡ってくる{type: 'ADD_TASK',name: '掃除',dueDate: '2017/10/27',}
ブラウザ上のHTML Stateの一部を受け取って、HTMLを描画する。 ステートレス Props(引数)が同じなら、出力もおなじViewクラスをメンバ関数を順番通りに呼ばないとうごかない・・みたいなことがない Propsを使って、出力するHTMLを定義するように記述 テスト 引数と結果の組が正しい → アプリのViewが正しく定義されているComponentMiddlewareActionCreatorActionStateReducerIn:Stateの一部Out:仮想HTML要素
 ユニットテストを書く優先度Reducer アプリのロジックを記述しているため優先度高Component Viewは変更頻度が高いため優先度中 但し、共通UIパーツは優先度高Middleware 重要だがコストが高いため優先度中ActionCreator JSONを生成するだけなので意味が薄いため優先度低
【効果】 アプリのロジックとViewをユニットテストできている。 開発プロセスの効率化に大きく貢献 テストしやすい設計は、可読性にも貢献 静的解析(ESLint)により変数名のtypoによるバグなどは未然に防がれている。【課題】 型導入など、テスト以外でのバグ検知もより充実させる Middlewareにもテストしやすい記述を実現するライブラリを導入する(redux-sagaなど)
テスタビリティの面からReact-Reduxを紹介しました。自動テストの実行環境整備も大切ですがテストを考慮した設計も大切

Recommended

PDF
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
PPTX
Selenium2でつくるテストケースの構成について
PPTX
ノンプログラマのためのSelenium de DDTはじめの一歩
PDF
#STAC2014 システムテスト自動化ハンズオン
PPTX
【STAC2017】テスト自動化システム 成長記
PPTX
Stac2014 石川
PDF
ハイパフォーマンスSeleniumテスト@サイボウズ
PDF
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
20121019 jenkins勉強会lt資料
PPTX
Selenium WebDriver + python で E2Eテスト自動化
PPTX
システムテスト自動化標準ガイド 5章発表資料
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PDF
ビルドプロセスとCI #STAC2014
PPTX
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
PDF
Awsで実現するseleniumテスト高速術
 
PDF
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
PDF
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
KEY
初めての単体テスト
PDF
iOSアプリ開発でもTravis CI #eytokyo
PDF
異業種でのテスト自動化の実際
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
JenkinsとSeleniumの活用事例
PDF
20161218 selenium study4
PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
PPTX
EMTEを使って自動化の費用対効果をわかりやすく表現する
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
PDF
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~

More Related Content

PDF
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
PPTX
Selenium2でつくるテストケースの構成について
PPTX
ノンプログラマのためのSelenium de DDTはじめの一歩
PDF
#STAC2014 システムテスト自動化ハンズオン
PPTX
【STAC2017】テスト自動化システム 成長記
PPTX
Stac2014 石川
PDF
ハイパフォーマンスSeleniumテスト@サイボウズ
PDF
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Selenium2でつくるテストケースの構成について
ノンプログラマのためのSelenium de DDTはじめの一歩
#STAC2014 システムテスト自動化ハンズオン
【STAC2017】テスト自動化システム 成長記
Stac2014 石川
ハイパフォーマンスSeleniumテスト@サイボウズ
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス

What's hot

PDF
20121019 jenkins勉強会lt資料
PPTX
Selenium WebDriver + python で E2Eテスト自動化
PPTX
システムテスト自動化標準ガイド 5章発表資料
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
PDF
ビルドプロセスとCI #STAC2014
PPTX
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
PDF
Awsで実現するseleniumテスト高速術
 
PDF
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
PDF
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
KEY
初めての単体テスト
PDF
iOSアプリ開発でもTravis CI #eytokyo
PDF
異業種でのテスト自動化の実際
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
JenkinsとSeleniumの活用事例
PDF
20161218 selenium study4
PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
PPTX
EMTEを使って自動化の費用対効果をわかりやすく表現する
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
20121019 jenkins勉強会lt資料
Selenium WebDriver + python で E2Eテスト自動化
システムテスト自動化標準ガイド 5章発表資料
reg-suitとQA Wolfを活用したVisual Regression Test
ビルドプロセスとCI #STAC2014
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Awsで実現するseleniumテスト高速術
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
初めての単体テスト
iOSアプリ開発でもTravis CI #eytokyo
異業種でのテスト自動化の実際
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
JenkinsとSeleniumの活用事例
20161218 selenium study4
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
EMTEを使って自動化の費用対効果をわかりやすく表現する
Azureを使って手軽にブラウザテストの自動化をはじめよう
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017

Viewers also liked

PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
PDF
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
PPTX
TypeScriptの大規模開発への適用
PDF
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
PDF
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
PDF
まだ DOM 操作で消耗してるの?
PDF
AWS運用における最適パターンの徹底活用
PDF
失敗事例で学ぶ負荷試験
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustTechTalk#10windowsアプリでのテスト自動化事例
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
TypeScriptの大規模開発への適用
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
まだ DOM 操作で消耗してるの?
AWS運用における最適パターンの徹底活用
失敗事例で学ぶ負荷試験

Similar to JustTechTalk#10 React開発における自動テスト実践

PPTX
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
PDF
はじめてのテスト技法
PDF
我が家のフロントエンド開発事情
PDF
20210802 softwaredesign #27 kitazaki
PDF
テスト観点に基づくテスト開発方法論 VSTePの概要
PDF
Re-collection of embedded software qa in the last decade
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
PDF
20240205_SD輪読&座談会#53_kitazaki.pdf
PPTX
新しいWEBフロントの開拓.pptx
PDF
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
PPTX
Glassfish勉強会(JavaEE6について)
PDF
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
PDF
レガシーコード改善はじめました 横浜道場
PDF
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
PPTX
How to let them in house of quality
PDF
サービスの成長を支えるフロントエンド開発 #denatechcon
 
PPTX
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
PPTX
Rx t study130216
PDF
inside 2012新卒説明会
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
はじめてのテスト技法
我が家のフロントエンド開発事情
20210802 softwaredesign #27 kitazaki
テスト観点に基づくテスト開発方法論 VSTePの概要
Re-collection of embedded software qa in the last decade
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
20240205_SD輪読&座談会#53_kitazaki.pdf
新しいWEBフロントの開拓.pptx
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
Glassfish勉強会(JavaEE6について)
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
レガシーコード改善はじめました 横浜道場
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
How to let them in house of quality
サービスの成長を支えるフロントエンド開発 #denatechcon
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
Rx t study130216
inside 2012新卒説明会

More from JustSystems Corporation

PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
PDF
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
PDF
現役23名のPM:タイプ別マネジメントパターン
PPTX
JavaでインメモリSQLエンジンを作ってみた
PDF
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
PDF
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
PDF
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
PDF
最新のJava言語仕様で見るモジュールシステム #jjug
PPTX
ジャストシステムのDevOps実例 今後の取り組み
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
PDF
CSSレイアウトでなぜ失敗するか?
PDF
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
PDF
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
PDF
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
PDF
ジャストシステムJava100本ノックのご紹介
PPTX
ATOK Spark のご紹介とJavaによるプラグイン開発について
PPTX
スマイルゼミの裏側(db編)
PDF
Groonga meetup20151129
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
現役23名のPM:タイプ別マネジメントパターン
JavaでインメモリSQLエンジンを作ってみた
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
最新のJava言語仕様で見るモジュールシステム #jjug
ジャストシステムのDevOps実例 今後の取り組み
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Kotlin is charming; The reasons Java engineers should start Kotlin.
CSSレイアウトでなぜ失敗するか?
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
ジャストシステムJava100本ノックのご紹介
ATOK Spark のご紹介とJavaによるプラグイン開発について
スマイルゼミの裏側(db編)
Groonga meetup20151129

JustTechTalk#10 React開発における自動テスト実践


[8]ページ先頭

©2009-2025 Movatter.jp