Enviar pesquisa
Carregar
pytest × TDD テスト駆動開発のススメ
•
0 gostou
•
540 visualizações
iRidge, Inc.
Seguir
PyCon JP 2020 アイリッジブースで公開していたスライドコンテンツです。
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 11
Baixar agora
Baixar para ler offline
Recomendados
例外設計における大罪
例外設計における大罪
Takuto Wada
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
Yoshiki Hayama
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Recomendados
例外設計における大罪
例外設計における大罪
Takuto Wada
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
Yoshiki Hayama
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Platform - Japan
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
KeijiUehata1
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
Masahiro Nagano
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
Taiki Yoshida
基礎線形代数講座
基礎線形代数講座
SEGADevTech
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
Natsuki Yamanaka
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
Mais conteúdo relacionado
Mais procurados
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Platform - Japan
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
KeijiUehata1
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
Masahiro Nagano
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
Taiki Yoshida
基礎線形代数講座
基礎線形代数講座
SEGADevTech
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
Natsuki Yamanaka
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Mais procurados
(20)
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
PostgreSQLアンチパターン
PostgreSQLアンチパターン
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
今から始めようMicrosoft PowerApps! (2017年版) - 吉田の備忘録
基礎線形代数講座
基礎線形代数講座
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
スマホ(Android・iPhone)でWebRTC
スマホ(Android・iPhone)でWebRTC
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Semelhante a pytest × TDD テスト駆動開発のススメ
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践
Yuusuke Takeuchi
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
kyon mm
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
Takuya Kawabe
Kubo100903
Kubo100903
kubo
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
リファクタリング読書会20120220
リファクタリング読書会20120220
Suguru Shirai
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作り
kyon mm
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
陽一 滝川
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
後期講座07
後期講座07
Takenori Nakagawa
wankuma #28
wankuma #28
高見 知英
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
アジャイルソフトウェア開発の奥義 勉強会#1
アジャイルソフトウェア開発の奥義 勉強会#1
KOHEI KAWAGUCHI
Semelhante a pytest × TDD テスト駆動開発のススメ
(20)
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
テスト駆動ゲーム開発をJava scriptで実践
テスト駆動ゲーム開発をJava scriptで実践
Unit testで定時帰宅!
Unit testで定時帰宅!
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
Kubo100903
Kubo100903
TDDはじめる前に
TDDはじめる前に
リファクタリング読書会20120220
リファクタリング読書会20120220
Gui自動テストツール基本
Gui自動テストツール基本
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作り
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
後期講座07
後期講座07
wankuma #28
wankuma #28
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
アジャイルソフトウェア開発の奥義 勉強会#1
アジャイルソフトウェア開発の奥義 勉強会#1
pytest × TDD テスト駆動開発のススメ
1.
pytest × TDD テスト駆動開発のススメ
2.
テスト駆動開発とは テストファーストなプログラムの開発手法。 機能を実装する前にテストコードを書き、そのテストコードに適合するように実 装とリファクタリングを進めていく。 2 【通常】 機能実装 テストコード作成 テストコード作成 機能実装 設計 設計 【テスト駆動開発】
3.
テスト駆動開発の3つの工程 実装したい機能を実現するコードがない状態で、先に機能をテストするためのコードを書く。 まずはテストが正しくエラーになることを確認する段階。 レッド 先に実装したテストが成功するように注意を払いつつ、機能を実装していく。 完璧なコードを書こうとせず、テストが成功する状態になることを優先して実装を行う。 グリーン 一般的にテスト駆動開発では、下記の3つの工程を繰り返しながら開発を進める。 テストが成功する状態を維持しつつ、簡潔・明快なコードにする。 後回しにすると、修正負担が増え手がつかなくなる。グリーンを達成したらその都度行う。 リファクタリング
4.
開発体制 • 3人の開発者でテスト駆動開発を行った。 • 2つのモジュールについて、テストコードを書いた担当とプロダクションコードを書く担当を逆にし た。
→ 仕様との照らし合わせをダブルでチェックする。 4
5.
開発の流れ 5 コード設計は以下の点を実際にコードに落とし込んだものとし、その落とし込んだものを設計者以外 の全員でレビューする形とした。 • フレームワーク • リポジトリ構成 •
クラス、メソッド、関数 ◆ 設計の意図を伝えるためだけのものを作成 ◆ 具体的な処理はかかない テストコード作成 レビュー済みのコード設計に対してテストコードを作成し、作成者以外でそのテストコードをレビュー する。 満たすべき要件を洗い出し、その洗い出した要件一つ一つに対してコード設計に沿うようにテ ストケースを作成した。 プロダクトコード実装 最後に作成したテストコードがすべてパスするようにプロダクトコードを実装し、作成者以外でレ ビューをし完了となる。 コード設計
6.
使用したモジュール python用のテストモジュール。 pipでインストール可能。 test_で始まる関数がテスト対象とな り、assertにFalseが渡されるとエ ラーとして出力する。 from pydantic import
BaseModel class User(BaseModel): id: int name: str favorite: list = [] from hoge import add_func @pytest.mark.parametrize(”a, b, expect”, [ (1, 2, 3), (2, 3, 5), ]) test_add_func(a, b, expected): assert func(a, b) == expected pytest pydantic Pythonの型アノテーションを利用し、バリデーションを行うことができる。 パラメータを変えつつ、 複数のケースでテスト可能 初期化を行うことも可能 Trueになるかチェックする dict()メソッドで、変数を辞書として出力可能。
7.
テストコード 7 与える入力 (ケース1) 期待する出力 (ケース1) 実際に入力を与え、期待する出力になっているかチェック 与える入力 (ケース2) 期待する出力 (ケース2)
8.
プロダクトコード テストにパスすることを常に確認しながら、 機能の追加やリファクタリングを行なっていく。
9.
良かった点 システムの理解度の均一化 • 1つのモジュールを全員で取り組む。 → システムの属人化を早い段階で排除できる。 不具合検知の効率化 •
1つのモジュール作成の工程に対し複数人が対応。 → それぞれの視点でシステムを評価でき、開発段階での不具合検知の確率があがる。 コードの統一化 • コード設計を全員でチェックし統一化。 → 担当を入れ替えながら進めても実装の仕方が大きくブレない。 9
10.
改善点など 開発スピード • コード設計、テストコード作成、プロダクトコード実装の一つ一つでレビューを挟むため開発スピー ドはおちる。 • 基本的に全員がすべてのモジュールのシステム構成を把握する必要があり、そのキャッチアップ に時間がかかる。 導入障壁 •
今回は新規に作成するコンポーネントだったため、最初からテスト駆動開発で入れた。 → 既存システムの改修などの場合、話が変わってくる。 10
Baixar agora