본문 바로가기
2020 12 08 실전 업무를 셀레니움에게 맡겨보도록 해요. 업무는 니가하고 월급은 내가받는다. with selenium ide extenion 간단한 시나리오를 작성해봅시다. 시나리오 1. 홈화면에 접근 후 메인 팝업 두개를 닫아야 한다. 그러나 이 메인팝업은 한번 닫으면 일정시간동안 뜨지 않는다. 팝업이 떠있는지 여부를 확인하는것이 가장 까다로웠다... 이것때문에 시간을 얼마나 잡아먹었는지! 결론은 execute script 를 사용해서 요소를 가져 온 후, 결과를 변수에 담았다. 그리고 변수의 결과에 따라서, 해당 팝업이 존재한다면 팝업을 끄고, 존재하지 않는다면 그냥 지나가도록 구현했다. document.getElementById() 메서드를 사용해서 요소가 있으면 true, 없으면 false를 반환하도록 하고, .. 2020. 12. 8.
2020 12 08 Selenium IDE로 단순 반복 웹기능테스트 자동화하기 내가 만나본 대부분의 개발자들은 반복하는 단순 업무를 경멸했다. 그리고 나또한 그렇다... 현재 있는곳은 배포잡에 기능테스트가 자동화가 되어있지 않아서 개발자들이 손수 하나하나 테스트를 했어야만 했다.. "싫어! 단순반복 테스트 싫다구!" 대략 1년동안 해야지..해야지 마음만 먹고 있다가 코로나가 심해진 이 시점에 진지하게 한번 프로젝트를 시작해본다.. Selenium + IDE 몇년전에 진행했었던 자동화 토이 프로젝트는 Selenium + python으로 코드를 한땀한땀 작성해서 진행했었다. 이번에도 그렇게 진행해야지.. 하고 찾아봤는데 왠걸.. Selenium IDE라는 정말 세상편한 extention이 나왔다. Record 기능을 이용해서... 2020. 12. 8.
2020 12 04 # 외부 CND에서 가져올때 프로토콜 생략하는 이유 외부 CDN에서 스크립트 가져올때 간혹 처럼 프로토콜은 제외하고 가져오는 경우가 있다. 이는 js를 import 하는 웹페이지와 외부 CDN의 프로토콜을 맞추기 위함이다. # 왜 프로토콜을 맞춰야 할까? 만약 호출하는쪽 웹페이지에서 http프로토콜을 사용하고, 외부 CDN이 https를 사용한다면 보안 에러가 발생한다. 그러니까, 프로토콜이 서로 다르다면 에러가 발생한다. # 그렇다면, 웹뷰는 어떡하지, 웹뷰의 프로토콜은 file인데! --> 왠만하면 https로 호출하도록 프로토콜을 명시해주도록 조언을 받았다. 사실 이부분이 가장 궁금했는데 답변을 듣고 난 후에도 정확하게는 모르겠다. 2020. 12. 4.
2020 12 03 #블로킹 외부 디바이스에 처리를 요청 한 후, 응답을 기다리는 함수를 호출할 때 스레드에서 발생하는 대기 현상을 블로킹이라고 한다. 이때 스레드에서 CPU는 아무런 연산을 하지 않는다. 그러니까, 예를들어, connect()함수를 호출하고, 소켓에 연결이 있을때까지 CPU는 잠들어있는것을 블로킹이라고 할 수 있지 않을까- 네트워크 장치로부터 응답이 오기전까지 CPU가 해당 스레드에서 해줄수있는 일은 없으니까.. #논블로킹 반면 논블로킹 소켓은 외부 디바이스의 처리를 마냥 기다리지 않는다. '외부 디바이스는 지금 바빠!' 라는 결과를 반환한다. 만약 스레드가 외부 디바이스의 결과를 받아야 다음 로직이 진행된다면, CPU는 외부디바이스한테 "데이터 왔어? 데이터 왔어?" 라고 계속 물어봐야 한다.. 이는 C.. 2020. 12. 3.
2020 12 02 # 네트워크 품질을 저해하는것들 # 네트워크 기기 네트워크 기기는 패킷을 받으면 헤더를 먼저 읽는다 패킷을 어떻게 처리해야할지 판단해야 하기 때문이다. 이는 CPU연산이므로 연산부하를 발생시킨다. 만약 네트워크 기기가 처리할 수 있는 한계를 넘어서면 1) 패킷을 버린다 (패킷드롭) -> Packet loss가 발생한다. 2) 메모리에 패킷을 보관한다 -> 하지만 지속되면 hang이 발생하거나, 강제재부팅이 일어난다. # 네트워크 선로문제 잡음이 생기거나 신호가 약해져서 패킷에 오류가 발생하면 체크섬검사로 수정을 시도하거나 어려우면 패킷 or 프레임을 버린다. * 재미있는 이야기 아날로그 라디오가 무선감도가 좋지 않으면 잡음이 섞이기에 단순히 지지직 거리지만, 인터넷 라디오는 소리가 '끊어진다' 패킷이 버.. 2020. 12. 2.
2020 11 30 # 네트워크 주소변환 NAT: 전송되는 패킷의 dst address나 src address가 다른것으로 변환되는 과정을 의미한다. 예를들어서, 내부 IP를 사설 IP로 변경해주는 공유기를 NAT라우터라고 할 수 있다. NAT 라우터가 주로 하는일은 사설 IP주소 1개를 여러대의 호스트가 공유할 수 있게 해주는것이다. #포트매핑엔트리 공유기는 발신자와 수신자 끝점을 이어주는 맵핑정보를 생성해서 관리하는데, 이 정보를 포트매핑엔트리라고 한다. #홀펀칭 공유기는 내부주소에 해당하는 ip/port에 외부 ip와 임의의 포트번호를 할당한 후 포트매핑엔트리에 넣는다. 이 작업을 홀펀칭이라고 한다. 재미있는 이름. #공유기는 패킷 헤더를 변경한다. 1) 패킷헤더의 발신자IP를 내부 IP에서 사설 IP로 변경한다. 2.. 2020. 11. 30.