Giter Site home page Giter Site logo

casebook's Introduction

CASEBOOK

CASEBOOK은 소프트웨어나 기타 테스트가 필요한 환경에서 테스트 수행과 관련된 테스트케이스의 작성, 테스트의 실행 및 리포트 등의 테스트 수행과 관련된 여러 기능을 보다 편리하게 사용하기 위해 사용할 수 있는 오픈 소스 소프트웨어입니다.

주요 기능

CASEBOOK은 테스트 수행을 위해 필요한 테스트케이스의 작성, 테스트의 수행, E2E 테스트 도구와의 통합, 테스트 결과 리포팅 및 알림 등을 기능을 제공합니다.

  • 회사나 조직 혹은 공통의 관심사를 가지는 그룹이 공유할 수 있는 '스페이스'라는 공간을 생성하고, '스페이스'의 참여자를 관리할 수 있습니다.
  • '스페이스'에 '프로젝트'를 생성하고, '프로젝트'의 참여자를 관리할 수 있습니다.
  • '프로젝트'에 트리 형태의 '테스트케이스 그룹'을 생성하고, '테스트케이스 그룹' 아래에 '테스트케이스'를 작성할 수 있습니다.
  • '테스트케이스'에 작성을 위한 '테스트케이스 템플릿'을 추가하거나, 편집하여, '프로젝트' 별로 '테스트케이스' 작성이나, 결과 입력에 필요한 항목을 커스터마이징 할 수 있습니다.
  • 작성된 '테스트케이스'를 테스트 수행을 위해 필요한 여러 조건을 선택하여, '테스트런'을 생성한 후, 테스트를 수행할 수 있습니다.
  • '테스트런' 생성 시 테스트를 수행할 기간, 테스트 대상이 되는 '테스트케이스 그룹'이나 '테스트케이스', 테스트를 수행할 '테스터'를 자유롭게 선택할 수 있습니다.
  • '테스트런'의 시작, 종료, 테스터의 변경 등의 '테스트런'의 상황 변화를 슬랙과 연동할 수 있습니다.
  • '테스트런' 진행율을 비롯하여, 테스트 성공, 실패, 테스트 불가 등의 비율, 테스터별 테스트 진행 상황 등을 '대시보드'를 통해 확인할 수 있습니다.
  • '테스트런'을 예약하여 특정 시간에 테스트가 수행될 수 있도록 미리 설정할 수 있으며, 혹은 '매일', '매주 월요일' 등 특정 날짜 조건에 따라 반복 수행할 수 있도록 '테스트런' 계획을 수립할 수 있습니다.
  • 종료된 '테스트런'에 대한 다양한 지표와 함께 전체 테스트 수행 대상에 대한 결과를 '리포트'를 통해 확인할 수 있습니다.
  • 반복 설정된 '테스트런'의 반복 조건에 '휴일 제외' 옵션을 적용할 수 있으며, '스페이스'별로 특성에 맞게 휴일을 설정할 수 있습니다. (매주 마지막 금요일 휴일 등)
  • E2E 테스트도구와의 연동을 통해 자동화된 스크립트를 통해 테스트된 결과를 CASEBOOK과 연동할 수 있습니다.

라이선스

  • Apache License 2.0

설치 방법

  • TBD

추가 설정

  • TBD

개발 환경 구성

케이스북은 오픈 소스 프로젝트로 관심이 있는 개발자 누구나 참여할 수 있습니다. 기여하고 싶은 개발자라면 누구나 개발에 참여할 수 있습니다. 개발에 참여하기 위해 아래와 같은 방법으로 개발 환경을 구성할 수 있습니다.

프론트 환경 구성

프론트 개발 환경 구성을 위해 먼저 node (>16)을 설치합니다. 프론트 코드는 app 폴더 하위에 구성되어 있습니다. 먼저 app 폴더로 이동 후 관련 패키지를 설치합니다.

app] npm install

※ 에디터로 사용하는 toast-ui/react-editor 라이브러리가 올바르게 설치되지 않는 경우, 아래 명령어로 의존성 검사를 제외하고 설치합니다.

