Technical Note/TEST AUTOMATION

소프트웨어 품질 

크게 2가지 : Functional (소프트웨어가 무슨 what 동작을 하느냐) / nonFunctional (어떻게 how 동작을 하느냐)

non functional : 코드 품질 관리로 가능

품질 관리 하면 생각나는 것은 : 가장 많이 하는것은 코드리뷰 

코드 품질 관리는 개발자 부터 시작하는것이 맞다 

현재 코드리뷰의 목적을 잘 달성하고 있는가? 

코드리뷰는 바로바로 해야 하는데.. 현실에서는 쉽지 않다

이유는 리뷰할 시간이 없다  리뷰하는 사람이 해주겠지라고 생각함

잘 돌아가면 그냥 릴리즈해

왜 이렇게 제대로 되지 않는가? 

눈에 보이지 않는 코드 품질을 보여줘야 한다.

그럼 실제로 눈으로 보이지 않는 코드를 그럼 관리해보자 그리고 품질을 높혀보자



그 툴로 대표적으로 sonarqube가 있는데…

기존의 정적분석 도구는 시간에 따른 버그의 추이 여러 프로젝트의 결과의 비교를 보여주지 못한다. 단발성으로만 결과를 보여주는데 이것은 플랫폼 즉, 결과 관리, 추적, 비교 등등이 가능하기때문에 플랫폼이라고 부를수있다. 

소나큐브는 프로파일을 통해서 일관된 품질 관리 가능

기준에 만족하지 못하면 그에대한 노티 및 다시 개발을 요청 등이 가능 : Quality gate

개발 언어의 장벽을 많이 해결해줌

소나큐브가 코드 품질을 관리하는 기준으로 7가지가 있다

이런 요소들을 각 소스파일이나 프로젝트에 퀄리티 프로파일이라는 룰 셋을 만들어서 적용할수있다.

쿼트 gate를 통해서 품질 관리 종료등을 관리할수있다.

find bug 등의 결과와 같은 결과를 얻을수있음 (같은 소스로 구현됨)

플러그인을 통한 기능 확장 가능

metrics : 품질결과를 수치적으로 관리

developer tools : 플러그인을 개발할수있는

gevernance

languages : 한국어는 없음

localization : 

visualization / reportin :  품질 결과 시각화

developer’s seven deadly sins: 7가지 실수 항목에 맵핑시켜서 관리

1. 적절하지 않은 아키텍처ㅗ아 설계 

코드 복잡도를 계산하는 매트릭스중 하나 : cyclometric complicity

2. 중복코드 관리 

3. 단위테스트 : tdd 개념 테스트 코드를 먼저 만들어야 한다…는 생각에서 관리

4. 코드 복잡도 관리 : 

5.  잠재적인 발생 가능성 있는 버그 : 코딩 룰 

드릴 다운 피처 : 파일 단위단위에 대한 검증 가능 

공수산정 : 코드 품질을 상향시키는데 걸리는 공수 계싼가능 커스터마이징 가능

6. 널리 알려진 코딩 표준 : 25 개 정도의 툴과 연동이 가능

7. 주석 관리 : public class에 대한 주석 관리

코드 품질의 위의 7가지 항목으로 봐야 한다. 


더 집중화된 품질을 관리하기 위해서는 

품질 프로파일

한줄 하줄이 코딩 룰 —> 각 프로젝트에 맞게 잘 조합해서 사용가능 

프로파일이라고 하는 룰 셋을 만듬

threadhold 값을 가지고 통화했는지 종료 여부 판단가능

현재 좋은 상태로 가는지 나쁜상태로 가는지 확인가능 : 트렌드 정보를 통해



지금부터는 소나큐브를 실제로 돌려보자

ci로 사용되는 jenkins 와 어떻게 통합되는지


먼저 소스 

jenkins를 통해서 코드 빌드시 소나를 통해 코드 리뷰


빌드시작 —> 단위테스트 후 빌드시 소나큐브를 부름 —> 빌드 하면서 바로 코드 품질 확인 —>   그 결과는 소나 서버에 떨어짐 —> 정적분석이 완료되면 빌드 성공


코드 프로파일 = 룰 

심각도도 조정가능 

설명 및 해당 룰을 위반하지 않게 하려면 어떻게 코드를 작성해야 하는지 가이드


플러그인 센터를 통해서 플러그인 관리 추가 가능



중점 : 지속적인 통합환경 활용 /  drill-dow 




상용도구와 오픈소스 도구 

Fauls positive/ nagative


정적분석 프로세스의 어려움 

—> 개잘자의 능력을 판단하는 문화는 피해야 함

—> 사람이 항상 개입해야 한다.