Ponicode 자동화 테스트 사용

10380 단어 aitestingtddjavascript
지난주에 나는 이 아름다운 단원 테스트 도구Ponicode를 들었다.그것은 코드 속의 인공지능과 상하문 정보를 이용하여 함수를 자동으로 생성하는 테스트 용례를 이용한다.이 문서는 Visual Studio 코드로 확장될 수 있습니다.
제 초기 직업 생활에서 대량의 테스트 용례를 작성한 사람으로서 제 합작 업무 조항에서든 보조 프로젝트에서든 이것에 대해 시도하고 싶습니다.자동 테스트를 설정하고 달리기를 설정하는 것은 많은 시간을 차지하고 내가 수중에 있는 주요 임무를 완성할 수 없게 할 수 있기 때문에 이런 도구가 어떻게 나의 업무 절차를 개선하는지 보고 싶다.
documentation 이 도구의 작업 원리, 현재 지원되는 언어/문법, 그리고 이 도구를 설치하는 방법을 포함한 많은 유용한 정보를 제공하기 때문에 먼저 살펴보는 것을 권장합니다.
⚠️ 중요했어
코드는 분석을 위해 Ponicode 서버로 전송됩니다.Ponicode팀은 그들에게 보내는 프로그램 코드 데이터를 어떻게 처리하는지 명확하게 설명하지 않았기 때문에 저는 현재 VS 코드 설치에서 전체적으로 Ponicode를 사용하지 않고 모든 작업 영역에서만 사용하고 있습니다.나는 너도 이렇게 할 것을 건의한다. 특히 기밀 항목을 처리할 때.
Ponicode를 설치한 후에 예시 항목을 보았습니다. 이것은 간단한 함수입니다. 제공된 문자열이 전자메일인지 확인하는 데 사용됩니다. 지금까지 잘 실행되고 있는 것 같습니다.

지금까지 내가 좋아하는 또 다른 일은 코드를 추가하고 구성하는 도형 인터페이스의 테스트 용례가 있다는 것이다.옆에 있는 "+"단추를 누르면 생성된 목록의 모든 테스트 용례를 프로젝트에 추가할 수 있습니다.추가된 모든 테스트 용례는 <file>.test.js 라는 파일에 기록됩니다. 이 중 <file> 은 테스트를 생성하는 파일의 원본 이름입니다.
테스트는 Jest 를 대상으로 설계될 것이다. 이것은 나에게 단점이다. 왜냐하면 나는 Mocha 테스트 기반의 응용 프로그램을 더욱 좋아하기 때문이다.Ponicode팀은 블로그에서 가능한 한 많은 사람들이 이 도구를 사용해 볼 수 있도록 Jest와 먼저 통합하는 것을 선택했다고 설명했다.[1] 충분히 이해할 수 있지만, 그들이 최종적으로 다른 달리기 선수(예를 들어 모카)를 지원할 수 있다면 다행이다.
Ponicode가 예시 항목 외에 더 진실한 프로젝트에서 어떻게 일을 하는지 봅시다.나는 Ponicode가 그것들에 대한 효과가 어떤지 보기 위해 소스 시작 항목을 열기 시작했다.본문을 작성할 때 Ponicode는 자바스크립트만 지원하기 때문에 제 React, TypeScript, Golang 또는Python 쪽 프로젝트는 작업할 수 없습니다.이 밖에 현재 전역적으로 도출된 함수만 지원합니다. 이것은 클래스, 정적 방법, getter/setter 또는 구조 함수 방법이 없다는 것을 의미합니다.이 밖에 클래스 실례, 리셋, 기호도 지원되지 않습니다.[2] 이로 인해 Ponicode는 현재 자바스크립트 생태계에만 한정되어 있지만 다른 언어와 프레임워크에 대한 지원이 곧 오기를 희망합니다.
최근에 제가 만들고 유지보수한 오픈소스 Atom 확장자 syntaxdb-atom-plugin 를 업데이트해 왔습니다.코드의 한 가지 기능은 다음과 같이 SyntaxDB API로 전송되는 검색어를 백분율로 인코딩하는 것입니다.
export default class PercentEncoder {
    static percentEncodeChar(char) {
        return '%' + char.charCodeAt(0).toString(16);
    }
    static percentEncodeStr(str) {
        var result = '';

        for (var i = 0; i < str.length; i++) {
            result += this.isReservedChar(str[i])
                ? this.percentEncodeChar(str[i])
                : str[i];
        }

        return result;
    }
    static isReservedChar(char) {
        return reservedMap.has(char);
    }
}

