C 프로그램을 위한 동시성 커버리지 측정 기법 송지영 SWTV KAIST.

Slides:



Advertisements
Similar presentations
S/W Testing introduction 작성자 : 강정훈 작성일 :
Advertisements

폭력. 폭력이란 무엇인가 우상의 눈물 물리적인 폭력 ( 최기표 ) VS 지능적인 폭력 ( 임형우, 담임선생님 )
호텔 수행 평가 호텔 홍보 자료 이세훈. 해운대 그랜드 호텔 아름다운 해변과 세계적인 온천이 있는 관광명소해 운대에 위치한 해운대 그랜드 호텔은 품격 있는 호 텔 속에 여유 있는 레저, 스포츠 시설이 어우러진 특 일급 호텔입니다. 총 3 만 1 천 여 평의.
1 박 2 일 !!! 인천마장초등학교 유수아. 1 박 2 일 멤버 인기순 위 1 위 이승기 2 위 엄태웅 3 위 은지원 4 위 김종민, 이수근 ※인터넷에서 본것이기 때문에 사람에따라 서 다를 수 있다. ※
Ⅰ. 현대자동차의 나이 & 성별에 따른 시장 세분화 전략 1. 세분화의 정의 2. 현대자동차의 제품위치 3. 현대자동차의 연령별 세분화 전략 설명 4. 설문조사 결과 & 관계자 인터뷰 5. 현대자동차의 성별에 따른 세분화 전략 6. 설문조사 결과 & 관계자 인터뷰 Ⅱ.
2014학년도 대입전형준비 에듀넷 활용하기 세마고등학교 진로상담부.
출장보고서 (복주창고) 1. 출장 개요 2. Bar code system 3. Issue
정보 사회의 역기 능과 대처 01 인터넷 중독, 어떻게 예방할까
1. 과학중점학교 어떤 학교인가? 1. 과학중점학교 어떤 학교인가? 일반 인문계고등학교에서 인문학적 소양과 더불어
석관중앙교회 5남전도회 석 관 중 앙 교 회 회원 소식 통권 05-04호 발행일 : 2005년 04월 회 장 : 장진호 집사
지역사회복지론 1조. 요양보호시설에 대해서 황성국 임재형 이동영
소프트웨어 공학 Lecture #9: 테스팅 최은만 저 6차 개정판 1.
변비 재활전문센터 재활 간호사 김은화.
Project #2-2. Pintos User Program
영랑호리조트 제휴안내 소개서 영랑호리조트 : 강원도 속초시 금호동 600-7
제 4 장 프로세스 Section 1 프로세스의 개념 Section 2 프로세스 스케줄링
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
Q & A (사실상 혼인·이혼) Q. 사실상 혼인·이혼 관계를 어떻게 처리해야 하나요?   사실 혼인·이혼은 부부 모두 동의 여부를 확인하고, 자녀, 이·통·반장으로부터 「사실(이)혼 확인서」를 징구해야 합니다. 만약 어느 한쪽이 동의하지 않는 경우는.
제 9 장 국제수지의 균형.
아토피 치료제 특허맵
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
메탄 하이드레이트 활용 방법과 기술 환경공학과 천대길.
I 문학의 개념과 역할 1. 문학의 개념 (1) 언어 예술로서의 문학 (2) 소통 활동으로서의 문학
자료수집과 설문지 나 백주 건양대학교 보건복지대학원.
멀티 디바이스 컨텐츠 제공을 위한 안드로이드 동기화 시스템
노무관리 교육 10분만 시간 내십시오 복잡하게 보이는 노무관리 완벽하게 이해시켜 드립니다. 1.
미디어시스템프로젝트1 (졸업프로젝트).
4. 목적론적 윤리와 의무론적 윤리 01. 경험주의와 이성주의 01. 경험주의와 이성주의 02. 결과론적 윤리와 공리주의
[ 단원 08 ] 예외처리와 스레드.
테 스 트 (Testing) - Software Engineering -.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
‘新조리 시스템’ B/M 일본병원급식 연수 참가 앙청의 건
Java의 정석 제 12 장 쓰레드(thread) Java 정석 남궁성 강의
운영체제 허상복 컴퓨터시스템 연구실
합리적.동태적 정원모형 설계.
학부모 설명회 학부모 설명회를 시작하겠습니다. 먼저, 설명회를 찾아주신 여러분께 감사의 말씀을 드립니다. 금일 강의를 하게 된 저는 우공비, 쎈이라는 교재를 만드는 좋은책신사고 본사 교육팀에서 근무하고 있는 이영호입니다. 강의는 총 1시간 정도 소요될 예정이며, 강의 종료.
DataScience Lab. 박사과정 김희찬 (월)
SPSS 소개 서울대학교 보건대학원 김 호.
『서울시민 복지기준』설정 청책워크숍 서울시민복지기준설정 추진위원회.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
개항기 조선과 동아시아 박 범 한국역사입문Ⅱ.
강의 소개, 자료구조의 개념, SW 개발과 자료구조
활동 다이어그램(Activity Diagram)
ERP회계정보관리사 2011년 9월 개강 국립안동대학교 특강 - 장현주 ERP회계정보관리사.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
[CPA340] Algorithms and Practice Youn-Hee Han
8 국제수지의 균형.
도형의 닮음 Ⅵ-1 도형의 닮음 (1) 닮음과 닮은 도형 닮음
[ 강남구 청담동 “이동수에프엔지” ].
Operating System Multiple Access Chatting Program using Multithread
대구의 부도심 대구의 주요축 동대구 부도심 4조 강민석 / 박성균 / 최은지/ 황재현/김예지.
동기화 문제 디버깅하기 사람이 컴퓨터 보다 아름다워♪ Advanced Windows Debugging Chapter.10
C 코드최적화 세명대학교 AI연구실 양승조.
여행사 오픈 절차 순서 목 차 여행사 설립 기본 절차 여행사 종류별 자본금 규모 여행 업 창업과 제한 조건
마음의 성전이 더 아름다운 조촌교회.
1.비 사업용(자가용 및 관용) 차 종 적 용 상 의 구 분 승합 자동차 (버스) 1 종
1. 복리후생비 복리후생비란? ✔ 법인이 임원 또는 사용인(파견근로자 포함)을 위하여 지출한 비용
사도행전 13장 22절 말씀 –아멘 다 윗 을 왕 으 로 세 우 시 고 증 언 하 여 이 르 시 되 내 가 이 새 의 아 들
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
천국 가는 길 천국 가는 길 ♧ 천국 가는 길 ♧ 1. 죄와 사망(지옥) 1) 사람의 3가지 공통점 - 죄인, 죽음, 심판
경찰행정과 세미나 결과를 공개해야한다. VS 비공개로 해야한다. 경찰의 근무성적평정 제도.
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
Windows System Programming
지역복지실천을 위한 이론적 기초 사회체계이론과 생태이론.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
DataScience Lab. 박사과정 김희찬 (화)
8 국제수지의 균형.
삶을 풍요롭게 만드는 의사소통.
Presentation transcript:

C 프로그램을 위한 동시성 커버리지 측정 기법 송지영 SWTV KAIST

동시성 VS 순차 커버리지 Test suite A Test suite B 1 : 2 : … 20 : 1 : 2 : … 20: 60% 80% 테스팅에서 커버리지는 테스트의 질을 평가하는데 쓰입니다. 테스트 스윗은 테스트케이스의 묶음이고 여기 두개의 테스트스윗이 있습니다. 각각 60, 80%를 커버한다면 우리는 더 많은 코드를 커버하여 버그를 잡을 가능성을 높인 테스트 스윗 B를 선택합니다 순차 프로그램과 다르게 동시성 프로그램은 스레드 스케줄링에 따라 결과가 다양한 output을 가짐 그러므로, 수행되는 코드뿐 아니라 스레드 인터리브도 커버리지 요구사항으로 고려해야 함 2014-07-30 C 프로그램을 위한 동시성 커버리지 측정 기법

Motivation example -5? 코드수행만을 요구사항으로 간주하면 100% 커버리지를 달성하여도 bug를 찾지 못하는 경우가 발생 다음 2 테스트케이스로 분기 커버리지 100% 달성 Tc1: balance 10, withdraw(5) Tc2: balance 5, withdraw(10) 1: void* withdraw(long x){ 2: if(balance >= x){ 3: t = balance; 4: balance = balance-x ; 5: } 6: } 예제를 들어 설명하겠습니다. 코드수행~. 이 예제는 계좌에서 돈을 인출하는 프로그램입니다 잔고가 10, 5를 인출하는 test case1 에서는 if branch를 커버하고 잔고가 5, 10을 인출하는 test case 2에서는 else 브랜치를 커버합니다. 이렇게 코드 커버리지 100%를 달성했다고 버그가 없을까요? 절대 그렇지 않습니다. 동시성 프로그램에서 이와같은 스레드 스케줄링에서는 에러없이 수행되지만, 이런 스레드 인터리빙이 있는 스케줄에서는 10을 인출하고 5를 인출합니다 그러면 잔고가 -5가 되는 버그가 발생합니다. Initially, balance:10 -t1: withdraw(10) – 2 if(balance>=10) 3 t = balance 4 balance=t–10 -t2: withdraw(5) – 2 if(balance>=5) 4 balance=t–5 Initially, balance:10 -t1: withdraw(10) – 2 if(balance>=10) 3 t = balance 4 balance=t–10 -t2: withdraw(5) – 2 if(balance>=5) -5? 스레드 인터리브도 커버리지 요구사항으로 고려해야 함 2014-07-30 C 프로그램을 위한 동시성 커버리지 측정 기법

