SlideShare a Scribd company logo
Python으로 네트워크 장비 

테스트 자동화 하기
Automating Network Device Test with Python
구동수, DASAN Network Solutions
안녕하세요 구동수 입니다!
‣ DASAN Network Solutions
‣ Research Engineer / TSE(검증소프트웨어개발실)
‣ 소프트웨어 품질, 테스트, 자동화
‣ 28살, 최선을 다해 살찌(빼)는 중(TMI)
2
“어떻게 하면 네트워크 장비를 더 잘 검증 할 수 있을까?”
무엇을, 왜 발표하나요?
‣ Python을 “네트워크 장비 테스트 자동화”에 사용하고 있습니다.
‣ 약 1년여간 네트워크 장비 테스트 자동화 프레임워크와 테스트 케이스를 만들면서 겪었던 이
야기를 여러분들과 공유하고 싶습니다.

‣ “우리 같은 사람들도 있어요!”
‣ PyCon 2017
‣ Dive Into Diversity!
3
대상 청중
‣ 자동화를 도입하고 계신 or 도입을 생각하고 계신 CLI 기반 소프트웨어 테스트 엔지니어 분들
‣ Python을 통한 네트워크 장비 테스트 방법이 궁금하신 분들
‣ 아직 Python이 무서운 수동 테스트 엔지니어 분들
‣ 쟤도 했다는데?🤔
4
Network Device Test
MANUALLY / WITH PYTHON
6
‣ 어떤 고민이 있었나요?
‣ Network Device Test를 자동화 하기 위해 필요한 부품들을 찾는 것
7
“장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
8
“장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
Device Under Test(DUT) Control
MODELING
10
‣ 어떤 고민이 있었나요?
‣ 동작은 같지만 COMMAND 가 달라요.
11
Test
TEARDOWN_COMMONTEARDOWN_TESTTESTSETUP_TEST
TEST CASE 구조 정의
13
‣ 어떤 고민이 있었나요?
‣ 테스트 절차 구성 및 각 절차에 대해 역할 부여
SETUP_COMMON
‣ SETUP_COMMON
‣ 시험 장비 확보
‣ 계측기 준비
‣ 케이블링
‣ 시험을 위한 물리적 환경 구성
‣ SETUP_TEST
‣ 시험을 위한 논리적인 환경 구성
‣ 테스트 데이터 준비
‣ 시험을 위한 장비 설정
‣ TEST
‣ 시험 목적의 장비 설정 및 기능 확인
‣ TEARDOWN_TEST
‣ 논리적인 환경 구성 해제
‣ TEARDOWN_COMMON
‣ 물리적인 환경 구성 해제
14
SPEC 정의
15
‣ 어떤 고민이 있었나요?
‣ 테스트가 실행 되기 위한 조건(특정 기능 지원 여부, 물리적 포트 개수 등)
결과 확인 - OUTPUT PARSING
16
‣ 어떤 고민이 있었나요?
‣ DUT가 의도 된 동작을 했는지 확인하기 위해서는 DUT로 부터 출력 된 결과(Raw Text)를 정제 해야 하는 과정이 필요했습니다.
“BGP TABLE VERSION IS 2, LOCAL ROUTER ID IS 20.20.20.20RNSTATUS CODES: S SUPPRESSED, D DAMPED, H HISTORY, *
VALID, > BEST, I - INTERNAL, L - LABELEDRN S STALERNORIGIN CODES: I - IGP, E - EGP, ? - INCOMPLETERNRN
NETWORK NEXT HOP METRIC LOCPRF TWEIGHT PATHRN*> 22.22.22.0/24 21.21.21.2 0 100
0 2837 IRN*> 25.25.25.0/24 21.21.21.2 0 100 0 2837 IRNRNTOTAL NUMBER OF PREFIXES
2RN”
한줄짜리 String
17
DUT
DUT
CONTROLLER
TC
send_command(“show XXX”)
“sdfkjap#$%#@%!$%!^”
{“parsed”: “data”}
pyparsing, textfsm
TEST PROCEDURE 와 TEST CASE 형상 관리
18
‣ 어떤 고민이 있었나요?
‣ 절차서 따로, 테스트 케이스가 각각 다른 파일로 존재 하는 게 싫었어요.
Test Result
TEST RESULT 관리
20
‣ 어떤 고민이 있었나요?
‣ Test Report도 자동으로 만들고 싶었습니다(Log, Excel, Traceback message).
openpyxl, pygsheet
TEST RESULT 관리
21
‣ 어떤 고민이 있었나요?
‣ 쌓여가는 결과들, 한 곳에 몰아 넣고 시각화 하고 분석 할 수 있게 만들자!
python-logstash
Test Resource Management
RESOURCE MANAGEMENT
23
‣ 어떤 고민이 있었나요?
‣ 장비 접속에 필요한 정보, 테스트에서 사용 되는 연결 관계 등을 한곳에서 관리하고 싶었어요.
‣ 등록 되어 있는 장비를 예약하고, 반납하고
실행 동영상
덩달아 얻어진 것들
‣ 개발과 더 착 달라붙을 수 있었어요.
‣ 개발이 완료 될때까지 기다린 후, 테스트 하지 않고 먼저 테스트 코드를 만들어 놓고 개발자가
실행할 수 있게 했어요.
‣ 개인차에 따른 테스트 수준이 맞춰 졌어요.
‣ 코드에 누군가의 테스트 노하우가 담길 수 있게 되었어요.
25
어렵게 생각하지 마세요
‣ 너무 어려운 부분은 수동 테스트로 하다가 마음의 평화를 찾고 다시 도전해보세요!
‣ 너무 무섭게 생각 하지 않으셔도 됩니다.

