Upload
-
View
1.560
Download
2
Embed Size (px)
Citation preview
더����������� ������������������ 나은����������� ������������������ sw����������� ������������������ 프로젝트를����������� ������������������ 위해
NEXT����������� ������������������ ����������� ������������������ |����������� ������������������ ����������� ������������������ 윤지수
오늘����������� ������������������ 드릴����������� ������������������ 좀����������� ������������������ 잼없는����������� ������������������ 이야기
품질검증����������� ������������������
협업����������� ������������������ ����������� ������������������
프로젝트����������� ������������������ 중����������� ������������������ 조심해야����������� ������������������ 할����������� ������������������ 것
품 질 검 증
소프트웨어����������� ������������������ 품질은����������� ������������������ 크게����������� ������������������ 두����������� ������������������ 가지.����������� ������������������
����������� ������������������ ����������� ������������������ SW����������� ������������������ 동작����������� ������������������ 테스트와����������� ������������������ 코드검사����������� ������������������
소프트웨어����������� ������������������ 품질은����������� ������������������ 크게����������� ������������������ 두����������� ������������������ 가지.����������� ������������������
����������� ������������������ ����������� ������������������ SW����������� ������������������ 동작����������� ������������������ 테스트와����������� ������������������ 코드검사����������� ������������������
SW����������� ������������������ 동작����������� ������������������ 테스트
SW����������� ������������������ 동작����������� ������������������ 테스트����������� ������������������ ?����������� ������������������ ����������� ������������������ (Quality����������� ������������������ Assurance)����������� ������������������ !관련해서����������� ������������������ 말씀드릴����������� ������������������ 3꼭지.
테스트����������� ������������������ 케이스
단계별����������� ������������������ 테스트
테스트����������� ������������������ 자동화
테스트케이스(TC)는����������� ������������������ ����������� ������������������
기획단계에서����������� ������������������ 나온����������� ������������������ 제품(서비스)의����������� ������������������ 요구사항을����������� ������������������ 기반으로����������� ������������������ 작성����������� ������������������ 개발완료����������� ������������������ 단계에서����������� ������������������ 제품����������� ������������������ 사용����������� ������������������ 환경별로����������� ������������������ 테스트(os,browser����������� ������������������ 등)����������� ������������������ !상세설계에서의����������� ������������������ 요구사항,����������� ������������������ 테스트케이스간의����������� ������������������ sync����������� ������������������ 유지가����������� ������������������ 꽤����������� ������������������ 중요.
SW����������� ������������������ 동작����������� ������������������ 테스트
테스트는����������� ������������������ 여러가지����������� ������������������ 단계별����������� ������������������ 테스트가����������� ������������������ 필요.����������� ������������������
개발자����������� ������������������ 테스트
����������� ������������������ test����������� ������������������ code기반의����������� ������������������ 테스트
Test����������� ������������������ engineer의����������� ������������������ 전문테스트
정상����������� ������������������ 상황����������� ������������������ 비정상����������� ������������������ 상황����������� ������������������ …⋯
기본����������� ������������������ TC����������� ������������������ 자가검진 unit����������� ������������������ test����������� ������������������ code����������� ������������������
SW����������� ������������������ 동작����������� ������������������ 테스트
테스트자동화����������� ������������������ ����������� ������������������ ����������� ������������������
개발자는����������� ������������������ unit����������� ������������������ test����������� ������������������ code를����������� ������������������ 작성,����������� ������������������ 자동화된����������� ������������������ 도구를����������� ������������������ 활용해서����������� ������������������ pass/fail로����������� ������������������ 확인.
import unittest #Include the pyUnit unittest framework import src2 !class destUm(unittest.TestCase): @classmethod def setUpClass(self): self.ddd = "eeee" print "classmethod" ! def setUp(self): print "start" ! def tearDown(self): print "tearDown" ! def test_number_1st(self): self.assertEqual(int(src2.get_circle_area(3)),28) self.assertEqual(int(src2.get_circle_area(3)),28) print self.ddd ! def test_number_2st(self): self.assertEqual(int(src2.get_circle_area('3')),28) ! def test_number_3st(self): self.assertEqual(int(src2.get_circle_area(3.0)),28) !
SW����������� ������������������ 동작����������� ������������������ 테스트
소프트웨어����������� ������������������ 품질은����������� ������������������ 크게����������� ������������������ 두����������� ������������������ 가지.����������� ������������������
����������� ������������������ ����������� ������������������ SW����������� ������������������ 동작����������� ������������������ 테스트와����������� ������������������ 코드검사����������� ������������������
코드����������� ������������������ 품질검사
코드����������� ������������������ 품질����������� ������������������ 검사.����������� ������������������
Code����������� ������������������ Inspection
코드����������� ������������������ 작성����������� ������������������ 규칙 코드����������� ������������������ 정적����������� ������������������ 검사
코드����������� ������������������ 리뷰복잡도����������� ������������������ 검사테스트코드����������� ������������������ ����������� ������������������ 커버리지
코드����������� ������������������ 품질검사
코딩����������� ������������������ 컨벤션은,����������� ������������������
!프로젝트����������� ������������������ 구성원간의����������� ������������������ 약속으로����������� ������������������ 프로그램의����������� ������������������ 동작과는����������� ������������������ 상관����������� ������������������ 없음.����������� ������������������ 유지보수,����������� ������������������ 가독성����������� ������������������ 측면에서����������� ������������������ 매우����������� ������������������ 중요하게����������� ������������������ 생각함.����������� ������������������ !관련����������� ������������������ 검사����������� ������������������ 도구가����������� ������������������ 있으나,����������� ������������������ 의미적인(semantic)부분은����������� ������������������ 결국����������� ������������������ 사람이����������� ������������������ 검사해야����������� ������������������ 함����������� ������������������ (비싼����������� ������������������ 비용..����������� ������������������ 꾸준히����������� ������������������ 하기����������� ������������������ 어려움)
코드����������� ������������������ 품질검사
코드����������� ������������������ 정적검사는,����������� ������������������
!프로그램이����������� ������������������ 잠재적인����������� ������������������ 어떤����������� ������������������ 오류를����������� ������������������ 포함하는지를����������� ������������������ 판단.����������� ������������������ ����������� ������������������ (memory,����������� ������������������ logic����������� ������������������ ,����������� ������������������ null값����������� ������������������ 참조����������� ������������������ 오류,����������� ������������������ security����������� ������������������ 오류����������� ������������������ 등)����������� ������������������ !언어별로����������� ������������������ 대부분����������� ������������������ 적당한����������� ������������������ 도구가����������� ������������������ 존재.����������� ������������������ ����������� ������������������
image : http://blog.codepen.io/2013/06/11/inline-error-messaging-for-js-hint/
코드����������� ������������������ 품질검사
복잡도����������� ������������������ 검사는,����������� ������������������
함수나����������� ������������������ 클래스����������� ������������������ 단위로����������� ������������������ LOC뿐����������� ������������������ 아니라����������� ������������������ 조건문등이����������� ������������������ 얼마나����������� ������������������ 중첩되어����������� ������������������ 있는지를����������� ������������������ 판단����������� ������������������
중복코드����������� ������������������ 검사는,����������� ������������������
함수나����������� ������������������ 클래스����������� ������������������ 단위로����������� ������������������ 얼마나����������� ������������������ 비슷한����������� ������������������ 코드가����������� ������������������ 존재하는지를����������� ������������������ 비교해서����������� ������������������ 보여줌.����������� ������������������
‘코드리뷰’를����������� ������������������ 하는����������� ������������������ 것이����������� ������������������ 가장����������� ������������������ 좋지만,����������� ������������������
비교적����������� ������������������ 비싼����������� ������������������ 비용이����������� ������������������ 들어가는����������� ������������������ ‘코드리뷰’를����������� ������������������ ����������� ������������������
자동화하여����������� ������������������ 대신할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 좋은����������� ������������������ 방법.
코드����������� ������������������ 품질검사
커버리지����������� ������������������ 검사는,����������� ������������������
실제����������� ������������������ 소스코드����������� ������������������ 대비����������� ������������������ 얼마나����������� ������������������ 많은����������� ������������������ 테스트코드가����������� ������������������ 존재하는지����������� ������������������ 판단.����������� ������������������ ����������� ������������������
코드����������� ������������������ 품질검사
품질검사..����������� ������������������ 좋은����������� ������������������ 도구,����������� ������������������ 좋은����������� ������������������ 방법����������� ������������������ ..����������� ������������������ 음����������� ������������������ 좋군����������� ������������������ !����������� ������������������ !!
자����������� ������������������ 이제����������� ������������������ 중요합니다.����������� ������������������
코드����������� ������������������ 품질검사
코드����������� ������������������ 검사의����������� ������������������ 문제점����������� ������������������ 중����������� ������������������ 하나는����������� ������������������ ,����������� ������������������ ����������� ������������������ 정량적인����������� ������������������ 데이터����������� ������������������ 결과를����������� ������������������ 어떻게����������� ������������������ 활용하는가?����������� ������������������ 이다.
!Q)����������� ������������������
평가의����������� ������������������ 대상����������� ������������������ ?����������� ������������������ KPI와����������� ������������������ 같은����������� ������������������ 목표의����������� ������������������ 대상����������� ������������������ ?����������� ������������������
!
A)목표에����������� ������������������ 포함하는����������� ������������������ 것도����������� ������������������ 가능하겠지만,����������� ������������������ ����������� ������������������
본질을����������� ������������������ 잊지말기.����������� ������������������
중요한����������� ������������������ 건����������� ������������������ 코드����������� ������������������ 품질을����������� ������������������ 꾸준히����������� ������������������ 유지하려는����������� ������������������ 의지임.
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 좋은����������� ������������������ 코드의����������� ������������������ 품질이����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 제품과����������� ������������������ 서비스의����������� ������������������ 성공일까?����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������
!
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 제품과����������� ������������������ 서비스의����������� ������������������ 기본적인����������� ������������������ 품질을����������� ������������������ 보장����������� ������������������
좀����������� ������������������ 느긋하게����������� ������������������ 장기적인����������� ������������������ 안목필요
아무튼..����������� ������������������ 개발자들은����������� ������������������ 품질관리..이런����������� ������������������ 거����������� ������������������ 싫어한다느거..����������� ������������������ !
그래서,,����������� ������������������ !
자발적이거나,����������� ������������������ 공감대가����������� ������������������ 충분해야����������� ������������������ 함.����������� ������������������ 구성원간의����������� ������������������ 충분한����������� ������������������ 학습이����������� ������������������ 필요.����������� ������������������ 점진적인����������� ������������������ 확대����������� ������������������ :����������� ������������������ 쉽고����������� ������������������ 가능한����������� ������������������ 것부터����������� ������������������ 시작하기.����������� ������������������
!
!
우아하게����������� ������������������ 품질관리����������� ������������������ 할����������� ������������������ 수는����������� ������������������ 없겠지?����������� ������������������
아무튼����������� ������������������ 이런����������� ������������������ 품질관리가����������� ������������������ 매우����������� ������������������ 번거롭고����������� ������������������ 귀찮은����������� ������������������ 일.����������� ������������������ ����������� ������������������ 빌드����������� ������������������ 단계에서����������� ������������������ 자동화는����������� ������������������ 필수!����������� ������������������ CI����������� ������������������ (Continuous����������� ������������������ Itegration)����������� ������������������ 도구를����������� ������������������ 활용����������� ������������������
이미지출처:http://www.ranorex.com/
CI도구는����������� ������������������ Jenkins와����������� ������������������ ����������� ������������������ Hudson����������� ������������������ 등이����������� ������������������ 있으며,����������� ������������������ ����������� ������������������ 간단한����������� ������������������ 설정과정을����������� ������������������ 거치면����������� ������������������ 되고,����������� ������������������ ����������� ������������������ 다양한����������� ������������������ 시각적인����������� ������������������ 정보를����������� ������������������ 제공해����������� ������������������ 줌.����������� ������������������
CI����������� ������������������ 로����������� ������������������ 좀더����������� ������������������ 우아하게����������� ������������������ 할����������� ������������������ 수는����������� ������������������ 있음.����������� ������������������ !하지만����������� ������������������ 구축한다고����������� ������������������ 다����������� ������������������ 되는게����������� ������������������ 아니니까����������� ������������������ ����������� ������������������ 그럼에도����������� ������������������ 중요한건,����������� ������������������ !그����������� ������������������ 의미를����������� ������������������ 계속����������� ������������������ 공유하고����������� ������������������ 공감해야����������� ������������������
����������� ������������������ 지속성있는����������� ������������������ 지속적����������� ������������������ 통합이����������� ������������������ 가능함.����������� ������������������
협 업
이런..죄송합니다����������� ������������������ 협업에����������� ������������������ 별다른����������� ������������������ 해법도����������� ������������������ 가지고����������� ������������������ 있지����������� ������������������ 않습니다(__)����������� ������������������
!
오늘은����������� ������������������ 제����������� ������������������ 경험을����������� ������������������ 전달..
다양한����������� ������������������ 직군
전략����������� ������������������ ����������� ������������������
기획����������� ������������������
디자이너����������� ������������������
UX����������� ������������������
html/css����������� ������������������ 개발자����������� ������������������
javascript����������� ������������������ 개발자����������� ������������������
웹����������� ������������������ 서버����������� ������������������ 프로그래밍����������� ������������������ (java,����������� ������������������ php..)����������� ������������������
Tester����������� ������������������ ����������� ������������������
PM����������� ������������������
각종����������� ������������������ 팀장...실장....본부장
전략회의����������� ������������������
요구사항����������� ������������������ 도출을위한����������� ������������������ 브레인스토밍����������� ������������������
상세설계����������� ������������������ 리뷰����������� ������������������
디자인����������� ������������������ 리뷰����������� ������������������
개발자간����������� ������������������ 협의����������� ������������������ (서버-클라이언트)����������� ������������������
개발진행����������� ������������������ 검토����������� ������������������ (정기미팅)����������� ������������������
최종개발완료����������� ������������������ ����������� ������������������
테스트����������� ������������������
출시점검����������� ������������������ ����������� ������������������
회고
엄청난����������� ������������������ 협업����������� ������������������ 미팅
지나친����������� ������������������ 분업화����������� ������������������ 및����������� ������������������ 전문화로����������� ������������������ 바로����������� ������������������ 옆����������� ������������������ 기술을����������� ������������������ 이해하지����������� ������������������ 않으려하는����������� ������������������ 문제점이����������� ������������������ 생김.����������� ������������������
결국����������� ������������������ 각각의����������� ������������������ 기능은����������� ������������������ 좋지만����������� ������������������ 전체의����������� ������������������ 모습은����������� ������������������ 좋지����������� ������������������ 않은����������� ������������������ 결과가����������� ������������������ 나옴.����������� ������������������
!그래서����������� ������������������ ����������� ������������������
서비스별����������� ������������������ 조직으로����������� ������������������ 팀이����������� ������������������ 합쳐지기도����������� ������������������ 하고..(A팀,B팀,����������� ������������������ A2팀,����������� ������������������ 솔루션팀����������� ������������������ 등)����������� ������������������
어떤����������� ������������������ 협업����������� ������������������ 방법들이����������� ������������������ 있을까?����������� ������������������
서로간의����������� ������������������ 기술에����������� ������������������ 대한����������� ������������������ 이해를����������� ������������������ 하려는����������� ������������������ 노력����������� ������������������ ex.����������� ������������������ 개발자가����������� ������������������ 바라보는����������� ������������������ 디자인의����������� ������������������ 이해����������� ������������������ 라는����������� ������������������ 세미나를����������� ������������������ 열기도..
비슷한����������� ������������������ 직군간의����������� ������������������ 정보����������� ������������������ 교류는����������� ������������������ 이메일이����������� ������������������ 가장����������� ������������������ 효율적����������� ������������������ 그리고����������� ������������������ 정보를����������� ������������������ 계속����������� ������������������ 아카이빙
소규모의����������� ������������������ 정기적인����������� ������������������ 세미나를����������� ������������������ 통한����������� ������������������ 기술공유
무엇보다����������� ������������������ 얼굴보며����������� ������������������ 잦은����������� ������������������ 소통
문제점을����������� ������������������ 찾아����������� ������������������ 추척관리하는����������� ������������������ 버그����������� ������������������ 트랙킹����������� ������������������ 시스템은����������� ������������������ 매우����������� ������������������ 중요����������� ������������������ !버그를����������� ������������������ 등록����������� ������������������ 하고,����������� ������������������
버그를����������� ������������������ 확인해서����������� ������������������ 우선순위를����������� ������������������ 조정하고,����������� ������������������
담당자를����������� ������������������ 할당하고����������� ������������������
담당자는����������� ������������������ 수정하고,����������� ������������������
때론����������� ������������������ 여러사람이����������� ������������������ 커뮤니케이션을����������� ������������������ 하며(댓글)����������� ������������������
해결된����������� ������������������ 버그를����������� ������������������ 종료����������� ������������������ 처리하고,����������� ������������������ ����������� ������������������ 미해결된����������� ������������������ 버그를����������� ������������������ 계속����������� ������������������ 남겨두고.����������� ������������������ !
프 로 젝 트 ����������� ������������������ 중 ����������� ������������������ 조 심 해 야 ����������� ������������������ 할 ����������� ������������������ 것
1년짜리����������� ������������������ 프로젝트?����������� ������������������
목적을����������� ������������������ 잃어버리는����������� ������������������ 구성원이����������� ������������������ 다수..����������� ������������������ 지속적으로����������� ������������������ 목표를����������� ������������������ 공유����������� ������������������ 그리고����������� ������������������ 점검
중간관리자의����������� ������������������ 실수..����������� ������������������ !
대부분의����������� ������������������ 중간관리자는����������� ������������������ 진짜����������� ������������������ 문제를����������� ������������������ 알고����������� ������������������ 있음����������� ������������������ 문제를����������� ������������������ 살포시����������� ������������������ 묻고,,����������� ������������������
사실을����������� ������������������ 보고하지����������� ������������������ 않는����������� ������������������ 데서����������� ������������������ 큰����������� ������������������ 문제가����������� ������������������ 생기기도����������� ������������������ 함..
다시����������� ������������������ 하지����������� ������������������ 않는����������� ������������������ 일정����������� ������������������ 재추정����������� ������������������ !
일정은����������� ������������������ 맞추는게����������� ������������������ 아니고����������� ������������������ 계속����������� ������������������ 맞추어����������� ������������������ 나가는����������� ������������������ 것����������� ������������������
따라서����������� ������������������ 지속적으로����������� ������������������ 일정을����������� ������������������ 맞추는����������� ������������������ 분위기가����������� ������������������ 필요.����������� ������������������ ����������� ������������������ ����������� ������������������
우선순위의����������� ������������������ 착각����������� ������������������ ����������� ������������������ ‘새로운����������� ������������������ 방법론����������� ������������������ 그리고����������� ������������������ API,����������� ������������������
서둘러����������� ������������������ 적용합시다����������� ������������������ !!’����������� ������������������ ����������� ������������������
최신기술,����������� ������������������ 그런것도����������� ������������������ 좀����������� ������������������ 써야����������� ������������������ 재미지지만����������� ������������������
그게����������� ������������������ 우선해야����������� ������������������ 하는건지도����������� ������������������ 고민필요.
애자일,����������� ������������������ 스크럼,����������� ������������������ XP..����������� ������������������ 의도를����������� ������������������ 모른����������� ������������������ 채����������� ������������������ 진행중인����������� ������������������ 방법론과����������� ������������������ 프로세스..
방법론은,����������� ������������������ !!핵심은����������� ������������������ 예측을����������� ������������������ 줄이는����������� ������������������ 것����������� ������������������
잦은����������� ������������������ 일정����������� ������������������ 재추정����������� ������������������ 계획,����������� ������������������ 데모,����������� ������������������ 회고..����������� ������������������ 이런거����������� ������������������ 중요.����������� ������������������ 데모와����������� ������������������ 잦은����������� ������������������ 커뮤니케이션을����������� ������������������ 통해����������� ������������������ 요구사항이����������� ������������������ 맞는지����������� ������������������ 자주����������� ������������������ 확인����������� ������������������
방법론����������� ������������������ 그자체를����������� ������������������ 익히기����������� ������������������ 전에����������� ������������������ 방법론이����������� ������������������ 왜����������� ������������������ 필요한지에����������� ������������������ 대한����������� ������������������ 공감대����������� ������������������ 형성.
그리고����������� ������������������ 마지막으로����������� ������������������ ����������� ������������������
개발자들����������� ������������������ 쪼지����������� ������������������ 않기����������� ������������������ ����������� ������������������ :����������� ������������������ )
End ;-D