20160524

동시성 프로그램의 이해
hierarchy of SW coverage criteria
– 프로그램을 충분히 테스팅했음을 어떻게 보장할 수 있을까? 테스팅의 진행도를 어떻게 측정할 수 있을까? 이러한 문제를 해결하기 위해 coverage라는 개념이 필요하다. 프로그램에 있는 전체 branch 명령어 중에 몇 개를 테스팅했는지의 정도를 branch coverage라고 하자. 더 적은 수의 테스트 케이스로 branch coverage를 달성하는 테스팅 기법이 더 우수한 테스팅 기법이다.
– 모든 basic block을 테스트하는 것이 node coverage. 모든 branch를 테스트하는 것이 edge coverage. Complete Value Coverage는 가장 강력한 coverage. SW model checking을 하면 이 범위를 다룰 수 있다.

– Coverage metric을 사용하면 테스팅의 진행도를 확인할 수 있으며, 테스트의 질을 평가할 수 있다. 그리고 테스팅되지 않은 부분을 집중적으로 테스팅할 수 있다. Coverage metric이 높을수록 더 많은 버그를 찾을 수 있다. Branch coverage 100%라고 해서 모든 버그를 잡을 수 있는 것은 아니지만, coverage의 개념은 테스팅 기법 평가에 중요한 요인이 됨. Concurrent program을 테스팅하기 위한 concurrency code coverage metric들이 많이 연구되고 있다.
– Concurrency bug에는 data race, atomicity bug만 있는 것이 아님. 그 외에도 다양한 버그가 있고, coverage based testing을 사용하면 data race, atomicity bug 외의 버그도 확인할 수 있다.
coverage metric for software testing.PNG

1) The Impact of Concurrent Coverage Metrics on Testing Effectiveness
– Concurrent program을 위한 coverage에는 크게 synchronization coveragedata access coverage가 있다. Synchronization coverage는 여러 개의 쓰레드의 synchronization mechanism의 interleaving을 확인하고자 하는 coverage이다. Data access coverage는 여러 개의 쓰레드가 동시에 공유 데이터를 접근할 때의 interleaving을 확인하고자 하는 coverage이다.
– Synchronization coverage의 예로 sync-pair, data access coverage의 예로 statement-pair가 있다. Sync-pair coverage는 synchronization measure(lock)에 대한 coverage를 측정하고자 한다. 따라서 lock에 관련된 statement의 pair를 전체 탐색 영역으로 잡고, 이 중에 몇 개를 테스트하는지 평가한다. Statement-pair coverage는 data 접근에 대한 pair를 전체 탐색 영역으로 잡고, 이 중에 몇 개를 테스트하는지 평가한다.
code coverage for concurrent programs.PNG
– 한편, follows coverage는 같은 lock을 공유하는 여러 개의 쓰레드의 critical section의 조합을 확인한다. 각 쓰레드가 critical section을 들어가는 순서의 모든 조합을 확인하고자 하는 coverage이다.
concurrent coverage example - follows coverage.PNG
– Coverage와 fault finding의 연관성이 높은 것이 우수한 coverage이다. Coverage가 높아질 때 test suite 크기도 커지기 쉬움. Coverage가 커져서 fault finding이 늘어나는 것인지, test suite 크기가 커져서 fault finding이 늘어나는 것인지 확인해야 함. 순수하게 coverage가 높아져서 fault finding이 늘어나는 것이 유의미하다.

is concurrent coverage good for testing.PNG

research questions 1.PNG

– Coverage가 높도록 제어된 테스팅이 random 테스팅보다 더 높은 효과를 내는가? 아닐 수도 있음.

research question 2.PNG

concurrent coverage metric studied.PNG
– Single fault program은 coverage 증가에 따른 버그 발견 갯수를 측정하기에 적합하지 않다. 따라서 mutation based fault program을 사용했음. 실험 결과, suite size보다 coverage가 버그 발견 갯수와 더 큰 연관성을 갖는다.

lessons learned - concurrent coverage is good metric.PNG

Advertisements
Tagged with: , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,534 hits
%d bloggers like this: