웹 서비스/애플리케이션 개발 문제 만들기
04 문제 관리
웹 서비스/애플리케이션 개발 문제 만들기
이 문서에서는 웹 서비스/애플리케이션 개발 문제를 입력하는 내용만을 다룹니다. 새로 문제를 만들 때 기본적으로 입력하는 사항들에 대해서는 이 문서를 참조하시기 바랍니다.

웹 서비스/애플리케이션 개발 문제는 서버 사이드 언어를 이용하여, 웹 서비스/애플리케이션에서 필요한 기능을 구현할 수 있는지 평가할 수 있는 문제입니다. 이 문제 유형은 다양한 서버 사이드 웹 프로그래밍 언어 및 프레임 워크를 지원하며, 지원자가 최대 5개의 소스코드 파일들을 편집하며 문제를 해결하게 할 수 있고, 나이트워치(Nightwatch.js)라는 자동화된 웹 애플리케이션 UI 테스트 툴을 이용해서 채점을 할 수 있습니다.

웹 서비스/애플리케이션의 경우 하나의 파일 만으로 이루어져 있을 경우, 하이퍼링크를 통한 페이지간 이동과 같은 웹 서비스 특유의 강력한 특징을 살릴 수 없기 때문에, 다른 문제들과는 달리 복수 개의 소스코드 파일을 수정할 수 있도록 환경을 마련했습니다. 웹 서비스/애플리케이션 문제는 문제 출제자가 기본 틀이 되는, 미완성된 웹 프로젝트를 zip 형식으로 압축해서 업로드를 한 뒤, 출제자가 접근 가능한 파일 리스트를 지정하면, 지원자가 해당 파일들을 수정하여 완성된 웹 프로젝트로 만든 뒤 제출하는 방식으로 이루어집니다.

채점모드의 경우, 출제자가 입력한 Nightwatch 테스트 코드를 이용해서, 채점을 실시하여 점수를 산정합니다. 제출모드의 경우 지원자가 작성한 소스코드를 제출하여, 출제자가 열람할 수 있도록 합니다.

문제 해결 언어


여기서 지원자가 작업할 웹 프로젝트에 관련된 내용을 설정할 수 있습니다.

웹 서비스/애플리케이션 개발 문제는, 출제자가 여러개의 파일들로 이루어진 프로젝트 형태의 zip파일을 업로드하고, 파일들 중 지원자가 열람 및 수정 가능한 파일을 지정하는 방식으로 출제됩니다. 지원자는 주어진 파일들을 열람 및 수정하여, 문제에서 요구하는 기능을 구현하게 됩니다. (지원자는 추가적인 파일을 생성하거나 기존에 존재하는 파일을 삭제할 수 없습니다.)

PHP의 경우에는 apache2 서버를 리눅스 서비스로 사용하므로, 따로 실행 스크립트가 필요가 없으나, 나머지 언어 및 프레임워크들은 서버를 실행하기 위해 실행 스크립트가  필요합니다. 백앤드 언어를 서버 실행 스크립트가 필요한 언어를 선택하게 되면, 하단 부분에 #!/bin/bash 로 시작하는 bash 쉘 스크립트 입력란이 나타납니다. 이 부분이 서버 실행 스크립트 작성란이며, 이 부분에 스크립트를 작성하면 추후 서버를 실행해야 할 때 마다 해당 스크립트를 실행하게 됩니다. 이 부분에 서버를 실행시키는 스크립트를 작성해주시면 됩니다.

Node.js와 Python Flask의 예를 들어 설명하도록 하겠습니다. 

nodejs의 경우에는 Express 프로젝트의 경우 일반적으로 아래 코드와 같은 형태일 것입니다, 

잠금 영역
실행 언어: py

위와 같은 실행 스크립트일 경우, 실행 포트번호는 3000번이 됩니다.

python 기반 웹 프레임워크 프로젝트일 경우는 일반적으로 아래 코드와 같은 형태일 것입니다. 

잠금 영역
실행 언어: py

위와 같은 실행 스크립트일 경우, 실행 포트번호는 8080번이 됩니다.

언어 설정


현재 구름TEST 웹 서비스/애플리케이션 문제에서 지원하는 백엔드 언어 및 프레임워크는 5가지 입니다.

  • PHP (Apache2 Server)
  • Node.js
  • Django(Python Framework)
  • Flask(Python Framework)
  • Ruby on Rails(Ruby Framework)

문제 해결 언어의 '언어' 탭에서 백엔드 언어 혹은 프레임워크를 하나 선택합니다.


기본 프로젝트 설정


기본 프로젝트란에서 zip 형식으로 압축된 웹 프로젝트 파일을 업로드하면, 프로젝트 설정 란에 해당 압축파일 내부에 있는 파일 리스트가 나타납니다.

지원자용 파일 설정


프로젝트 설정에서 응시자가 열람 및 수정할 수 있는 파일들을 선택합니다. 지원자가 문제 해결을 위해서 꼭 수정해야 할 파일들과, 구조를 확인해야 할 필요가 있는 파일들을 선택하면 됩니다. Ctrl(Mac OS 기준 cmd)키를 이용하여 복수개의 파일을 선택할 수 있으며, 현재는 최대 5개까지 선택이 가능하도록 설정되어있습니다.


웹 서버 확인 및 실행 설정


구름TEST에서는 웹 서버를 실행해보고자 할 때, 웹 서버가 제대로 실행 되었는지 자체적으로 확인한 뒤 사용자에게 보여줍니다. 웹 서버가 실행 되었는지 확인하기 위한 정보 입력란이 '웹 서버 확인 및 실행 설정'란입니다.

  • 첫번째 입력란을 보면 HTTP / TCP / SSL의 세가지 항목이 있는데, 이는 웹 서버 실행 확인 방법을 의미하며, 현재는 HTTP만 지원하고 있으며, 남은 TCP와 SSL는 추후 확장될 가능성에 의해 인터페이스가 유지되고 있습니다. HTTP 방식은, 두번째 및 세번째 란에서 지정한 값을 토대로 URL을 만들어서 해당 URL에 HTTP 요청에 대한 응답 코드의 값이 200인지 확인하는 방식을 의미합니다.
  • 두번째 입력란에 80이라고 쓰여 있는 항목은 포트번호를 의미합니다. PHP 프로젝트의 경우 apache2 서버가 기본적으로 80번 포트로 구동되도록 설정되어 있으므로, 변경할 필요가 없습니다.
  • 세번째 입력란은 웹 서버 확인 경로입니다. 기본 값은 '/' (루트 경로)이며, 설정하지 않을 경우 자동으로 루트 경로로 입력되게 됩니다. 예를 들어 로컬 호스트에서 웹 서버 실행시 다음 경로에 메인 페이지가 나타나게 된다면, 웹 서버 확인 경로는 /main.php가 될 것입니다(http://localhost/main.php).

가장 하단의 '실행해보기' 버튼을 눌러서, 업로드한 웹 서버가 잘 동작하고, 웹 서버 실행 확인 로직이 잘 동작하는지 확인할 수 있습니다.

실행해보기 버튼을 누르면, 웹 서버가 팝업 형태로 나타나게 되므로, 만약 작업중인 웹 브라우저에 팝업차단이 설정되어 있다면, 잠시라도 해당 기능을 해제시킨 뒤 실행해보기를 하셔야 합니다.

팝업 창을 종료하게 되면 해당 웹 서버가 종료되게 됩니다.

채점 답안


    웹 서비스/애플리케이션 개발 문제는 UI 테스트 자동화 툴인 Nightwatch를 이용하여 정답여부를 판단하여 작성한 답안에 대하여 채점을 하고 있습니다. 그러므로 문제 출제자는 채점모드의 웹 서비스/애플리케이션 개발 문제를 작성하기 위해서는 Nightwatch 채점 스크립트를 작성할 수 있어야 합니다. 해당 내용은 분량 상 다른 페이지에서 소개하도록 하겠습니다. Nightwatch와 관련된 자세한 내용은 아래의 링크를 참고해주세요.

    채점 스크립트 작성하기