동시성 커버리지 측정기법 Synchronization coverage: synchronization-pair Lock으로 각 스레드가 동기화되는 것을 확인하기 위해 사용 Data access coverage: def-use 공유변수 값을 정의하고 사용하는 위치를 확인하기 위해 사용 동시성 커버리지 측정기법으로는 크게 두 가지가 있습니다. 첫번째로는 Synchronization coverage로 pthread_mutex_lock이나 cond_wait, signal과 같이 lock으로 각 스레드가 동기화 되는 것을 확인하기 위해 사용합니다. data access coverage~ 대표적으로 synchronization coverage에 대해 설명해드리겠습니다. 2014-07-30 C 프로그램을 위한 동시성 커버리지 측정 기법

Synchronization coverage Synchronization-pair: - 스레드 인터리브가 발생할 때 lock으로 공유 변수를 동기화하기 위해 사용 - coverage requirement는 code location 쌍 < 𝒍 𝟏 , 𝒍 𝟐 > 이다. - 𝑙1과 𝑙2 는 같은 lock 을 가진 lock statement이며, 𝑙2는 𝑙1 의 lock이 unlock된 후 최초로 같은 lock 을 hold하는 구문이다. Coverage requirement는 code location 쌍입니다. 11번 라인에서 lock m 을 잡고 21번라인에서 최초로 같은 lock을 잡게 되면 우리는 11,21쌍이 커버되었다고 합니다. 마찬가지로 21,23쌍이 커버가 됨을 알 수 있습니다. 커버되지 않은 쌍으로는 21,11 23,11이 있는데, 커버리지를 높이기 위해서 스레드 스케줄링을 달리한 테스트 케이스를 만들 수 있습니다. 이와같은 스레드 스케줄링에서는 21,11을 커버할수 있고 이런 스케줄링은 23,11을 커버할 수 있습니다. --Thread1: foo()-- --Thread2: bar()-- 11:pthread_mutex_lock(m); 12:pthread_mutex_unlock(m); 23:pthread_mutex_lock(m); 24:pthread_mutex_unlock(m); 21:pthread_mutex_lock(m); 22:pthread_mutex_unlock(m); --Thread1: foo()-- --Thread2: bar()-- 11:pthread_mutex_lock(m); 12:pthread_mutex_unlock(m); 23:pthread_mutex_lock(m); 24:pthread_mutex_unlock(m); 21:pthread_mutex_lock(m); 23:pthread_mutex_unlock(m); --Thread1: foo()-- --Thread2: bar()-- 11:pthread_mutex_lock(m); 12:pthread_mutex_unlock(m); 23:pthread_mutex_lock(m); 24:pthread_mutex_unlock(m); 21:pthread_mutex_lock(m); 23:pthread_mutex_unlock(m); Covered SPs: (11, 21), (21, 23) (11, 21) is covered Uncovered SPs: (21, 11), (23, 11) (21, 23) is covered 2014-07-30 C 프로그램을 위한 동시성 커버리지 측정 기법

Future work C/C++ 타겟 코드의 정적 분석와 동적 분석을 통해 발생 가능한 커버리지 condition 찾기 공유변수 찾기, lock의 포인터 변수 찾기 Pbzip2, pfscan 프로그램에 대해 테스트 수행 예정 앞서 살펴본 바와 같이 cover한 쌍과 uncover한 쌍의 전체 집합을 알기 위해서는 타겟코드의 정적분석과 동적 분석을 통해 가능합니다. 2014-07-30 C 프로그램을 위한 동시성 커버리지 측정 기법