Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これまでに一番苦労したプロジェクト
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
嘉音とんと
July 29, 2023
26
0
Share
これまでに一番苦労したプロジェクト
私が 6 年間のエンジニア人生で一番苦労したプロジェクトの話をします。
嘉音とんと
July 29, 2023
More Decks by 嘉音とんと
See All by 嘉音とんと
CSSの歩き方
kanon_tonto
0
57
推しの VTuber の公式 Web サイトを作った Part.2
kanon_tonto
0
31
推しの VTuber の公式サイトを作った
kanon_tonto
0
180
ぼっちがリモートワークやってみた
kanon_tonto
0
93
Kanazawa.rbを振り返る
kanon_tonto
0
110
もう僕は勤怠を入力しなくても良い
kanon_tonto
0
50
Goで始めるWebsocketプログラミング
kanon_tonto
0
160
AWS Lambdaでファイルをこねくり回す
kanon_tonto
0
430
iOSアプリをリリースするまで
kanon_tonto
2
410
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
Building Applications with DynamoDB
mza
96
7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Being A Developer After 40
akosma
91
590k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
660
Marketing to machines
jonoalderson
1
5.1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
440
Faster Mobile Websites
deanohume
310
31k
Six Lessons from altMBA
skipperchong
29
4.2k
Transcript
@27ma4_ton10 github.com/RyuseiNomi 人生で一番苦労したプロジェクト
Ryusei Nomi # Webエンジニア # マリオカート # VTuber # Go
/ Javascript @27ma4_ton10
事業システムのカバレッジ向上 (2018/4 ~ 2019/6) 苦労したプロジェクト
🛠 技術スタック ・PHP 5.1 ・PHPUnit 4.x ・Docker ・Selenium ・ShellScript
📝 プロジェクト概要 ・ PHP のバージョンアップをしよう! ・そのためにテストカバレッジを上げよう
🥺 困難な点 ・ PHPUnit が古すぎて private メソッドのモックが作れない ・巨大な public
メソッドのテストが困難
None
∑(゚Д゚)!?
🛠 runkit 関数とは? ・メソッドや組み込み関数の 動作を変更したり、抹消したり出来る😈
None
・ return10 が 10 以外を返せること ・ add10 を呼んだ時に return10 を通らないこと
・他のテストケースに影響しないこと
先に理想の テストコードを 書いてみた
これ 1 行で モックを 作りたい!
❓モック化する手順 1. 本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム 2. メソッド名とランダムな文字列を紐づけるために、プロパティにスタック 3. 該当するメソッド名と同じ名前の偽メソッドを作成 4. 偽メソッドが本番コードになりすましている間にテストを実行 5.
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム
本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム
メソッド名とランダムな文字列を紐づけるために、プロパティにスタック
該当するメソッド名と同じ名前の偽メソッドを作成
偽メソッドが本番コードになりすましている間にテストを実行
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム ・必ず後ろから順に削除する ・プロパティの中身を全て削除する
None
💰 何が得られたか? ・よりテストコードを書きやすくなった ・社内ライブラリとして公開することで みんなテストを書いてくれるようになった
📣 今後に活かせること ・作ったものは自慢しよう ・自分たちがやっている仕事をアピールしよう ・その成果が誰かを幸せにするかも知れないから
None