‣ 너무너무 귀찮고 사소한 부분부터 자동화를 시작해보세요.
‣ 어떤 부품이 필요할까?
‣ 그 부분들을 연결 시키다보면 중요한 곳에 시간을 더 사용할 수 있습니다.
26
못다한 이야기는...
‣ Open Space에서 뵐게요!
‣ “Python 자동화 엔지니어들의 대화”로 오세요!

‣ 더 많은 이야기들을 공유하고 싶습니다.
‣ 테스트 자동화와 관련 된 더 많은 이야기
27
#동료를 구합니다$
대한민국 네트워크 솔루션 1위 기업
다산네트웍솔루션즈와 함께 새로운 세상을 만들어 나가고 싶은 분들을 찾습니다!
#검증 소프트웨어 개발실🤖 #언제나 두 팔 벌려 환영🙌#너 내 동료가 되라🤝
질문 받습니다
‣ 감사합니다 😁
29

More Related Content

Similar to [pycon korea 2018] Automating network device test with python - dongsoo.koo

KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
Sungmin Kim
 
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
DaeHyun Sung
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
정주 김
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practicesHyunil Shin
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
SangIn Choung
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
Mijeong Park
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
KH Park (박경훈)
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
Kwangsung Ha
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
도형 임
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
KTH, 케이티하이텔
 
MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)
OracleMySQL
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
tobeware
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
SangIn Choung
 
pyOpenCL 입문
pyOpenCL 입문pyOpenCL 입문
pyOpenCL 입문
Seongjun Kim
 
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
DK Lee
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevHeo Seungwook
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성
민욱 이
 

Similar to [pycon korea 2018] Automating network device test with python - dongsoo.koo (20)

KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
 
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing[2013.07.16] PythonKorea강남스터디 발표 - flask testing
[2013.07.16] PythonKorea강남스터디 발표 - flask testing
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
Configuration management best practices
Configuration management best practicesConfiguration management best practices
Configuration management best practices
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)
 
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
pyOpenCL 입문
pyOpenCL 입문pyOpenCL 입문
pyOpenCL 입문
 
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
 
Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedev
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성
 

