분명한 사실을 말하자면: 우리 모두가 R&D 분야에서 일할 수 있는 것은 아닙니다. 그러나 우리는 여전히 일부 용어를 배울 수 있습니다. 다음은 JSL 단위 테스트 프레임워크입니다. 그것은 무엇입니까? 어떻게 되었습니까? 그리고 왜 중요한가?
JSL 단위 테스트 프레임워크를 이해해 봅시다.
Nicole Jones( @Nicole_Jones ), 고급 분석 테스팅 수석 관리자, 이 설명:
"용어 단위 소프트웨어 제품의 가장 작은 테스트 가능한 구성 요소를 말하며 문구 단위 테스트 장치가 예상대로 작동하는지 확인하는 프로세스입니다. 문구 단위 테스트 프레임워크 자동화된 단위 테스트를 용이하게 하는 데 사용되는 메커니즘을 참조하게 되었습니다."
수석 연구 통계학자 Joseph Morgan( @joseph_morgan )은 2005년 통계 테스터로 일하기 시작할 때 이 용어를 JMP에 도입했습니다. (그는 현재 DOE 그룹에서 일하고 있습니다.) Joseph의 배경은 소프트웨어 공학 및 컴퓨터 과학, 이산 수학 및 통계입니다.
테스트 엔지니어링 수석 관리자 Audrey Shull( @오드리_셜 ). "그는 많은 큰 아이디어를 가지고 있고, 이것이 그 중 하나였습니다."
Nicole은 "JMP와 JSL에 익숙해지면 소프트웨어의 통계적 특성을 염두에 두고 JSL 단위 테스트 프레임워크를 개발할 수 있었습니다."라고 말합니다.
조셉 모건이 설명하다(4:38)
'우리만의 샴페인 마시기'
단위 테스팅 프레임워크는 다른 언어로 작성될 수 있지만 우리 자신의 JSL보다 더 나은 도구가 어디 있겠습니까?
JSL 단위 테스트 프레임워크를 사용하여 "JMP를 테스트하기 위해 JMP를 사용하고 있습니다"라고 Audrey는 설명합니다. 즉, 우리는 "우리 자신의 샴페인을 마시고 있습니다." 모든 도구에서 가능한 것은 아닙니다.
"우리는 이 다재다능한 JSL 언어를 가지고 있기 때문에 소프트웨어를 사용하여 소프트웨어를 테스트할 수 있습니다."라고 Audrey는 계속합니다. “우리는 프레임워크를 지원하기 위해 JSL이 할 수 있는 일의 한계를 확장합니다. 아주 특별한 일입니다. 그리고 프레임워크 자체는 JSL 이전 버전과의 호환성을 위한 거대한 회귀 테스트 역할을 합니다.
"개발 직원이 스크립팅 작동 방식을 변경하면 우리가 JSL 언어의 첫 번째 고객이기 때문에 테스트 그룹이 먼저 찾습니다.
“모든 회사는 자동화를 사용하려고 하지만 종종 다른 타사 도구를 사용하여 그렇게 합니다. 그들이 항상 자신의 소프트웨어를 사용할 사치를 누리는 것은 아닙니다."
확장 가능한 프레임워크
A screenshot of the original dialog.원래 대화 상자의 스크린샷입니다. JSL 단위 테스트 프레임워크는 모든 JMP 플랫폼에서 사용됩니다. 예를 들어, 그래프 빌더에서 끌어서 놓기 기능을 테스트하는 데 사용할 수 있습니다. 또는 빨간색 삼각형 메뉴. 또는 배포 플랫폼의 모든 코드 단위.
"JSL 자체를 테스트하는 데 사용할 뿐만 아니라 프레임워크를 사용하여 다른 모든 플랫폼을 테스트할 수 있습니다."라고 Audrey는 말합니다.
니콜은 다음과 같이 설명합니다.
“Joseph가 프레임워크를 개발할 당시 그의 주요 초점은 JMP의 통계 플랫폼용 회귀 테스트 제품군을 만드는 방법을 찾는 것이었습니다. 그러나 그는 확장 가능한 프레임워크를 만들 수 있었습니다. 회귀 테스트 제품군에는 통계 플랫폼과 그래프 플랫폼이 포함되어 있으며 Windows뿐만 아니라 Macintosh에서도 작동하며 보고서 구조는 물론 데이터 테이블 명령도 테스트합니다.”
'안전망'으로 일하기
프레임워크는 수동으로 실행할 수 있습니다. 테스터와 개발자는 시작하고 가리키고 클릭하고 실행할 수 있습니다. 그러나 자동화는 지속적인 개선의 핵심입니다.
프레임워크는 코드가 구현되는 개발자의 작업이 있는 Perforce(작업 저장소)를 통해 자동화됩니다. JMP 테스터는 테스트 사례를 작성하고 Perforce의 전용 섹션에 업로드합니다.
Screenshot of the testing dialog as it looks today.오늘 보이는 테스트 대화 상자의 스크린샷.
수석 시스템 개발자인 Jim Borek이 실행하는 야간 자동화 프로세스는 그날 업로드된 모든 테스트를 수집하고, 그날 푸시된 모든 코드를 수집하고, 업데이트된 코드에서 테스트 사례를 실행하고, 실패할 경우 팀에 알립니다. Jim은 이 프로세스를 자동화하고 기계를 유지 관리하는 데 핵심적인 역할을 합니다.
Audrey는 수행되는 테스트의 엄청난 규모를 설명했습니다. 매일 밤 240만 개의 테스트가 실행됩니다. 그리고 이는 JMP 17 및 JMP 16.2의 모든 운영 체제(예: Windows, Catalina, BigSur)에서 발생합니다. 단일 시스템에서 테스트를 실행하는 프로세스는 시스템의 속도에 따라 6-10시간이 걸립니다.
Audrey는 "이것이 회귀 테스트 모음입니다. 이 프레임워크가 없으면 이러한 항목을 매일 테스트하여 손상 여부를 확인해야 합니다."라고 말합니다. “수동으로 할 수 없습니다. 테스트 제품군은 자동화되어 시스템에서 오류가 발생했음을 알려줍니다.
"우리는 때때로 그것을 안전망이라고 부르고 싶어합니다. 지난번에 테스트했을 때 작동한다는 것을 알고 테스트 케이스를 작성했으며 시스템이 고장 나면 알려줍니다. 다른 일을 진행할 수 있습니다. 우리는 새로운 기능과 소프트웨어에 추가되는 기능을 테스트하려고 노력하고 있습니다.”
JSL 테스트 프레임워크 워크플로


