Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

713 views

Published on

"Python으로 네트워크 장비 테스트 자동화 하기", dongsoo.koo, pycon korea 2018

Published in: Software
  • Be the first to comment

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

  1. 1. Python으로 네트워크 장비 
 테스트 자동화 하기 Automating Network Device Test with Python 구동수, DASAN Network Solutions
  2. 2. 안녕하세요 구동수 입니다! ‣ DASAN Network Solutions ‣ Research Engineer / TSE(검증소프트웨어개발실) ‣ 소프트웨어 품질, 테스트, 자동화 ‣ 28살, 최선을 다해 살찌(빼)는 중(TMI) 2 “어떻게 하면 네트워크 장비를 더 잘 검증 할 수 있을까?”
  3. 3. 무엇을, 왜 발표하나요? ‣ Python을 “네트워크 장비 테스트 자동화”에 사용하고 있습니다. ‣ 약 1년여간 네트워크 장비 테스트 자동화 프레임워크와 테스트 케이스를 만들면서 겪었던 이 야기를 여러분들과 공유하고 싶습니다.
 ‣ “우리 같은 사람들도 있어요!” ‣ PyCon 2017 ‣ Dive Into Diversity! 3
  4. 4. 대상 청중 ‣ 자동화를 도입하고 계신 or 도입을 생각하고 계신 CLI 기반 소프트웨어 테스트 엔지니어 분들 ‣ Python을 통한 네트워크 장비 테스트 방법이 궁금하신 분들 ‣ 아직 Python이 무서운 수동 테스트 엔지니어 분들 ‣ 쟤도 했다는데?🤔 4
  5. 5. Network Device Test
  6. 6. MANUALLY / WITH PYTHON 6 ‣ 어떤 고민이 있었나요? ‣ Network Device Test를 자동화 하기 위해 필요한 부품들을 찾는 것
  7. 7. 7 “장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
  8. 8. 8 “장비에 접속하고, 설정하고, 패킷을 쏴보고, 의도한 동작인지 확인하고”
  9. 9. Device Under Test(DUT) Control
  10. 10. MODELING 10 ‣ 어떤 고민이 있었나요? ‣ 동작은 같지만 COMMAND 가 달라요.
  11. 11. 11
  12. 12. Test
  13. 13. TEARDOWN_COMMONTEARDOWN_TESTTESTSETUP_TEST TEST CASE 구조 정의 13 ‣ 어떤 고민이 있었나요? ‣ 테스트 절차 구성 및 각 절차에 대해 역할 부여 SETUP_COMMON
  14. 14. ‣ SETUP_COMMON ‣ 시험 장비 확보 ‣ 계측기 준비 ‣ 케이블링 ‣ 시험을 위한 물리적 환경 구성 ‣ SETUP_TEST ‣ 시험을 위한 논리적인 환경 구성 ‣ 테스트 데이터 준비 ‣ 시험을 위한 장비 설정 ‣ TEST ‣ 시험 목적의 장비 설정 및 기능 확인 ‣ TEARDOWN_TEST ‣ 논리적인 환경 구성 해제 ‣ TEARDOWN_COMMON ‣ 물리적인 환경 구성 해제 14
  15. 15. SPEC 정의 15 ‣ 어떤 고민이 있었나요? ‣ 테스트가 실행 되기 위한 조건(특정 기능 지원 여부, 물리적 포트 개수 등)
  16. 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
  17. 17. 17 DUT DUT CONTROLLER TC send_command(“show XXX”) “sdfkjap#$%#@%!$%!^” {“parsed”: “data”} pyparsing, textfsm
  18. 18. TEST PROCEDURE 와 TEST CASE 형상 관리 18 ‣ 어떤 고민이 있었나요? ‣ 절차서 따로, 테스트 케이스가 각각 다른 파일로 존재 하는 게 싫었어요.
  19. 19. Test Result
  20. 20. TEST RESULT 관리 20 ‣ 어떤 고민이 있었나요? ‣ Test Report도 자동으로 만들고 싶었습니다(Log, Excel, Traceback message). openpyxl, pygsheet
  21. 21. TEST RESULT 관리 21 ‣ 어떤 고민이 있었나요? ‣ 쌓여가는 결과들, 한 곳에 몰아 넣고 시각화 하고 분석 할 수 있게 만들자! python-logstash
  22. 22. Test Resource Management
  23. 23. RESOURCE MANAGEMENT 23 ‣ 어떤 고민이 있었나요? ‣ 장비 접속에 필요한 정보, 테스트에서 사용 되는 연결 관계 등을 한곳에서 관리하고 싶었어요. ‣ 등록 되어 있는 장비를 예약하고, 반납하고
  24. 24. 실행 동영상
  25. 25. 덩달아 얻어진 것들 ‣ 개발과 더 착 달라붙을 수 있었어요. ‣ 개발이 완료 될때까지 기다린 후, 테스트 하지 않고 먼저 테스트 코드를 만들어 놓고 개발자가 실행할 수 있게 했어요. ‣ 개인차에 따른 테스트 수준이 맞춰 졌어요. ‣ 코드에 누군가의 테스트 노하우가 담길 수 있게 되었어요. 25
  26. 26. 어렵게 생각하지 마세요 ‣ 너무 어려운 부분은 수동 테스트로 하다가 마음의 평화를 찾고 다시 도전해보세요! ‣ 너무 무섭게 생각 하지 않으셔도 됩니다.
 ‣ 너무너무 귀찮고 사소한 부분부터 자동화를 시작해보세요. ‣ 어떤 부품이 필요할까? ‣ 그 부분들을 연결 시키다보면 중요한 곳에 시간을 더 사용할 수 있습니다. 26
  27. 27. 못다한 이야기는... ‣ Open Space에서 뵐게요! ‣ “Python 자동화 엔지니어들의 대화”로 오세요!
 ‣ 더 많은 이야기들을 공유하고 싶습니다. ‣ 테스트 자동화와 관련 된 더 많은 이야기 27
  28. 28. #동료를 구합니다$ 대한민국 네트워크 솔루션 1위 기업 다산네트웍솔루션즈와 함께 새로운 세상을 만들어 나가고 싶은 분들을 찾습니다! #검증 소프트웨어 개발실🤖 #언제나 두 팔 벌려 환영🙌#너 내 동료가 되라🤝
  29. 29. 질문 받습니다 ‣ 감사합니다 😁 29

×