[pycon korea 2018] Automating network device test with python - dongsoo.koo

  • 1. Python으로 네트워크 장비 
 테스트 자동화 하기 Automating Network Device Test with Python 구동수, DASAN Network Solutions
  • 2. 안녕하세요 구동수 입니다! ‣ DASAN Network Solutions ‣ Research Engineer / TSE(검증소프트웨어개발실) ‣ 소프트웨어 품질, 테스트, 자동화 ‣ 28살, 최선을 다해 살찌(빼)는 중(TMI) 2 “어떻게 하면 네트워크 장비를 더 잘 검증 할 수 있을까?”
  • 3. 무엇을, 왜 발표하나요? ‣ Python을 “네트워크 장비 테스트 자동화”에 사용하고 있습니다. ‣ 약 1년여간 네트워크 장비 테스트 자동화 프레임워크와 테스트 케이스를 만들면서 겪었던 이 야기를 여러분들과 공유하고 싶습니다.
 ‣ “우리 같은 사람들도 있어요!” ‣ PyCon 2017 ‣ Dive Into Diversity! 3
  • 4. 대상 청중 ‣ 자동화를 도입하고 계신 or 도입을 생각하고 계신 CLI 기반 소프트웨어 테스트 엔지니어 분들 ‣ Python을 통한 네트워크 장비 테스트 방법이 궁금하신 분들 ‣ 아직 Python이 무서운 수동 테스트 엔지니어 분들 ‣ 쟤도 했다는데?🤔 4
  • 6. MANUALLY / WITH PYTHON 6 ‣ 어떤 고민이 있었나요? ‣ Network Device Test를 자동화 하기 위해 필요한 부품들을 찾는 것
  • 7. 7 “장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
  • 8. 8 “장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
  • 10. MODELING 10 ‣ 어떤 고민이 있었나요? ‣ 동작은 같지만 COMMAND 가 달라요.
  • 11. 11
  • 12. Test
  • 13. TEARDOWN_COMMONTEARDOWN_TESTTESTSETUP_TEST TEST CASE 구조 정의 13 ‣ 어떤 고민이 있었나요? ‣ 테스트 절차 구성 및 각 절차에 대해 역할 부여 SETUP_COMMON
  • 14. ‣ SETUP_COMMON ‣ 시험 장비 확보 ‣ 계측기 준비 ‣ 케이블링 ‣ 시험을 위한 물리적 환경 구성 ‣ SETUP_TEST ‣ 시험을 위한 논리적인 환경 구성 ‣ 테스트 데이터 준비 ‣ 시험을 위한 장비 설정 ‣ TEST ‣ 시험 목적의 장비 설정 및 기능 확인 ‣ TEARDOWN_TEST ‣ 논리적인 환경 구성 해제 ‣ TEARDOWN_COMMON ‣ 물리적인 환경 구성 해제 14
  • 15. SPEC 정의 15 ‣ 어떤 고민이 있었나요? ‣ 테스트가 실행 되기 위한 조건(특정 기능 지원 여부, 물리적 포트 개수 등)
  • 16. 결과 확인 - OUTPUT PARSING 16 ‣ 어떤 고민이 있었나요? ‣ DUT가 의도 된 동작을 했는지 확인하기 위해서는 DUT로 부터 출력 된 결과(Raw Text)를 정제 해야 하는 과정이 필요했습니다. “BGP TABLE VERSION IS 2, LOCAL ROUTER ID IS 20.20.20.20RNSTATUS CODES: S SUPPRESSED, D DAMPED, H HISTORY, * VALID, > BEST, I - INTERNAL, L - LABELEDRN S STALERNORIGIN CODES: I - IGP, E - EGP, ? - INCOMPLETERNRN NETWORK NEXT HOP METRIC LOCPRF TWEIGHT PATHRN*> 22.22.22.0/24 21.21.21.2 0 100 0 2837 IRN*> 25.25.25.0/24 21.21.21.2 0 100 0 2837 IRNRNTOTAL NUMBER OF PREFIXES 2RN” 한줄짜리 String
  • 18. TEST PROCEDURE 와 TEST CASE 형상 관리 18 ‣ 어떤 고민이 있었나요? ‣ 절차서 따로, 테스트 케이스가 각각 다른 파일로 존재 하는 게 싫었어요.
  • 20. TEST RESULT 관리 20 ‣ 어떤 고민이 있었나요? ‣ Test Report도 자동으로 만들고 싶었습니다(Log, Excel, Traceback message). openpyxl, pygsheet
  • 21. TEST RESULT 관리 21 ‣ 어떤 고민이 있었나요? ‣ 쌓여가는 결과들, 한 곳에 몰아 넣고 시각화 하고 분석 할 수 있게 만들자! python-logstash
  • 23. RESOURCE MANAGEMENT 23 ‣ 어떤 고민이 있었나요? ‣ 장비 접속에 필요한 정보, 테스트에서 사용 되는 연결 관계 등을 한곳에서 관리하고 싶었어요. ‣ 등록 되어 있는 장비를 예약하고, 반납하고
  • 25. 덩달아 얻어진 것들 ‣ 개발과 더 착 달라붙을 수 있었어요. ‣ 개발이 완료 될때까지 기다린 후, 테스트 하지 않고 먼저 테스트 코드를 만들어 놓고 개발자가 실행할 수 있게 했어요. ‣ 개인차에 따른 테스트 수준이 맞춰 졌어요. ‣ 코드에 누군가의 테스트 노하우가 담길 수 있게 되었어요. 25
  • 26. 어렵게 생각하지 마세요 ‣ 너무 어려운 부분은 수동 테스트로 하다가 마음의 평화를 찾고 다시 도전해보세요! ‣ 너무 무섭게 생각 하지 않으셔도 됩니다.
 ‣ 너무너무 귀찮고 사소한 부분부터 자동화를 시작해보세요. ‣ 어떤 부품이 필요할까? ‣ 그 부분들을 연결 시키다보면 중요한 곳에 시간을 더 사용할 수 있습니다. 26
  • 27. 못다한 이야기는... ‣ Open Space에서 뵐게요! ‣ “Python 자동화 엔지니어들의 대화”로 오세요!
 ‣ 더 많은 이야기들을 공유하고 싶습니다. ‣ 테스트 자동화와 관련 된 더 많은 이야기 27
  • 28. #동료를 구합니다$ 대한민국 네트워크 솔루션 1위 기업 다산네트웍솔루션즈와 함께 새로운 세상을 만들어 나가고 싶은 분들을 찾습니다! #검증 소프트웨어 개발실🤖 #언제나 두 팔 벌려 환영🙌#너 내 동료가 되라🤝