ãšã³ãžãã¢ã«ãšã£ãŠæãæãããã®ã¯ããªãªãŒã¹åŸã«çºèŠãããæ³å®å€ã®ãã°ãã§ã¯ãªãã§ããããããã¹ãã³ãŒããæžããŠã¯ããŠãããæ¬åœã«ååãªç¯å²ããã¹ãã§ããŠããã®ãïŒããšããäžå®ã¯åžžã«ä»ããŸãšããŸãã
ããã§éèŠã«ãªãã®ãããã¹ãã«ãã¬ããžïŒç¶²çŸ çïŒããšããææšã§ããã«ãã¬ããžãå¯èŠåããããšã§ããã¹ãã®ç©Žãã©ãã«ããã®ããäžç®ã§åãããå¹ççã«å質ãåäžãããããšãã§ããŸããâš
ãã®èšäºãèªã¿çµããé ã«ã¯ãããªãã®éçºãããŒã«ãæ°å€ã«åºã¥ããå質管çããçµã¿èŸŒãŸãã粟ç¥çãªäœè£ãæã£ãŠãããã€ãã¿ã³ãæŒããæªæ¥ãåŸ ã£ãŠããã¯ãã§ããð
ãã¹ãã«ãã¬ããžãšã¯ããã¹ãã³ãŒããå®è¡ããéã«ããããã¯ã·ã§ã³ã³ãŒãïŒå®éã®è£œåã³ãŒãïŒã®ã©ã®çšåºŠãå®è¡ããããã瀺ãç¶²çŸ çã®ããšã§ããð
äŸãã°ã10è¡ãã颿°ã®ãã¡ããã¹ãã«ãã£ãŠ8è¡ããå®è¡ãããªãã£ãå Žåãã«ãã¬ããžã¯80%ãšãªããŸããæ®ãã®20%ã«ã¯ãæªã èŠã¬ãã°ãæœãã§ããå¯èœæ§ããããšããããšã§ãã
ã«ãã¬ããžã«ã¯ãã©ã®ã¬ãã«ãŸã§ç¶²çŸ ãããã«ãã£ãŠããã€ãã®åºæºããããŸããð¡
Pythonã®æšæºçãªãã¹ããã¬ãŒã ã¯ãŒã¯ pytest ã®ãã©ã°ã€ã³ã§ãã pytest-cov ã䜿ãã°ãç°¡åã«ã«ãã¬ããžãèšæž¬ã§ããŸããð»
ãŸãã¯ãpipã䜿ã£ãŠã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãããã
pip install pytest-cov ã³ãã³ãã©ã€ã³ããã以äžã®ããã«å®è¡ããŸãããããã¯ã·ã§ã³ã³ãŒããå ¥ã£ãŠãããã©ã«ããæå®ããã®ããã€ã³ãã§ããð¯
pytest --cov=ãœãŒã¹ãã©ã«ãå ãã¹ããã©ã«ãå ããã«ãããã©ã®ãã¡ã€ã«ã®ã©ã®è¡ãå®è¡ãããã©ã®è¡ãå®è¡ãããªãã£ãã®ããã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã
è¡ã ãã§ãªããåå²ãŸã§ç¶²çŸ
ãããå Žå㯠--cov-branch ãªãã·ã§ã³ã远å ããŸããð
pytest --cov=ãœãŒã¹ãã©ã«ãå --cov-branch ãã¹ããã©ã«ãå ããã«ããããæ¡ä»¶åŒãTrueã«ãªãã±ãŒã¹ã¯ãã¹ãããããFalseã«ãªãã±ãŒã¹ãå¿ããŠããããšãã£ãæŒããæ£ç¢ºã«ææ¡ã§ããŸãã
ã³ã³ãœãŒã«ã®æ°å€ã ãã§ã¯åããã«ããå ŽåãHTML圢åŒã®ã¬ããŒããåºåããŠãã©ãŠã¶ã§ç¢ºèªããŸããããð
pytest --cov=ãœãŒã¹ãã©ã«ãå --cov-report=html ãã¹ããã©ã«ãå å®è¡åŸãhtmlcov ãšãããã©ã«ããçæãããŸãããã®äžã® index.html ããã©ãŠã¶ã§éããšãããã¹ãã§éã£ãŠããªãè¡ããèµ€ããã€ã©ã€ããããçŽæçã«ä¿®æ£ç®æãç¹å®ã§ããŸãïŒð©
ã³ãŒãã®å質ãé«ããåªåããæé«ã®ç°å¢ã§ãµããŒãããŸããããéäžåãšçç£æ§ãåäžãããå³éžã¢ã€ãã ãã玹ä»ããŸããð
1. PythonåŠç¿ãå éãããæ±ºå®çã®æžç±
åºç€ãåºããŠãC2ãMCCãªã©ã®é«åºŠãªãã¹ãèšèšãçè§£ããããã«ãè¯è³ªãªãªãã¡ã¬ã³ã¹ã¯äžå¯æ¬ ã§ãã
2. é·æéã®ã³ãŒãã£ã³ã°ã§ãç²ããªã髿©èœããŒããŒã
ãã¹ãã³ãŒãã倧éã«æžããªããæãžã®è² æ
ã軜æžããæéµæã«ãã ãã£ãããŒããŒããæ£è§£ã§ãã
3. åºãèŠèªæ§ã§ã«ãã¬ããžã¬ããŒããå¿«é©ã«ãã§ãã¯ïŒ4Kã¢ãã¿ãŒ
HTMLã¬ããŒãã®ã³ãŒãç»é¢ãšãšãã£ã¿ãåæã«è¡šç€ºã§ãã倧ç»é¢ã¢ãã¿ãŒãããã°ããããã°é床ãåçã«åäžããŸãã
4. éäžåãç¶æãããã€ãºãã£ã³ã»ãªã³ã°ããããã³
æ·±ãéäžïŒãŸãŒã³ïŒã«å
¥ãã°ãè€éãªæ¡ä»¶åå²ã®ãã¹ãã±ãŒã¹èšèšãã¹ã ãŒãºã«é²ã¿ãŸãã
ããã§éåžžã«éèŠãªæ³šæç¹ããããŸãããã«ãã¬ããž100%ã«ãªã£ãããããããã°ã¯ãŒãã ããšããã®ã¯å€§ããªèª€è§£ã§ãã ðš
ã«ãã¬ããžã¯ãããŸã§ããã¹ããã¹ãç®æã®æŒããèŠã€ããããã®ææšããšããŠæŽ»çšããæ¬è³ªçãªãã¹ãèšèšã«æ³šåããŠãã ãããðª
Q: ã«ãã¬ããžã¯ã©ã®ãããã®æ°å€ãç®æšã«ãã¹ãã§ããïŒ ð¯
A: ãããžã§ã¯ãã«ãããŸãããäžè¬çã«ã¯ 70ã80% ãäžã€ã®ç®å®ãšèšãããŠããŸãã100%ãç®æããšãæ¬è³ªçã§ãªããã¹ãïŒåçŽãªã²ãã¿ãŒãªã©ïŒã«æéã䜿ããããããã¹ãç²ãããèµ·ãããããéèŠãªããžãã¹ããžãã¯ãéç¹çã«ã«ããŒããŸãããã
Q: C0ãšC1ã®æ±ºå®çãªéãã¯äœã§ããïŒ ð¿
A: C0ã¯ããã®è¡ãéã£ãããã ããèŠãŸãããC1ã¯ãYesã®å ŽåãšNoã®å Žåã®äž¡æ¹ã詊ãããããèŠãŸããifæãããå ŽåãC0ã§ã¯Trueã«ãªãã±ãŒã¹ã ãã§100%ã«ãªããŸãããC1ã§ã¯Falseã«ãªãã±ãŒã¹ãå¿
èŠã«ãªããŸãã
Q: CI/CDã«çµã¿èŸŒãã¡ãªããã¯ãããŸããïŒ âïž
A: éåžžã«ãããŸãïŒGitHub Actionsãªã©ã®CIããŒã«ã§ã«ãã¬ããžãèªåèšæž¬ãããã«ãã¬ããžãã%ãäžåã£ãããã«ãªã¯ãšã¹ããããŒãžäžå¯ã«ããããšããéçšãããããšã§ãããŒã å
šäœã®å質氎æºãäžå®ã«ä¿ã€ããšãã§ããŸãã
ãã¹ãã«ãã¬ããžãèšæž¬ããããšã§ãç§ãã¡ã¯ãåãã§ã¯ãªããæ ¹æ ãã«åºã¥ããŠã³ãŒãã®ä¿¡é Œæ§ãèªãããšãã§ããŸããpytest-cov ãå°å
¥ããŠããŸãã¯èªåã®ã³ãŒãã®çŸç¶ãå¯èŠåããããšããå§ããŠã¿ãŠãã ããã
æ£ããææšã䜿ããé©åãªç°å¢ãæŽããã°ãéçºé床ãšå質ã®äž¡ç«ã¯å¿
ãå®çŸã§ããŸãããããä»ãã --cov ãªãã·ã§ã³ãä»ããŠãã¹ããåããŸãããïŒð¥
ð§© ããºã«ãè§£ãå¿«æãã³ãŒãã§…
âš ããã°ã©ã ã®åäœã軜ããã…
ð ãµãŒããŒãµã€ãéçºã®äžçãž…
âš é¢åãªWebäœæ¥ãèªååã…
â³ ãåŸ ã¡æéãããŒãã«ãã
ð® ã³ãŒãã§å°å¥³ãæãåºãïŒç©¶…