Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )레벨: 고급
직무: 프로그래머
Justin Chilton, SAS JMP 선임 테스트 엔지니어
Evan McCorkle, JMP 소프트웨어 개발자, SAS
JSL을 작성하고 변경이 있을 때마다 수동으로 테스트하는 데 지치셨나요? 실수로 응용 프로그램의 일부가 손상되었거나 그렇게 될까봐 두려워서 원하는 내용을 변경하지 못하셨나요? 자동화된 테스트를 통해 변경 사항에 대해 더욱 확신을 가질 수 있습니다.이제 JSL 테스트를 자동화하기 위한 도구 세트를 사용할 수 있습니다. 이 프레임워크에는 테스트 및 테스트 사례 생성은 물론 잘 알려진 Hamcrest 어설션 라이브러리 구현이 포함됩니다. Hamcrest는 JSL의 동작에 대해 알고 있는 사실을 주장하는 유연한 방법을 제공합니다. 이러한 도구는 모든 기능을 갖추고 있으며 필요에 따라 특화될 수 있습니다. 실제로 JMP 개발에서는 이를 사용하여 JMP 자체를 테스트하기도 합니다.프레젠테이션에서는 이 프레임워크와 개별 기능부터 GUI 상호 작용 자동화에 이르기까지 예제 JSL 애플리케이션을 테스트하는 데 사용되는 내용을 다룹니다.
브레이크아웃JSL 애플리케이션 개발Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )안녕 @Justin_Chilton , 답변 주셔서 감사합니다. 나는 당신의 글을 읽기 전에 당신이 예시로 쓴 해결책을 찾았으므로 당신은 내가 올바른 길을 가고 있다는 것을 확인시켜 주었습니다. 이 프로젝트로 돌아왔으니 며칠 후에 새로운 질문이 생길 수도 있습니다... 귀하의 답변에 다시 한번 감사드립니다.
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )안녕 @캐롤 ,
귀하의 답변을 확인하지 못하여 답변이 늦어진 점 사과드립니다. 이 시나리오에서는 팝업 대화 상자가 필요하지 않도록 테스트하는 동안 전달할 수 있는 'openfile' 함수에 선택적 인수를 추가하겠습니다.
다음은 선택적 인수를 전달할 수 있는 스크립트에 대한 업데이트입니다. 또 다른 대안은 이와 같은 모달 대화 상자를 피하기 위해 코드에서 확인할 수 있는 'isTest'와 같은 일종의 플래그를 갖는 것입니다.
openfile = function ( {path = Empty()},
strPathOpen = If(IsEmpty(path),
PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"}),
path
);
If(strPathOpen != "", Open(strPathOpen), Empty());
);
ut test("Pickfileok", "Open Big Class File", Expr(
dt = openfile("$SAMPLE_DATA/Big Class.jmp");
ut assert that(Expr(dt), ut n col(5), "opened table should have 5 columns");
));Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )아주 간단한 예를 들어 죄송합니다. @Justin_Chilton . 나는 문제를 단순화하려고 노력했습니다. 다음 테스트 중에 파일 선택 창을 클릭하지 않으려면 어떻게 해야 합니까?
openfile = function ( {},
strPathOpen = PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"});
return(strPathOpen)
);
ut test("Pickfileok", "Open Big Class File", Expr(
ut assert that(Expr(openfile()), "/C:/Program Files/SAS/JMP/15/Samples/Data/Big Class.jmp");
));
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )알겠습니다. 명확하게 설명해 주셔서 감사합니다. 간단한 응용 프로그램에서 테스트해 보겠습니다. 아마 다른 질문이 있을 것 같은데...
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )@캐롤 , 기존 일치자로만 테스트를 작성하는 한 클래스를 사용할 필요가 없습니다. 자신만의 일치자를 작성해야 하는 경우 Define Class() 및 Method()를 사용해야 하지만 우리는 라이브러리에서 많은 양을 제공하므로 더 이상 필요하지 않을 것입니다.
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )매우 감사합니다 @Justin_Chilton . 물론 추가 기능을 찾았습니다. 감사합니다! 질문에 대해 UI가 있는 애플리케이션에 대해 Hamcrest 테스트를 사용하려면 Define Class( ) 및 Method( )를 사용하는 것이 필수적인지 궁금합니다. 나는 그런 스크립팅 방식에 익숙하지 않습니다 ...
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )안녕 @캐롤 , JMPMan 예제는 추가 기능에 있지만 더 쉽게 액세스할 수 있도록 zip 파일로 업로드했습니다. 궁금한 점이 있으면 알려주세요!
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )안녕 @Justin_Chilton , 햄크레스트 프레젠테이션에 감사드립니다. 프레젠테이션으로 개발한 예제(JMPMan 애플리케이션 및 JMPManGuiTests.jsl)를 공유해 주시겠습니까? 스크립팅 논리를 다른 응용 프로그램에 재현하는 것이 더 쉬울 것입니다. 정말 감사합니다. 캐롤
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )감사해요! 나는 대화를 따라 잡았고 여러분이 올바른 길을 가고 있다고 생각합니다. 어떤 내용이 합쳐질지 기대됩니다!
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )안녕 @nathan-clark ,
우리는 GitHub에서 데이터 테이블 일치자가 어떻게 작동하는지 논의했습니다. https://github.com/sassoftware/jsl-hamcrest/pull/57
제 생각에는 @vince_faller 이미 뭔가 작업을 하고 있을 수도 있습니다.
- 저스틴
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )저번에 딱 이런 생각이 들었는데, @vince_faller .아직 답을 찾으셨나요? 데이터 테이블 비교 플랫폼을 사용하려고 했지만 단위 테스트에서 사용할 수 있는 출력을 찾지 못했습니다.
Re: Hamcrest를 사용하여 JSL 테스트 자동화( 2019-EU-45MP-061 )데이터 테이블을 비교하는 모범 사례가 있나요?내가 찾을 수 있는 일치자가 없습니다.