본문으로 건너뛰기
  1. Posts/

Thingworx 테스트 Tip (1) - 브라우저 개발자 도구 네트워크 기능을 이용한 로직 디버깅

·2 분· loading · loading ·
작성자
SeungHyeon Lee
R&D Center Developer
Thingworx 테스트 Tip - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

Thingworx Mashup 개발에는 Mashup에 연결된 Thing의 서비스, 세션 변수, UI 간의 이벤트 바인딩으로 로직을 구성하고 서비스 input/output 바인딩의 작업을 필요로 합니다.

간단한 로직의 경우 몇번의 테스트 만으로도 서비스가 의도된 대로 동작하는지 확인할 수 있지만, 로직의 복잡도가 증가할 수록, 서비스의 개수가 많아질 수록, 바인딩된 이벤트가 많아질 수록 테스트의 난이도가 쉽게 증가합니다.

브라우저의 개발자 도구 기능을 이용하면 서비스에 하나하나 로그를 출력하는 것 대신 쉽게 문제 발생지점을 찾아낼 수 있으며, Thingworx 객체에 직접 접근하여 이벤트 제어를 통해 원하는 지점부터 로직을 테스트 할 수 있습니다.

브라우저 개발자 도구를 이용한 서비스 디버깅
#

Edge 브라우저 기준으로 관리자 도구를 이용한 서비스 디버깅에 대한 소개를 진행하겠습니다.

브라우저 개발자 도구 실행 방법
#

디버깅 하고자 하는 Mashup 화면에서 F12 단축키를 누르면 브라우저의 개발자 도구가 활성화 됩니다. 이 개발자 도구의 네트워크 탭에서는 서버와의 데이터 통신을 편리하게 디버깅 할 수 있으며, 각 소스들의 정보와 속도, 응답 등 데이터를 확인할 때도 유용하게 사용할 수 있습니다.

브라우저 개발자 도구를 이용한 서비스 성공 여부 확인
#

Mashup 로드 후에 > test_A 실행 > test_B 실행 > test_C 실행 > test_D 실행 되는 로직이 있다고 가정해보겠습니다.

image-abcd

다음 로직에서 각각의 서비스들은 ServiceInvokeCompleted 이벤트를 통해 바인딩 되어 있으며 해당 이벤트는 선행 서비스가 호출이 완료되면 바인딩 된 다음 서비스를 실행시키게 됩니다.

서비스가 오류없이 동작 할 경우 개발자 도구의 네트워크 탭에서는 test_A, test_B, test_C, test_D 서비스가 순차적으로 실행되고 모든 서비스가 오류없이 완료된 것을 다음과 같이 확인할 수 있습니다.

image-20230831223324450

브라우저 개발자 도구를 이용한 서비스 실패 여부 확인
#

이번에는 위의 서비스 중 test_C 서비스를 의도적으로 에러를 발생시켜 보겠습니다.

image-20230831223644666

브라우저 개발자 도구를 사용하면 ‘상태’ 열의 값을 통해 test_C 서비스 실행 실패를 확인할 수 있으며, test_C 서비스가 정상적으로 수행되지 않았기에 test_C의 다음 순서로 바인딩 되어있던 test_D 서비스 또한 수행되지 않았음을 확인할 수 있습니다.

브라우저 개발자 도구를 이용한 서비스 i/o 결과값 확인
#

브라우저 개발자 도구에서 서비스를 선택하여 해당 서비스의 Request와 Response를 확인할 수 있습니다.

image-20230831225335331

선택한 서비스의 페이로드 탭을 확인하여 Request 에 a 변수의 값이 의도된 대로 들어간 것을 확인할 수 있으며,

image-20230831225455208

응답 탭에서도 Response가 의도한 대로 반환되는 것을 확인할 수 있습니다.

image-20230831225614182

응답 탭의 데이터는 미리 보기 탭을 이용해 보다 정리된 형태로 응답을 확인할 수 있습니다.

물론 Thingworx에서도 서비스 에디터에서 테스트 데이터를 세팅하고 실행 해볼 수 있는 테스트 기능을 제공하고 있습니다. 하지만, 테스트 기능은 단일 서비스 내 스크립트 범위에서만 가능하기 때문에 서비스들 간의 연결 테스트는 다른 서비스를 직접 참조하도록 스크립트를 수정/롤백 하거나 Mashup에서 바인딩을 하나씩 끊어가며 테스트 할 수 밖에 없습니다.

브라우저의 개발자 도구 기능을 통해 테스트의 정확도를 높이고 Thingworx 개발 효율을 향상시킬 수 있습니다.

연관된 글
#

Thingworx 테스트 Tip - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

관련 글

Thingworx 로그인 세션 타임아웃 설정과 로그인 시도 보안 설정
·2 분· loading · loading
Thingworx는 시스템 설정을 구성할 수 있는 기능을 제공하는 시스템 통합 도구 Subsystem을 제공합니다. User Management Subsystem은 Thingworx의 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다. User Management Subsystem 접근 # Thingworx Composer에서 검색창에 “UserManagementSubsystem"을 검색합니다. 해당 SubSystem의 Configuration탭으로 접근합니다. 로그인 세션 타임아웃 설정 # Session Management Settings 섹션에서 로그인 세션 타임아웃 시간을 설정할 수 있습니다.
Thingworx - Kepserver(Kepware) 간 연동 환경 에서 Remote Thing 연결 끊김 현상 발생 시 Scheduler 를 통한 문제 해결 대안 제시
Thingworx - Kepserver(Kepware) 간 연동 환경에서 문제 발생 케이스 # 다양한 프로젝트를 진행하면서 Thingworx와 Kepserver(Kepware) 간 연동 시 간혹 Kepserver에 내장된 OPC UA Client 상에서 확인할 때는 소스와 Kepserver 상의 태그의 연결 상태가 정상임에도 불구하고 Remote Thing 의 Connection 상태가 해제되는 연결 끊김 현상이 발생하는 경우가 있었습니다. 또한 수동으로 몇가지 조치들을 통해 Connection을 복구하더라도 일정 시간 후에 다시 연결이 끊어지기도 했습니다.
Thingworx Administrator 계정 비밀번호 Reset 방법
·2 분· loading · loading
Thingworx는 User Management Subsystem을 통해 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다. Thingworx는 로그인 시도 시 입력한 문자열을 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 저장된 사용자 비밀번호 정보 및 User Management Subsystem에서 설정한 옵션을 통해 암호화 하여 해당 결과가 저장된 비밀번호 정보와 일치하는지 판단합니다. 이를 이용하여 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블의 유저 정보를 이미 알고있는 비밀번호 암호화 결과와 옵션들로 Update 하여 비밀번호를 리셋할 수 있습니다. Thingworx 시스템 DB를 직접 조작하는 것은 시스템에 심각한 오류를 초래할 수 있으므로 비상시 외에는 해당방식을 권장하지 않습니다. Thingworx 암호화 방식 및 옵션에 대한 이해 # Thingworx 암호화 방식의 대한 이해를 돕기위한 포스팅입니다.