Apple 버그 찾기
Joseph은 단위 테스트 프레임워크의 가치를 공고히 하는 초기 일화를 공유합니다.
“JSL 단위 테스트 프레임워크의 초기 구현이 실행되고 얼마 지나지 않아 그 가치는 다소 특이한 방식으로 극적으로 분명해졌습니다. 흥미롭게도 감지한 것은 JMP의 회귀가 아니라 MacOS에서 다소 심각한 버그를 분리하는 데 핵심이었습니다.
“2006년 초, Apple은 Macintosh 라인을 PowerPC CPU에서 Intel CPU로 전환하기 시작했으며 이러한 전환을 지원하기 위해 Rosetta로 알려진 MacOS와 함께 에뮬레이터를 번들로 제공했습니다. 이 에뮬레이터를 통해 PowerPC 응용 프로그램을 Intel Mac에서 실행할 수 있으므로 Apple에서는 소프트웨어의 핵심 부분으로 간주했습니다.
“로제타 에뮬레이터에 버그가 있어 JMP 동작에 몇 가지 비정상적인 이상 현상이 발생했습니다. 단위 테스트 프레임워크를 사용하여 Rosetta( 결함 S0351925 참조 ).
“Michael Hecht와 저는 Apple 엔지니어들과 여러 차례 회의를 통해 문제를 설명했지만 엔지니어들은 이것이 JMP 버그라고 단호했습니다. Apple이 문제가 Rosetta 버그라고 확신한 버그를 보여주는 단위 테스트 중 하나를 본질적으로 모방한 매우 간단한 C++ 앱을 작성할 것을 Michael이 제안할 때까지는 아니었습니다. 1년 후인 2007년 3월, Apple은 Mac OS X 10.4.8의 Rosetta 버그에 대한 수정 사항을 발표했습니다."
누가 혜택을 받습니까?
Nicole은 "[프레임워크]는 테스터를 염두에 두고 개발되었지만 개발자에게도 유용한 것으로 입증되었습니다. “저는 우리 중 많은 사람들의 요구 사항을 해결할 수 있는 프레임워크를 만들 수 있는 Joseph의 능력에 감사드립니다.”
Cary와 Beijing에 위치한 테스터는 기능을 분할하고 JMP의 특정 영역을 모니터링합니다. 그러나 JMP의 어떤 부분에서 테스트를 담당하든 모든 사람은 기본적으로 스크립팅 언어도 테스트하고 있습니다.
Audrey는 “JMP와 JSL을 사용하면 할수록 '있으면 좋은 것'이 생각납니다. 우리가 구현하는 것은 아니지만 가끔 '이것이나 저것을 추가해 주시겠습니까?'
물론 지속적인 개선은 고객에게 이익이 됩니다.
“우리의 강력한 JSL 사용자는 우리가 하는 일 중 일부를 하고 싶어할 것입니다. 보다 강력한 방식으로 스크립트를 작성할 수 있는 방법을 생각하게 합니다."
추가된 많은 종소리와 휘파람은 개발, 테스트 및 릴리스 엔지니어링 팀에서 크라우드 소싱되었습니다.
수년 동안 기능을 추가한 주요 플레이어에게 감사를 표합니다.
조셉 모건 @joseph_morgan
멜라니 드레이크 @Melanie_J_드레이크
짐 보렉
잔 그레그 @XanGregg
마이클 헤흐트 @hecht_jmp
저스틴 칠튼 @Justin_Chilton
에반 맥코클 @EvanMcCorkle
닉 홈즈 @nickholmes13
이것은 JMP 사업부의 독창성, 협업 및 지속적인 개선을 위한 노력의 많은 예 중 하나일 뿐입니다. 우리는 이와 같은 이야기를 더 많이 강조하기를 바랍니다. 아이디어가 있는 Jessica Marquardt에게 연락하십시오.
더 많은 정보를 원하십니까?
JMP 테스팅 대시보드
테스트 엔지니어링 관리자 Nala Sun( @날라 ) 이 게시물에 대한 영감을 제공했습니다. JSL 단위 테스트의 자동화 프레임워크
JSL 단위 테스트 결과가 야간 단위 테스트 실행을 위해 출력, 처리 및 활용되는 방법은 다음과 같습니다. JSL 프레임워크 데이터 파이프라인
Joseph Morgan의 기사: JSL 단위: 자동화된 JSL 테스트
오르소, 알레산드로, 그레그 로더멜. "소프트웨어 테스팅: 연구 여행기(2000-2014)." 소프트웨어 엔지니어링 절차의 미래. 2014. 117-132.
Alex Orso의 전문 페이지: https://www.cc.gatech.edu/home/orso/
그리고 덕분에 @shannon_conners 배경 및 지침을 제공합니다.