app] npm install --legacy-peer-deps

아래 명령어를 통해 프로젝트를 실행합니다.

app] npm start

ESLINT 및 PRETTIER 설정

사용하시는 IDE를 이용하여, ESLINT 및 PRETTIER가 동작하도록 설정합니다. 해당 설정들이 코드 변경 시 자동으로 변경되도록 설정하는 것을 권장드립니다.

백엔드 환경 구성

릴리스

아래와 같이 릴리스 파일을 생성할 수 있습니다. 단, gradle 7.X 버전을 사용해야 올바르게 릴리스됩니다. gradle 8.0 이상의 버전에서는 현재 올바르게 릴리스 과정이 동작하지 않습니다.

gradle release

릴리스 과정이 올바르게 처리되면, 프로젝트 파일의 build 파일의 dist 폴더 하위에 zip 파일이 생성됩니다.

이 후 상단의 설치 방법에 따라, 케이스북을 설치 및 사용할 수 있습니다.

설치 파일을 직접사용하지 않고, 빌드 과정에서 생성된 파일들을 이용하여, 일반적인 웹 애플리케이션을 배포하는 방식으로 각 사용자의 상황에 맞게 직접 설치를 진행할 수 있습니다. 이때 아래의 디렉토리에 생성된 파일들을 참고하실 수 있습니다.

  • build/libs/casebook-api-[version].war
  • app/build

casebook's People

Contributors

again7536 avatar isangu avatar kakao-kevin-12 avatar kakao-yell-ow avatar mindplates avatar shore-crabs avatar siryeong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

casebook's Issues

일부 페이지에서 권한이 없는 프로젝트 이름이 노출되는 문제

  • /spaces/{spaceName}/projects에서는 권한이 있는 프로젝트 목록만 노출됩니다 (정상 작동).
  • /spaces/{spaceName}/projects/{projectId}에서는 GNB 우측에 현재 프로젝트 이름이 표시되는데, 해당 부분을 눌렀을 때 나오는 드롭다운 메뉴에서는 권한이 없는 프로젝트도 노출됩니다.
  • /spaces/{spaceName}/info 하단의 프로젝트 목록에서도 권한에 관계없이 모든 프로젝트가 보이는 것 같습니다.
  • 해당 스페이스에서 사용자 권한만 가진 계정(관리자 아님)으로 조회했을 때 나타나는 현상이라서, 의도된 동작인지 확인 부탁드립니다.

테스트케이스 관련 기능 추가 건의

  • 테스트케이스를 만들다보면, 테스트케이스간에 선후관계가 형성되는 경우가 종종 있는 것 같습니다. 마치 지라에서 blocked by 라던지 relates 라던지 테스트케이스간의 관계를 표현할 수 있는 기능이 있으면 좋을 듯 합니다.

테스트케이스에 버전 정보를 입력할 수 있는 기능

프로젝트별로 릴리즈가 있고, 버전 정보가 보통있는데요.
해당 버전을 릴리즈하기 전에 연관된 버전을 테스트하기 위한 정보가 부족합니다.
테스트케이스에 버전 정보를 입력하고, 특정 버전을 선택해서 테스트를 진행할 수 있으면 좋을 것 같습니다.

README 개선

케이스북을 사용해보려고 하는데, 쉽게 사용할 수 있도록 개발 환경 구성 방법이나 서버 구동 등이 잘 작성되어 있으면 좋겠습니다.
또, 케이스북 내의 스페이스, 프로젝트, 테스트런 등의 개념을 이해할 수 있는 설명이 사진 등을 포함해서 디테일하면 사용에 많은 도움이 될 것 같아요~

테스트런 추가 알림 발송 기능 요청

