Início
Conheça mais
Enviar pesquisa
Carregar
Entrar
Cadastre-se
Anúncio
Check these out next
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Dockerからcontainerdへの移行
Akihiro Suda
開発速度が速い #とは(LayerX社内資料)
mosa siru
例外設計における大罪
Takuto Wada
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
シリコンバレーの「何が」凄いのか
Atsushi Nakada
Redisの特徴と活用方法について
Yuji Otani
1
de
11
Top clipped slide
テストコードの DRY と DAMP
11 de Apr de 2022
•
0 gostou
0 gostaram
×
Seja o primeiro a gostar disto
mostrar mais
•
1,278 visualizações
visualizações
×
Vistos totais
0
No Slideshare
0
De incorporações
0
Número de incorporações
0
Denunciar
Tecnologia
@PHPerKaigi 2022
Yusuke Kagata
Seguir
Anúncio
Anúncio
Anúncio
Recomendados
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
100.3K visualizações
•
62 slides
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
22.4K visualizações
•
40 slides
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
51.4K visualizações
•
243 slides
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
28.4K visualizações
•
41 slides
世界一わかりやすいClean Architecture
Atsushi Nakamura
45.2K visualizações
•
77 slides
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
143.1K visualizações
•
45 slides
Mais conteúdo relacionado
Apresentações para você
(20)
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
•
82.4K visualizações
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
•
86.3K visualizações
Dockerからcontainerdへの移行
Akihiro Suda
•
5.8K visualizações
開発速度が速い #とは(LayerX社内資料)
mosa siru
•
58K visualizações
例外設計における大罪
Takuto Wada
•
66.4K visualizações
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
•
23K visualizações
シリコンバレーの「何が」凄いのか
Atsushi Nakada
•
182.8K visualizações
Redisの特徴と活用方法について
Yuji Otani
•
98.6K visualizações
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
•
47.6K visualizações
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
•
95.2K visualizações
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
•
120.5K visualizações
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
Yoshiki Hayama
•
48.9K visualizações
マイクロにしすぎた結果がこれだよ!
mosa siru
•
131.4K visualizações
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
•
64.1K visualizações
Spring Boot ユーザの方のための Quarkus 入門
tsukasamannen
•
564 visualizações
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
•
170.4K visualizações
「速」を落とさないコードレビュー
Takafumi ONAKA
•
55.2K visualizações
リーン開発の本質 公開用
ESM SEC
•
20K visualizações
こわくない Git
Kota Saito
•
872.5K visualizações
Where狙いのキー、order by狙いのキー
yoku0825
•
38K visualizações
Similar a テストコードの DRY と DAMP
(20)
とある Perl Monger の働き方
Yusuke Wada
•
15.5K visualizações
ひよこテスト駆動開発(PHPカンファレンス2014)
Oonishi Keitarou
•
4.2K visualizações
パフォーマンステストいつやる??
Shuichi Takaku
•
599 visualizações
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Tasuku Suenaga
•
8.3K visualizações
これができたらエンジニア|YAPC::Asia 2015 LT rejected
Takahiro YAMAGUCHI
•
901 visualizações
Dev love関西 レガシーコードへの取り組み 20140325
Seiichi Sugahara
•
1.5K visualizações
phpstudy_php_to_node
Suguru Shirai
•
2.9K visualizações
Dockerを使ってローカルテストを良い感じに実装した話
Ryo Yamaoka
•
1.3K visualizações
テスト駆動開発入門 - C4K Meetup#2
Masashi Shibata
•
530 visualizações
ペアプロはリモートでもできる!
Tatsuya Deguchi
•
4.3K visualizações
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
•
3.9K visualizações
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
•
16K visualizações
20130603 aspnet勉強会 実践的debugging
kumake
•
1.3K visualizações
大規模Perl初心者研修を支える技術
Daisuke Tamada
•
78.4K visualizações
20120702勉強会 webアプリ作ってみた
Shugo Numano
•
1.3K visualizações
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Tomoaki Tamura
•
1K visualizações
非同期プログラミング養成ギブスとしてのNode.js
Tajima Itsuro
•
5K visualizações
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
•
2.2K visualizações
nseg第5回勉強会
ko ty
•
798 visualizações
俺がモデルだ!問題に立ち向かう
Akira Suenami
•
1.3K visualizações
Anúncio
Último
(20)
JSONEncoderで詰まった話
とん とんぼ
•
143 visualizações
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
3 visualizações
Omnis
DaisukeFujita10
•
21 visualizações
20230602_enebular_meetup_kitazaki_v1.pdf
Ayachika Kitazaki
•
25 visualizações
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
•
31 visualizações
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
41 visualizações
Forguncy8 製品概要 202305.pptx
フォーガンシー
•
55 visualizações
Forguncy製品概要.pptx
フォーガンシー
•
73 visualizações
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 visualizações
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
24 visualizações
HTTPの仕組みについて
iPride Co., Ltd.
•
9 visualizações
SoftwareControl.pdf
ssusercd9928
•
7 visualizações
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
0 visão
SoftwareControl.pdf
ssusercd9928
•
15 visualizações
20230601_Visual_IoTLT_vol14_kitazaki_v1.pdf
Ayachika Kitazaki
•
67 visualizações
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
9 visualizações
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
•
31 visualizações
MC-800DMT intrusion detector manual
Vedard Security Alarm System Store
•
3 visualizações
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
229 visualizações
【DL輪読会】Egocentric Video Task Translation (CVPR 2023 Highlight)
Deep Learning JP
•
63 visualizações
テストコードの DRY と DAMP
テストコードの DRY と DAMP @PHPerKaigi
2022, 2022-04-11
誰? • 加賀田 裕介
@_heartyfluid • 今は Web アプリエンジニア • 今は不動産とか IoT とかの会社に勤務 • 直近では自社サービスのひとつを PHP7 + CakePHP3 から PHP8 + CakePHP4 にひとりで移行作業中 • 最近の趣味はドイツ語
ここまでのあらすじ: 気がついたらユニットテストおじさんに • 転職 • そこには前任者が書き残した壊れたユニットテストが •
自分の作業用にテストを書き足す • 自分のテスト結果が見づらくなるので、壊れたテストも直す • 「なんか今度の新入りはテストに強いらしい」 • 職場でいわゆる「ユニットテストおじさん」の地位を確立 • .oO(業務でテスト書くの初めてなんですけどね… • あわててテスト芸を仕込む日々
ある日のコードレビュー(※再現) • CakePHP のコントローラーのシンプルなテストをレビューす る 🤔 🤔 たとえば、この間にコードが増えると $this->post()
に渡される引数がなんだったか わかりにくくなりそう
ある日のコードレビュー(※再現) • どちらかというとこうしてほしい気持ち 👍 👍 どう読んでも誤解がない
反論が予想(妄想)される • 内なるレビュイー「DRY 原則って知ってますか」
歯切れの悪い In My
Opinion 「わかります。おっしゃりたいことはよくわかります。まともな神経のプロ グラマーなら、同じ文字列リテラルを2回書くなんて生理的に受け付けないで すよね。”Don’t Repeat Yourself” すなわち DRY 原則というやつですよね知ってます。でもちょっと立ち止 まって考えたいんですけどいいですか、同じリテラルを 2回書かないのってたとえば「その値を変更したくなったとき に同じ変更を2箇所に施さないといけないのはだるいから」だったりするじゃ ないですか、でもね、このテストってパス /users/add に HTTP リクエストを 投げてみるというのがそもそもの趣旨なわけでしょう、そうすると文字列リ テラル ‘/users/add’ を変更したくなるケースって実はそんなに想定しなくても いいと思うんですよ。えっいや100%保証できるわけじゃないですけど…でも まあそうだとするとですよ、その行でどんな値になっているかその1行を読ん だだけではわからない変数よりも、値をベタッと書いてあるほうが読み手に は読みやすいんじゃないかなあと思うんですよね。えっ大差ない?お前だ け?気合いの問題?ええっと…(続
もうひとつの原則:DAMP
もうひとつの原則:DAMP • DAMP; Descriptive
And Meaningful Phrases 「説明的かつ意味がわかりやすい言い回し」 良いテストとは変化しないように設計されるものであり、そして実際、テスト対象システムが変化す る際にはテストが破綻することが通常は望ましい。したがってテストコードに関しては、本番環境向 けのコードほど DRY の恩恵はない。 さらにテストの場合、複雑となった場合のコストがより大きい。つまり、(…) テストは自立しなけれ ばならず、正しいことが自明でなければバグを出すリスクがある。(…) テストが正しく動作している ことを担保するためにテスト自体にテストが必要と感じられるほどテストが複雑になり始めたら、何 かが間違っている。 Titus Winters ほか. Google のソフトウェアエンジニアリング. オライリー・ジャパン, 2021. これが 言いたいことだった
乱暴に整理する DRY DAMP • コードの重複を避ける •
コードは簡潔になる • 変更時にも一貫性を壊さない • 誤読のリスクは残るかもしれない • プロダクトコード向き(?) • コードの重複をいとわない • コードは冗長になる • 一貫性の担保が手間かもしれない • そうとしか読めないようなコード • テストコード向き(?) 現実には、局面ごとに バランスをとる必要性
参考文献 • Titus Winters
ほか. Google のソフトウェアエンジニアリング. オライリー・ジャパン, 2021. • 日本語で DAMP についてまとまった解説を読めるのがこちら • Vladimir Khorikov. “DRY vs DAMP in Unit Tests”. Enterprise Craftsmanship. 2020年6月8日. https://enterprisecraftsmanship.com/posts/dry-damp-unit-tests/ • プロダクトコードは DRY でテストコードは DAMP …というわけではない、という解説。How は DRY に、What は DAMP に書きましょう • David Thomas ほか. 達人プログラマー(第2版). オーム社, 2020. • DRY 原則といえば『達人プログラマー』。DRY も改めてふりかえると、単に「同じコードを2回書くな」という以上の 話を含んでいますね • 宍戸里佳. 英語と一緒に学ぶドイツ語. ベレ出版, 2012. • ところで、 Don’t Repeat Yourself の Yourself っていまいち必要性がわからないことないですか。ドイツ語文法の「再帰 動詞」を学ぶとより立体的に理解できます(※個人の感想です)。ドイツ語はいいぞ
Notas do Editor
0:05
0:20
0:35
1:00 1:10 1:20
1:35 1:45 ただ、非常にためらいもある
2:00
2:15
2:20
2:50 3:10 3:20
4:10 4:30
Anúncio