
第27åïŒããã¹ãã³ãŒãã®ã¬ã€ãã©ã€ã³ ãã®2ãAAAã®èŠåŸ ââ ã¬ãã¥ãŒã殺ãã宿³äžç¶ãã忥ãã
âšïž ãããªã®ãå®ç§ïŒã ãšæã£ãŠããïŒããã¹ãã³ãŒã
æ±æ ¹æž©æ³æ¯éšã®æã¯ãç«ã¡äžã湯æ°ã®ããã«éãã§ç©ããã ãããããéçºå®€ã®äžè§ã ãã¯ããããªã®åŒŸããããªæéµé³ãå¿å°ãããªãºã ãå»ãã§ããã
ååã®é£èŒã§ããã¹ãããèªåèªèº«ã®äžå®ãè§£æ¶ããã¡ã¢ãããã顧客ã«å¯Ÿããå質ã®çŸããžãšé²åããããšãåŠãã ãããªã圌女ã¯ä»ããã®ãçŸããèªåèªèº«ã®æã§éãäžããããšã«ããã€ãŠãªãåã³ãæããŠããã
ãããªïŒ ãâŠâŠããïŒ å®ç§ãã¡ãœããããšã«ãã¹ããå®å šã«åé¢ãåœåã仿§éããããã§ãããããïŒã
æºè¶³ãã«è䌞ã³ããããããªã®å ã«ãã³ãŒããŒã®éŠããæŒãããªãããµãããã£ãŠããã
ãããªïŒ ããµãå 茩ãèŠãŠãã ããïŒ ååã®æãéããã¡ãœããããšã«ãã¹ãããã£ããåããŸããããããªããã©ãã§ãã°ãèµ·ããŠãäžçºã§ããããŸããç§ãã€ãã«ãã¹ãã®ççããã®å ¥ãå£ã«èŸ¿ãçãããããããŸããïŒã
ãããªãææ°æã ãšå·®ãåºãããšãã£ã¿ç»é¢ãããµãã¯ç®ã现ããŠçºãããæŽç¶ãšäžŠãã ãã¹ãã¡ãœããã®ååã¯ç¢ºãã«çŸãããããããåå¥ã®ã¡ãœããã®äžã«èŠç·ãç§»ããç¬éããµãã®çãå°ãã ãåããã
ãµãïŒ ãããŒããããããã確ãã«ã¡ãœããã®åãåºãã¯ããæããâŠâŠãã§ãããã²ãŸããã®äžèº«ããªãããå»ãã§ããªãïŒ èªãã§ãŠãããâŠâŠæ¯ãåãããã ãã©ãâšã
âšïž ã¹ãããå®è¡ã®ãããªã宿³äžç¶åããã¹ã
ãµãã®ææã«ããããªã¯éŠãåŸããããå»ãã§ããããšã¯ã©ãããããšãããããªã®æžãããã¹ãã³ãŒãã¯ã次ã®ãããªæ§æã«ãªã£ãŠããã
def test_calculate_total_price():
# ååããŒã¿ãçšæ
data = {'id': 101, 'price': 1000, 'tax_rate': 0.1}
# 代å
¥ã§ãããããŸãã¯ç¢ºèª
assert data['id'] == 101
# èšç®ããžãã¯ãåŒã³åºã
logic = PriceCalculator()
result = logic.calculate(data)
# èšç®çµæãã¡ãããšè¿ã£ãŠããã確èª
assert result is not None
# ã¹ããŒã¿ã¹ãæåã確èª
assert result.status == 'success'
# æçµçãªéé¡ãåã£ãŠããã確èª
assert result.total == 1100ã«ã«ïŒ ãïŒèåŸãããããã¿ãæã§ãã³ãã³ãšå©ããªããïŒâŠâŠãããªãããããã¯ãã¹ãã³ãŒãã§ã¯ãããŸããããã ã®ããããã°ã®è¶³è·¡ãã§ããïŒð€ã
çªç¶çŸããã«ã«ã®éã声ã«ããããªã¯èçã䌞ã°ãã
ãããªïŒ ã足跡âŠâŠã§ããïŒ ã§ãã1ã¹ããããã€ç¢ºèªããã»ãããã©ãã§ééãããããããããããªãã§ããã芪åã ãšæã£ãŠå ¥ãããã§ããã©âŠâŠãã
ã«ã«ïŒ ããããã¬ãã¥ã¯ãŒæ®ºããªã®ã§ããïŒ ããªãã®ã³ãŒãã¯ããŸãã§ãã©ãœã³ã³ãŒã¹ã®1ã¡ãŒãã«ããšã«ãä»ãå°é¢ãèžã¿ãŸããããä»ãåŒåžãããŸããããšå ±åããŠãããããªãã®ãèªã¿æã¯ãããªããæçµçã«ã©ã®ãŽãŒã«ãç®æããäœã確èªãããã®ããæåŸãŸã§è¿·è·¯ãæ©ãããã矜ç®ã«ãªããŸããããã¯å質ã®èšŒæã§ã¯ãªããåãªãããªãã®ã宿³äžç¶ãã«éããŸãããïŒïŒð€ã
ãããªã¯èšèã«è©°ãŸã£ããè¯ãããšæã£ãŠå ¥ããäžå¯§ãªã¢ãµãŒã·ã§ã³ããéã«ã³ãŒãã®å¯èªæ§ãèããæãªãããã¬ãã¥ã¯ãŒã®éäžåãåãã§ããããšã«æ°ã¥ããããã®ã ã
âšïž AAAã®é å® ââ ç©ççãªãåããã¬ãã¥ãŒãæã
é åãããããªã«ä»£ãã£ãŠãããªãåªãããšãã£ã¿ã®ããŒããŒãã«æãæ·»ããã
ããªïŒ ããããªã¡ããããã¹ãã³ãŒãã«ã¯ãèªã¿æã«å¯Ÿããã瀌åããšããŠã®ç©ççãªåãããã®ããããããAAAïŒArrange / Act / AssertïŒãâã
ããªã¯ãããªã®ã³ãŒãã«ã2ã€ã®ç©ºè¡ãå ¥ãããããã ãã§ãã³ãŒãã®ãæ¯è²ããåçã«å€ãã£ãã
ArrangeïŒæºåïŒïŒèå°ãæŽãã
ãŸãããã¹ãã«å¿ èŠãªããŒã¿ãæããå Žæãããã§ã¯ãŸã ãäœããå®è¡ãããªãã
ActïŒå®è¡ïŒïŒäž»åœ¹ã®åºçª
ãã¹ã察象ãšãªãã¡ãœãããããã äžè¡ã ãåŒã³åºããããããã¹ãã®å¿èéšã
AssertïŒæ€èšŒïŒïŒæ€å
æåŸã«ãå±ããçµæãäžæ°ã«æ€åããã
ãµãïŒ ãã²ãŸãããã倧äºãªãã ãã©ããâš éäžã®å°ç³ãäžã€ãã€ç¢ºèªããªããŠããã®ãéäžã§ assert ãå ¥ãã¡ããã®ã¯ãå®ã¯èªåã®æžããæºåã³ãŒãïŒArrangeïŒãä¿¡çšããŠãªã蚌æ ãªãã ããâšã
ãµãã®èšèãããããªã®èžãçªãã
ãµãïŒ ãæºåãæ£ããã§ããŠããåæã§ãActãå©ãããããŠæåŸã®äžæïŒAssertïŒã§ããã¹ãŠã®èŸ»è€ãåã£ãŠããããèŠããããããæ€èšŒãã®åæ Œã£ãŠããããããéäžã§ããŸããŸç¢ºèªããã®ã¯ãèªä¿¡ããªãããã°ã©ãããããçããã ããâšã
ç¹ã«æšä»ãAIã«ããã³ãããæããŠãã¹ãã³ãŒããçæããããšãAIã¯åŸãŠããŠã宿³äžç¶åãã®ã³ãŒããéç£ããã¡ã ã 1è¡é²ãããšã«ãå€ãæ£ãããããåŸåã«ç¢ºèªããAIãããããã®ãŸãŸã¬ãã¥ãŒã«åºãã°ã人éåŽã®èªç¥è² è·ã¯çå¢ããã
ã ããããã人éããAAAã®åã§æžãããã¢ãµãŒã·ã§ã³ã¯æåŸã®äžå¡ã«éçŽããããšããèŠåŸããããã³ãããšããåã®éã®æã§æ»å®ããªããã°ãªããªãã®ã ãããã¯ãçŸå Žã§äœäžè¡ãã®ã³ãŒããèŠãŠãããšã³ãžãã¢ãã¡ã®ãåå®ãªç¥æµã§ããã
âšïž ã¢ãµãŒã·ã§ã³ã®éçŽ ââ ãäžèšãã§èšãåãåæ°
AAAã®æ§é ãæŽããåŸãããªã¯æåŸã®ã¢ãµãŒã·ã§ã³éšåãæå·®ããã
ããªïŒ ãçæ³ã¯ã1ã€ã®ãã¹ãã¡ãœããã«ã€ããã¢ãµãŒã·ã§ã³ã¯1ã€ãã§ããçŸå®ã®ã·ã¹ãã ã§ã¯1ã€ã®çµæãå€è§çã«èŠããããšããããããã®å Žåã¯è€æ°äžŠã¹ãŠãæ§ããªããããã©ããéçšã®ç¢ºèªãã¯åŸ¹åºçã«æé€ããããšãâã
ãããªã¯ãããªã«æããããéãã«ã³ãŒããæžãçŽããŠã¿ãã
def test_calculate_total_price():
# Arrange: æºå
data = {'id': 101, 'price': 1000, 'tax_rate': 0.1}
logic = PriceCalculator()
# Act: å®è¡
result = logic.calculate(data)
# Assert: æ€èšŒ
assert result.status == 'success'
assert result.total == 1100
ãŠã€ïŒ ããã âŠâŠã£ãâŠâŠç¶ºéºãæåŸã®ã¢ãµãŒã·ã§ã³ã®ãããã¯ãèŠãã ãã§ããã®ãã¹ããäœãä¿èšŒãããã仿§æžããªã®ããäžç®ã§ãããããã«ãªã£ãããâŠâŠã£ãã
ãã£ãšéãã«ã¢ãã¿ãŒãèŠã€ããŠãããŠã€ããå¬ãããã«åãã 空è¡ã§åºåãããäžæ®µæ§æããããŠæåŸã®äžå¡ã«éçŽãããã¢ãµãŒã·ã§ã³ã ããã¯ãã¯ãåãªãããã°ã©ã ã§ã¯ãªãããã®æ©èœãã©ã®ãããªæåããã¹ãããéåŒã«èªããããã¥ã¡ã³ããã«æè¯ãããŠããã
ãããªïŒ ãäžæ®µæ§ãã®AAAâŠâŠããã®åã厩ããªãããšããèªååæãªå®å¿ãæšãŠãŠãæªæ¥ã®ã¬ãã¥ã¯ãŒã«å®å¿ãå±ããäžçªã®åªãããªãã§ãããã
ãããªã¯ããšãã£ã¿ã«æ ããæŽçãããçŸããèªãããèŠã€ããã 1ã¹ããããã€ç¢ºèªããªããã°äžå®ã ã£ãèªåã¯ãããããã«ã¯ããªãã é©åãªæºåãããäžæã§çµæãåºããå ã ãšæ€åããã
æ±æ ¹æž©æ³ã®ç¥çè²ã®æ¹¯ããç«ã¡äžã湯æ°ããçªã®å€ã®å€æ¯ãæãããå ã¿èŸŒãã éçºå®€ã«ã¯ãèŠåŸã身ã«ã€ããäžæ©ãã€ãããžã®é段ãäžããããªã®ãåã³è»œå¿«ã«ãªã£ãæéµé³ãé¿ãæž¡ã£ãŠããã
ð ãã¹ã®ç§èµïŒèšèšã®çŸåŠãšçŸå Žã®ãªã¢ã«
ãã¹ãã³ãŒããæžãå§ããé ãç§ãçã£å ã«ã¶ã¡åœãã£ãå£ã¯ãäžäœãäœããã¹ããããã®ãïŒããšããèªåèªçã§ããã
ãæºåãã倿°ã¯ããã®æç¹ã§æ£ããã»ãããããŠãããïŒã ããã®ã¹ãããã§ã¯ãå€ã¯æ³å®éãã«é·ç§»ããŠãããïŒã ãâŠâŠãããå€ã¯åã£ãŠããããããªãã¡ãœãããå©ãã°ãæåŸ éãã«åãã¯ãã âŠâŠã
ãããªãµãã«èããŠããææããç§ã«ããããŸãããæ°ã¥ãã°ãèå¿ã®ã¡ã€ã³åŠçããã¹ãããåã«ãå»¶ã ãšã¢ãµãŒã·ã§ã³ïŒæ€èšŒïŒãç¹°ãè¿ãããããªãå¿é æ§ã®å¡ãã®ãããªã³ãŒããéç£ããŠããã®ã§ãã仿ãè¿ããšãå°ãæ¥ãããããé ãç®ã«ãªã£ãŠããŸããŸãã
å®éããããããéäžã®å®æ³äžç¶ããæ··ãã£ããã¹ãã³ãŒãã¯ãåŸããèªã¿è¿ããšãçµå±ããã®ãã¹ãã¯äœã確èªãããã£ãã®ãïŒããããã€ãºã«åãããŠå šãèŠããŠããªããªããŸãã
ãã®è¿·ããæã¡åãããã«å¿ èŠãªã®ããAAAïŒArrange / Act / AssertïŒãšããèŠåŸã§ãã
ArrangeïŒäºåæºåïŒ: èå°ãæŽãã
ActïŒå®è¡ïŒ: åãå§ãã
AssertïŒæ€èšŒïŒ: å¹ãäžããåŸã®çµæã確èªãã
ãã®3ã¹ããããç©ççã«å®ããããã¹ãã³ãŒãã¯ãé©ãã»ã©èªã¿ãããã誰ãèŠãŠããæå³ã®ãããã¹ãããžãšæè¯ãããŸãã
ã¡ãªã¿ã«ãèšèšã®ã·ãªãŒãºã§ãè§ŠããŸããããã¡ãœããããåäžè²¬ä»»ã®ååïŒSRPïŒããéµå®ããŠãããã©ããã¯ããã®AAAã®ã·ã³ãã«ãã«çŽçµããŸãã
ãããåäžè²¬ä»»ãå®ããã«ããããããããè©°ã蟌ãã è¥å€§åããã¡ãœããã§ããã°ãAAAã®ãæ€èšŒïŒAssertïŒãã®ãã§ãŒãºã§ãè€æ°ã®ããããã¯ç¡é¢ä¿ãªçµæãäžåºŠã«æ€åããªããã°ãªããªããªããŸãããããªãã°ããã¹ãã³ãŒãã¯åã³èªã¿ã¥ãããå¢ããå質ã®èšŒæãšããŠã®åã倱ã£ãŠããã§ãããã
ãã¹ããã·ã³ãã«ã«ããããã«ãèšèšãç ãæŸãŸãã èšèšãæ£ããè¡ãããã«ããã¹ãã³ãŒãã®æžãæ¹ãåŠã¶ã ãèšèšããšããããºã«ã®æåŸã®ããŒã¹ã¯ããã®AAAãšããèŠåŸã«ãã£ãŠãã«ããªãšé³ãç«ãŠãŠã¯ãŸãã®ã ãšãç§ã¯èããŠããŸãã
ïŒã€ã¥ãïŒ
#ãšã³ãžã㢠#ããã°ã©ãã³ã° #ãã¹ãã³ãŒã #ãŠããããã¹ã #AAA #èšèš #åäžè²¬ä»»ã®åå #SRP #ãœãããŠã§ã¢éçº #å質ä¿èšŒ #QA #çæAI #AIæŽ»çš #ãªãã¡ã¯ã¿ãªã³ã° #ã¯ãªãŒã³ã³ãŒã #æ±æ ¹æž©æ³ç§å¯çµç€Ÿ #ãã¹ã®ç§èµ #é§ãåºããšã³ãžãã¢ãšç¹ãããã