위에서 말한 바와 같이 유감스럽게도 본문을 작성할 때 정적 방법은 Ponicode에 적용되지 않는다.그러나 전체 정적 클래스는 하나의 내보내기 방법으로 더욱 좋기 때문에 나는 그것을 재구성할 수 있고 본고에서 Ponicode 생성 테스트의 실제 예시를 얻기를 바란다.
ℹ️ 메모
재구성 과정에서 나는 문법 오류가 발생할 때마다 Ponicode가 문법 오류로 인해 오류를 복구한 후에도 테스트 생성을 실행할 수 없다는 것을 알게 되었다.이 문제를 해결하기 위해 다른 탭으로 전환해야 합니다.
재구성을 수행하면 Ponicode에서 테스트 용례를 생성할 수 있습니다.

괜찮은데!여기에서 문자열의 일부 문자는 URL 인코딩된 것으로 볼 수 있습니다. the Wikipedia article on percent-encoding 를 사용하여 이중 검사를 한 후에 테스트에서 이 문자들을 기대치로 안전하게 사용할 수 있습니다.
그러나 Ponicode는 완벽하지 않다. 2015년의 오래된 프로젝트hacka-news에서 나는 함수가 하나 있다. 함수는 Hacker News 개의 문장 ID 수조를 수신하고 사용자가 요청한 제한수까지 이 ID 중 일부만 되돌려준다.
var pruneResults = function(ids, limit){
    var prunedIDs = ids.slice(0, limit);
    return prunedIDs;
}

불행히도 Ponicode는 idslimit의 의미를 이해하지 못하는 것 같다.
매개변수 이름을 각각 arrayOfIDslimitNum 로 변경하면 결과가 더 적절해 보입니다.

또한 Ponicode를 얻기 위해 이전 예시의 백분율 인코딩 함수의 매개 변수 이름을 조정하여 더 좋은 테스트 덮어쓰기를 생성할 수 있습니다.

Ponicode는 프로그램을 호출하여 함수의 입력과 출력을 관찰하고 이러한 관찰 결과를 사용하여 테스트 용례를 개선할 수 있는 기능도 제공합니다.나는 그것을 사용하지 않기로 결정했다. 왜냐하면 나는 그것이 실제 세계의 테스트 개발에 매우 실용적이라고 생각하지 않기 때문이다. 특히 만약에 라이브러리 (예를 들어hackanews) 나 확장 (예를 들어syntaxdbatom 플러그인) 을 사용한다면, 보통 직접 호출하지 않을 뿐만 아니라, Ponicode 실행 프로그램이 이 프로젝트에서 코드를 실행할 수 있도록 비계 코드를 작성해야 하기 때문이다.
나의 연구에서 나는 Sylvain Leroy에 관한 Ponicode에 관한 견해가 있는 문장을 발견했다. 그는 이 방면에서 나보다 더 많은 경험을 가지고 있다.[3] 만약에 Ponicode에 대한 정보를 더 알고 싶다면, 나는 그의 글을 볼 것을 건의합니다. 왜냐하면 그는 이 도구에 대해 더욱 비판적인 분석을 하고 더욱 개선할 수 있는 좋은 생각을 제기했기 때문입니다.
전반적으로 말하자면, 이 플러그인은 매우 큰 잠재력을 가지고 있다. 설령 좋은 GUI 전단일지라도, 이것은 내가 일을 순조롭게 진행하기 위해 테스트 용례에서 쉽게 실행할 수 있도록 허락한다.그러나 이 플러그인의 부족한 점은 인공지능이 생성한 테스트 용례의 결과에 있다. 이런 테스트 용례는 대부분 상관없는 테스트 용례를 제공한 것 같고 기능 파라미터를 조정해야 개선할 수 있다.그럼에도 불구하고 나는 이 도구가 미래에 더욱 높은 품질의 테스트 용례를 생성할 잠재력이 있다고 믿는다.결국, 나는 내가 일상적인 개발 과정에서 이 도구를 사용한다고 생각하지 않지만, 나는 이 도구의 미래 발전을 보고 싶다. 더 많은 언어 지원, 더 쉽게 접근할 수 있는 특성과 더욱 효과적인 테스트 용례 생성이 있기를 바란다.
[1] https://blog.ponicode.com/2020/08/14/jest-versus-mocha-which-testing-framework-for-you/
[2] https://ponicode.com/docs/using-ponicode/testable-functions
[3] https://sylvainleroy.com/2020/07/23/ponicode-my-feedback-and-a-mixed-overall-feeling-about-the-tool/
Cover PhotobyDigital BuggufromPexels

좋은 웹페이지 즐겨찾기