<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80</id>
	<title>코드 커버리지 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;action=history"/>
	<updated>2026-05-19T16:44:17Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1751&amp;oldid=prev</id>
		<title>2024년 12월 11일 (수) 02:18에 Ahn9807님의 편집</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1751&amp;oldid=prev"/>
		<updated>2024-12-11T02:18:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024년 12월 11일 (수) 02:18 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;5번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;코드 커버리지(Code Coverage)&amp;#039;&amp;#039;&amp;#039;는 소프트웨어 테스팅에서 테스트가 소스 코드의 어느 정도를 실행했는지를 측정하는 메트릭이다. 이를 통해 테스트의 효과를 평가하고, 테스트가 코드의 주요 부분을 충분히 검증하고 있는지 판단할 수 있다. 코드 커버리지는 주로 테스트의 완전성을 확인하기 위해 사용되며, 실행되지 않은 코드를 기반으로 추가적인 테스트를 설계할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;코드 커버리지(Code Coverage)&amp;#039;&amp;#039;&amp;#039;는 소프트웨어 테스팅에서 테스트가 소스 코드의 어느 정도를 실행했는지를 측정하는 메트릭이다. 이를 통해 테스트의 효과를 평가하고, 테스트가 코드의 주요 부분을 충분히 검증하고 있는지 판단할 수 있다. 코드 커버리지는 주로 테스트의 완전성을 확인하기 위해 사용되며, 실행되지 않은 코드를 기반으로 추가적인 테스트를 설계할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;코드 커버리지의 &lt;/del&gt;주요 유형 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 주요 유형 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;문 커버리지 (Statement Coverage)&amp;#039;&amp;#039;&amp;#039;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;문 커버리지 (Statement Coverage)&amp;#039;&amp;#039;&amp;#039;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;코드의 각 문(statement)이 실행되었는지를 측정한다. 예를 들어, &amp;lt;code&amp;gt;if-else&amp;lt;/code&amp;gt; 구문에서 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; 블록이 모두 실행되었는지를 확인한다.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;코드의 각 문(statement)이 실행되었는지를 측정한다. 예를 들어, &amp;lt;code&amp;gt;if-else&amp;lt;/code&amp;gt; 구문에서 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; 블록이 모두 실행되었는지를 확인한다.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;43번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;43번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 Coverage들중에서 &amp;#039;&amp;#039;&amp;#039;Statement coverage&amp;#039;&amp;#039;&amp;#039;(C1)과 &amp;#039;&amp;#039;&amp;#039;Branch or condition coverage&amp;#039;&amp;#039;&amp;#039;(C2)가 제일 많이 사용되는 Coverage로써, 대다수의 상용 프로그램들은 C1혹은 C2커버지리를 바탕으로 Software analysis의 성능을 평가한다. C1과 C2를 같이 사용하면 대다수의 statement를 커버할 수 있어서, 자연스럽게 function, loop, path, state, control flow등등의 Coverage를 평가할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 Coverage들중에서 &amp;#039;&amp;#039;&amp;#039;Statement coverage&amp;#039;&amp;#039;&amp;#039;(C1)과 &amp;#039;&amp;#039;&amp;#039;Branch or condition coverage&amp;#039;&amp;#039;&amp;#039;(C2)가 제일 많이 사용되는 Coverage로써, 대다수의 상용 프로그램들은 C1혹은 C2커버지리를 바탕으로 Software analysis의 성능을 평가한다. C1과 C2를 같이 사용하면 대다수의 statement를 커버할 수 있어서, 자연스럽게 function, loop, path, state, control flow등등의 Coverage를 평가할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;코드 커버리지의 &lt;/del&gt;장점 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 장점 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 테스트가 코드의 중요한 부분을 놓치지 않도록 도와준다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 테스트가 코드의 중요한 부분을 놓치지 않도록 도와준다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 디버깅 과정을 용이하게 한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 디버깅 과정을 용이하게 한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;49번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;49번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 충분히 테스트된 코드베이스는 유지보수가 용이하며, 안정성을 유지할 가능성이 높다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 충분히 테스트된 코드베이스는 유지보수가 용이하며, 안정성을 유지할 가능성이 높다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;코드 커버리지의 &lt;/del&gt;한계 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 한계 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 높은 커버리지가 항상 높은 품질을 의미하지 않는다. 코드가 실행되었더라도 테스트가 코드의 정확한 동작을 검증했는지는 보장하지 않는다. 따라서, &amp;#039;&amp;#039;&amp;#039;커버리지 수치만을 목표로 삼는 것은 위험할 수 있으므로, 테스트 케이스의 품질과 함께 활용하는 것이 중요&amp;#039;&amp;#039;&amp;#039;하다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 높은 커버리지가 항상 높은 품질을 의미하지 않는다. 코드가 실행되었더라도 테스트가 코드의 정확한 동작을 검증했는지는 보장하지 않는다. 따라서, &amp;#039;&amp;#039;&amp;#039;커버리지 수치만을 목표로 삼는 것은 위험할 수 있으므로, 테스트 케이스의 품질과 함께 활용하는 것이 중요&amp;#039;&amp;#039;&amp;#039;하다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 높은 커버리지를 달성하려면 많은 테스트 케이스와 시간이 필요하다. 예를 들어서 Full path coverage은 달성하기 힘든 과제이다. 예를 들어서 n개의 decision이 있는 프로그램의 경우 &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt;개의 path를 측정해야 하기 때문에, 필요한 시간이 기하급수적으로 증가한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 높은 커버리지를 달성하려면 많은 테스트 케이스와 시간이 필요하다. 예를 들어서 Full path coverage은 달성하기 힘든 과제이다. 예를 들어서 n개의 decision이 있는 프로그램의 경우 &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt;개의 path를 측정해야 하기 때문에, 필요한 시간이 기하급수적으로 증가한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 복잡한 프로그램에서는 모든 실행 경로를 테스트하는 것이 현실적으로 어렵다. 일례로, 만약 Full path coverage를 달성할 수 있다는 것은 [[Halting problem]]을 해결 가능하다는 말과 동치이다. 즉 현실적으로 프로그램의 모든 것을 측정하는 완전무결한 Code coverage는 존재할 수 없다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 복잡한 프로그램에서는 모든 실행 경로를 테스트하는 것이 현실적으로 어렵다. 일례로, 만약 Full path coverage를 달성할 수 있다는 것은 [[Halting problem]]을 해결 가능하다는 말과 동치이다. 즉 현실적으로 프로그램의 모든 것을 측정하는 완전무결한 Code coverage는 존재할 수 없다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;코드 커버리지 &lt;/del&gt;도구 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 도구 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다양한 도구들이 코드 커버리지를 측정하기 위해 사용된다:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다양한 도구들이 코드 커버리지를 측정하기 위해 사용된다:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;coverage.py&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;coverage.py&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1732&amp;oldid=prev</id>
		<title>2024년 12월 9일 (월) 04:56에 Ahn9807님의 편집</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1732&amp;oldid=prev"/>
		<updated>2024-12-09T04:56:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024년 12월 9일 (월) 04:56 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l41&quot;&gt;41번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;41번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이외에도, Linear Code Sequence and Jump (LCSAJ)커버리지, Entry/exit coverage, State coverage, Data-flow coverage와 같은 다양한 방법들로 Code Coverage를 측정할 수 있다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이외에도, Linear Code Sequence and Jump (LCSAJ)커버리지, Entry/exit coverage, State coverage, Data-flow coverage와 같은 다양한 방법들로 Code Coverage를 측정할 수 있다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 Coverage들중에서 &#039;&#039;&#039;Statement coverage&#039;&#039;&#039;(C1)과 &#039;&#039;&#039;Branch or condition coverage&#039;&#039;&#039;(C2)가 제일 많이 사용되는 Coverage로써, 대다수의 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;사용프로그램들은 &lt;/del&gt;C1혹은 C2커버지리를 바탕으로 Software analysis의 성능을 평가한다. C1과 C2를 같이 사용하면 대다수의 statement를 커버할 수 있어서, 자연스럽게 function, loop, path, state, control flow등등의 Coverage를 평가할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이 Coverage들중에서 &#039;&#039;&#039;Statement coverage&#039;&#039;&#039;(C1)과 &#039;&#039;&#039;Branch or condition coverage&#039;&#039;&#039;(C2)가 제일 많이 사용되는 Coverage로써, 대다수의 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;상용 프로그램들은 &lt;/ins&gt;C1혹은 C2커버지리를 바탕으로 Software analysis의 성능을 평가한다. C1과 C2를 같이 사용하면 대다수의 statement를 커버할 수 있어서, 자연스럽게 function, loop, path, state, control flow등등의 Coverage를 평가할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 코드 커버리지의 장점 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 코드 커버리지의 장점 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1730&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류: Fuzzing 분류: 소프트웨어 테스트  == 개요 == &#039;&#039;&#039;코드 커버리지(Code Coverage)&#039;&#039;&#039;는 소프트웨어 테스팅에서 테스트가 소스 코드의 어느 정도를 실행했는지를 측정하는 메트릭이다. 이를 통해 테스트의 효과를 평가하고, 테스트가 코드의 주요 부분을 충분히 검증하고 있는지 판단할 수 있다. 코드 커버리지는 주로 테스트의 완전성을 확인하기 위해 사용되며, 실...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=%EC%BD%94%EB%93%9C_%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80&amp;diff=1730&amp;oldid=prev"/>
		<updated>2024-12-09T04:54:08Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:Fuzzing&quot; title=&quot;분류:Fuzzing&quot;&gt;분류: Fuzzing&lt;/a&gt; &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%85%8C%EC%8A%A4%ED%8A%B8&quot; title=&quot;분류:소프트웨어 테스트&quot;&gt;분류: 소프트웨어 테스트&lt;/a&gt;  == 개요 == &amp;#039;&amp;#039;&amp;#039;코드 커버리지(Code Coverage)&amp;#039;&amp;#039;&amp;#039;는 소프트웨어 테스팅에서 테스트가 소스 코드의 어느 정도를 실행했는지를 측정하는 메트릭이다. 이를 통해 테스트의 효과를 평가하고, 테스트가 코드의 주요 부분을 충분히 검증하고 있는지 판단할 수 있다. 코드 커버리지는 주로 테스트의 완전성을 확인하기 위해 사용되며, 실...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류: Fuzzing]]&lt;br /&gt;