테스트런이 수행될때, 최초 1회만 알람이 발송되는데, 중간 중간 알림이 추가적으로 발송되면 좋을 것 같습니다.
예를 들어, 테스트 중간 정도에 현재 테스트가 진행되지 않은 테스트케이스들에 대한 알람 발송을 해주거나,
혹은 테스트런 페이지에서 버튼을 클릭하여, 현재 테스트가 진행되지 않은 테스트케이스에 대한 알람을 수동으로 발송할 수 있으면 좋을 것 같습니다.

request feature of comment for ended testrun

Hello.

Is it possible to add additional information related to the results or the ability to input data such as comments to the finished test run?
since there is no function to terminate the testrun and add any function to that test run,
it is inconvenient because I have to take notes on the test run or record it separately from the casebook.

thank you.

테스트런 리포트에서 성공 케이스이지만, 코멘트 등으로 추가적인 의견이 있는 경우를 표시할 수 있는 방법이 없습니다.

테스트 자체는 성공이지만, 의견이나 개선 사항이 있는 경우 코멘트로 작성하게 되는데,
리포트에서 하나하나 클릭해서 내용을 확인해야지만 코멘트가 있는지 알 수 있어서 불편합니다.
이에 리포트에서 전체 테스트케이스에서 코멘트가 있는 테스트케이스를 볼 수 있는 목록이나, 요약 숫자가 있으면 좋을 것 같습니다.

테스트런 테이스케이스 검색 기능 강화

테스트런의 테스트케이스 선택 기능이 전체 목록에서 하나씩 보면서 선택하는 방법밖에 제공되지 않아서 특정 상황에서 불편한 점들이 있습니다.
아래 제안한 태그나 버전 등의 기능으로 선택하거나, 혹은 테스트케이스의 생성된 날짜나 수정된 날짜를 통해서 검색하거나, 선택 하는 기능이 있다면 더 편리하게 테스트런을 생성할 수 있을 것 같습니다.

테스트런 복사 또는 실패한 케이스만 모아서 다시 테스트런을 생성 기능

테스트런으로 테스트를 수행한 뒤에, 이 후 해당 실패 케이스들에 대한 조치가 이루어진 후에 다시 테스트런을 생성할때,
실패한 케이스를 다시 선택하는 과정이 어려운 것 같습니다.
이에 기존 테스트런을 복사하거나, 참조하여 동일한 테스트런을 실행시킬 수 있거나,
혹은 기존 테스트런에서 실패한 테스트런만으로 새로운 테스트런을 실행시킬 수 있으면 좋을 것 같습니다.

테스트런 수행시 테스트케이스 컨텐츠가 없는 경우, NullPointException 발생

테스트케이스에 내용이 없는 경우, 아래 오류가 발생하여, 테스트런 생성 안되거나, 예약 테스트런이 실행안되는 오류
java.lang.NullPointerException: null
at com.mindplates.bugcase.biz.testrun.service.TestrunService.createTestrunInfo(TestrunService.java:559)
at com.mindplates.bugcase.biz.testrun.service.TestrunService$$FastClassBySpringCGLIB$$e3f0af81.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

테스터를 랜덤하게 변경하는 기능 요청

테스터를 한번 지정한 후, 테스트런의 수행 상황에 따라 특정 사용자를 랜덤하게 변경하기 위한 기능이 필요한 경우가 있습니다.
예를 들어, 사용자가 부재 중이거나, 테스트를 수행할 수 없는 경우,
해당 테스터가 지정된 모든 테스트케이스를 찾아서, 다른 테스트를 지정해서 변경하는 방법밖에 없는데, 이런 경우에 변경하는 방식도 불편하고, 초기에 랜덤 지정된 사용자를 특정해서 변경하기 위해 특정 테스터를 지정하는 것이 부적절한 경우가 있습니다.
이를 위해 특정 테스트케이스의 테스터를 변경하거나, 혹은 해당 테스터가 지정된 모든 테스트케이스를 한꺼번에 변경할 수 있는 방법이 있으면 좋을 것 같습니다.

케이스북 연동을 위한 테스트런 조회 API