[[분류: 소프트웨어 테스트]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;코드 커버리지(Code Coverage)&amp;#039;&amp;#039;&amp;#039;는 소프트웨어 테스팅에서 테스트가 소스 코드의 어느 정도를 실행했는지를 측정하는 메트릭이다. 이를 통해 테스트의 효과를 평가하고, 테스트가 코드의 주요 부분을 충분히 검증하고 있는지 판단할 수 있다. 코드 커버리지는 주로 테스트의 완전성을 확인하기 위해 사용되며, 실행되지 않은 코드를 기반으로 추가적인 테스트를 설계할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== 코드 커버리지의 주요 유형 ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;문 커버리지 (Statement Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
코드의 각 문(statement)이 실행되었는지를 측정한다. 예를 들어, &amp;lt;code&amp;gt;if-else&amp;lt;/code&amp;gt; 구문에서 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; 블록이 모두 실행되었는지를 확인한다.  &lt;br /&gt;
**장점: 간단하고 빠르게 측정할 수 있다.  &lt;br /&gt;
**단점: 조건의 모든 경우를 보장하지는 못한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;엣지 커버리지 (Edge Coverage)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Control flow graph]]하의 모든 Edge들을 참색했는지 측정한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;분기 커버리지 (Branch Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
분기 커버리지는 엣지 커버리지의 한 종류로써, 조건문(&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;)에서 모든 분기(branch)가 실행되었는지를 확인한다. 예를 들어, &amp;lt;code&amp;gt;if (x &amp;gt; 0)&amp;lt;/code&amp;gt; 구문에서 &amp;lt;code&amp;gt;x &amp;gt; 0&amp;lt;/code&amp;gt;의 참과 거짓인 경우가 모두 테스트되었는지 확인한다.  &lt;br /&gt;
**장점: 모든 논리 경로를 확인하므로 더 높은 신뢰도를 제공한다.  &lt;br /&gt;
**단점: 복잡한 조건문이 많을 경우 테스트 설계가 어려워질 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;조건 커버리지 (Condition Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
복합 조건문(예: &amp;lt;code&amp;gt;if (A &amp;amp;&amp;amp; B)&amp;lt;/code&amp;gt;)에서 각 개별 조건(A, B)이 참과 거짓인 경우를 테스트했는지 확인한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;함수 커버리지 (Function Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
코드의 모든 함수가 실행되었는지를 확인한다.  &lt;br /&gt;
**장점: 모듈 수준에서 테스트 진행 상황을 빠르게 파악할 수 있다.  &lt;br /&gt;
**단점: 함수 내부의 세부 동작은 확인하지 못한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;결정 커버리지 (Dicision Coverage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
코드의 모든 Return statement가 실행되었는지를 측정한다. Dicision Coverage는 Function Coverage와 Branch Coverage를 동시에 측정한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;경로 커버리지 (Path Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
프로그램 내의 모든 가능한 실행 경로를 테스트한다.  &lt;br /&gt;
**장점: 테스트의 완전성이 매우 높다.  &lt;br /&gt;
**단점: 실행 경로가 많아질수록 계산량이 급격히 증가한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;루프 커버리지 (Loop Coverage)&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
루프 구조(&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;)에서 모든 반복 경로를 테스트한다.  &lt;br /&gt;
예를 들어, 루프가 0회, 1회, N회 반복되는 경우를 확인한다.&lt;br /&gt;
&lt;br /&gt;
이외에도, Linear Code Sequence and Jump (LCSAJ)커버리지, Entry/exit coverage, State coverage, Data-flow coverage와 같은 다양한 방법들로 Code Coverage를 측정할 수 있다. &lt;br /&gt;
&lt;br /&gt;
이 Coverage들중에서 &amp;#039;&amp;#039;&amp;#039;Statement coverage&amp;#039;&amp;#039;&amp;#039;(C1)과 &amp;#039;&amp;#039;&amp;#039;Branch or condition coverage&amp;#039;&amp;#039;&amp;#039;(C2)가 제일 많이 사용되는 Coverage로써, 대다수의 사용프로그램들은 C1혹은 C2커버지리를 바탕으로 Software analysis의 성능을 평가한다. C1과 C2를 같이 사용하면 대다수의 statement를 커버할 수 있어서, 자연스럽게 function, loop, path, state, control flow등등의 Coverage를 평가할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== 코드 커버리지의 장점 ==&lt;br /&gt;
* 테스트가 코드의 중요한 부분을 놓치지 않도록 도와준다.&lt;br /&gt;
* 디버깅 과정을 용이하게 한다.&lt;br /&gt;
* CI/CD 파이프라인에서 코드 커버리지 도구와 통합하여 자동으로 테스트의 효과를 평가할 수 있다.&lt;br /&gt;
* 충분히 테스트된 코드베이스는 유지보수가 용이하며, 안정성을 유지할 가능성이 높다.&lt;br /&gt;
&lt;br /&gt;
== 코드 커버리지의 한계 ==&lt;br /&gt;
* 높은 커버리지가 항상 높은 품질을 의미하지 않는다. 코드가 실행되었더라도 테스트가 코드의 정확한 동작을 검증했는지는 보장하지 않는다. 따라서, &amp;#039;&amp;#039;&amp;#039;커버리지 수치만을 목표로 삼는 것은 위험할 수 있으므로, 테스트 케이스의 품질과 함께 활용하는 것이 중요&amp;#039;&amp;#039;&amp;#039;하다.&lt;br /&gt;
* 높은 커버리지를 달성하려면 많은 테스트 케이스와 시간이 필요하다. 예를 들어서 Full path coverage은 달성하기 힘든 과제이다. 예를 들어서 n개의 decision이 있는 프로그램의 경우 &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt;개의 path를 측정해야 하기 때문에, 필요한 시간이 기하급수적으로 증가한다.&lt;br /&gt;
* 복잡한 프로그램에서는 모든 실행 경로를 테스트하는 것이 현실적으로 어렵다. 일례로, 만약 Full path coverage를 달성할 수 있다는 것은 [[Halting problem]]을 해결 가능하다는 말과 동치이다. 즉 현실적으로 프로그램의 모든 것을 측정하는 완전무결한 Code coverage는 존재할 수 없다.&lt;br /&gt;
&lt;br /&gt;
== 코드 커버리지 도구 ==&lt;br /&gt;
다양한 도구들이 코드 커버리지를 측정하기 위해 사용된다:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;coverage.py&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;JaCoCo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Cobertura&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;C/C++&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;gcov&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LCOV&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;Istanbul&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NYC&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CI/CD 도구&amp;#039;&amp;#039;&amp;#039;: Jenkins, GitLab, CircleCI 등에서 코드 커버리지를 지원한다.&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>