프로젝트 토큰 + 테스트케이스ID 요청에 대하여, 오픈된 테스트런이 있는 경우, 해당 테스트런 ID 목록을 출력하는 API 추가
(테스트랩이나, 기타 다른 도구와의 통합을 위해 필요한 정보)

테스트케이스 조회 관련 개선사항

  • 특정 테스트케이스에 대한 조회 링크를 첨부하고 싶은데, 그러한 링크가 없다보니 하이라이팅 한 채로 이동할 수 있는 앵커태그 등이 포함된 url 로 특정 프로젝트 내의 테스트케이스를 바로 조회할 수 있으면 좋을 것 같습니다. (TC111 등의 숫자를 누르면 해당 url 이 복사되면 좋을 것 같아요)

  • 유사한 내용이지만, 특정 테스트케이스를 ctrl + F 로 검색해서 조회하기 보다는, 테스트케이스 제목 등이 포함된 항목들만 필터링해서 화면에 노출할 수 있도록 검색 기능이 있으면 좋겠습니다.

종료된 테스트런을 다시 종료할 수 있는 문제

  • 종료된 테스트런 정보 페이지의 우측 상단에 테스트런 종료 버튼이 있는데, 해당 버튼을 누르면 이미 종료된 테스트런을 다시 종료할 수 있는 문제가 있습니다.
  • URI: /spaces/${spaceCode}/projects/${projectId}/testruns/${testrunId}

프로젝트 별 변수 추가

Postman 처럼 프로젝트 단위에서 사용할 수 있는 변수가 있으면 좋을 것 같습니다.
예를 들어 특정 프로젝트에 개발/운영 페이즈가 있는 경우에, 현재는 테스트케이스마다 url을 2개 추가함으로써 각 페이즈 별 링크를 넣을 수 있습니다.
하지만 변수를 사용하여 해당 변수만 테스트런 생성 시에 바꿔줄 수 있다면, 각 테스트케이스에서는 1개 url (예컨대, {{base_url}}/example/~~)만 작성해도 될 것 같습니다.

코멘트의 내용을 크게 볼 수 있는 기능 추가

코멘트에 이미지가 첨부된 경우에 이미지가 확대가 안되어서, 잘 안보이는 경우가 있습니다.
선택한 코멘트를 팝업으로 볼 수 있거나 또는 이미지를 클릭하여 확대하여 볼 수 있도록 개선하면 좋겠습니다.

how can I integrate with nightwatch?

I heard that casebook can integrate with a nightwatch. but I don't know how to use it or how to send the results.
please let me know if there are any related guides or documents.

thanks for your attention. I’m looking forward to your reply.

내 정보 페이지에서 이름을 변경하면 다른 페이지에서 늦게 반영되는 문제

재현 방법

  • 내 정보 페이지 접속.
  • 페이지 하단의 '내 정보 변경' 버튼 클릭.
  • 이름을 다른 것으로 설정한 후 저장.
  • 내 정보 페이지에서는 변경된 이름으로 보이지만, 프로젝트 정보 페이지와 스페이스 정보 페이지에서는 변경 전 이름으로 보임.
  • 시간이 지나면 다른 페이지에서도 변경된 이름으로 보이긴 하는데, 약간 딜레이가 있는 것 같습니다.

연관된 테스트런이 있는 테스트케이스그룹을 삭제할 수 없는 문제

  • 테스트케이스그룹과 그 그룹에 속하는 테스트케이스를 만들고, 해당 테스트케이스로 테스트런을 만든 후
  • 만들었던 테스트케이스그룹을 삭제하려고 하면 "알 수 없는 오류가 발생하였습니다."라는 메시지와 함께 삭제에 실패합니다.
  • 테스트케이스그룹을 삭제할 때 테스트런과의 매핑 관계를 적절히 처리하지 않아서 발생하는 문제인 것 같습니다.

테스트케이스 복사 및 붙여넣기 기능

비슷한 테스트케이스를 만드는 방법이 없어서 불편합니다.
기존에 작성된 테스트케이스를 복사하고 붙여 넣는 기능을 만들어 주시면 감사하겠습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.