본문 바로가기
국비학원/수업기록

국비 지원 개발자 과정_Day109

by 루팽 2023. 5. 4.

<시험1-애플리케이션 테스트 관리 문제해결시나리오>

테스트 시나리오를 [원인]에 기술하고 테이블 생성과 3개 행의 테스트 데이터(임의의 데이터)를 기록 구문과 테스트에 대한 예상결과를 [조치내용]에 기술

게시글 검색을 수행하기위해 샘플 데이터를 입력하고 검색해 본다.

CREATE TABLE test
(
	BO_NO NUMBER(10) NOT NULL,
	BO_TITLE VARCHAR2(30) NOT NULL,
	BO_WRITER VARCHAR2(15) NOT NULL,
	BO_CONTENT VARCHAR2(300) NOT NULL
);

ALTER TABLE test ADD CONSTRAINT test_pk PRIMARY KEY (BO_NO);

COMMENT ON COLUMN test.BO_NO IS '기본키';
COMMENT ON COLUMN test.BO_TITLE IS '제목';
COMMENT ON COLUMN test.BO_WRITER IS '작성자이름';
COMMENT ON COLUMN test.BO_CONTENT IS '글내용';

INSERT INTO test VALUES(0, '제목1', '작성자1', '내용1');
INSERT INTO test VALUES(1, '제목2', '작성자2', '내용2');
INSERT INTO test VALUES(2, '제목3', '작성자3', '내용2');

 

시작 조건: 화면 개발 및 백엔드 개발이 완료되었을 때

종료 조건: 샘플 데이터 검색이 성공하여 화면에 정상적으로 출력될 때

예상결과: 검색어를 입력하고 검색을 누르면 입력한 샘플 데이터가 화면에 출력된다.

실제 결과: 검색한 샘플 데이터가 출력됨.

 

테스트 수행의 목적을 [원인]에 기술하고 테스트 수행 내용(로그인요청 로직)을 자바스크립트(jQuery)로 [조치내용]에 작성

로그인 기능이 제대로 작동하는지 확인하기 위해 샘플 데이터로 테스트를 수행한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    document.getElementById('loginBtn').onclick = function() {
      const userId = document.getElementById('user_id').value
      const userPw = document.getElementById('user_pwd').value
      if(userId != null && userPw != null) {
        document.getElementById('loginForm').submit()
      } else {
        alert('값을 입력해주세요.')
      }
    }
  </script>
</head>
<body>
  <form id="loginForm" action="/member/memberLogin" method="post">
    <input type="text" id="user_id" name="user_id" />
    <input type="password" id="user_pwd" name="user_pwd" />
    <button type="button" id="loginBtn">로그인</button>
  </form>
	<c:if test="${!empty loginMember}">
		<script>
			alert('회원 로그인이 완료되었습니다.');
		</script>
	</c:if>
</body>
</html>

 

어떤 점에서 애플리케이션의 성능이 저하되는지 [원인]에 기술하고 해결 방안은 무엇인지 [조치내용]에 작성

사용할 컬럼만 가져오는 게 아니라 아스타리스크(*)를 사용하여 테이블의 모든 컬럼을 가져왔기에 성능이 저하되었다.

 

쿼리문에 아스타리스크(*)를 사용하지 않고 필요한 컬럼을 명시해 준다.

SELECT MEMBER.USERID, MEMBER.PASSWORD, MEMBER.USERNAME, MEMBERSHIP.MBS_NAME, AUTH_TBL.USER_AUTH_NAME
	FROM MEMBER
  JOIN MEMBERSHIP ON(MEMBER.USERID = MEMBERSHIP.USERID)
  JOIN AUTH_TBL ON (MEMBERSHIP.USER_AUTH = AUTH_TBL.USER_AUTH)
  WHERE USERID = #{userId}

 

 

<시험2-애플리케이션 테스트 관리 서술형(신)>

스프링 프레임워크에서 @Service 어노테이션의 역할

스프링에서 서비스를 지정하는 어노테이션으로 비즈니스 로직을 수행하는 서비스 레이어 클래스임을 나타낸다. 캡슐화 없이 모델 내 단독 인터페이스로써 제공되는 동작을 의미한다.

 

예상되는 SQL 형태가 무엇이 될지 기술

SELECT * FROM BOARD
WHERE state = 'Y'

 

버전(형상) 관리 시스템의 사용 이점에 대해서 서술

버전관리가 가능해 각 파일의 히스토리를 보고 이전 상태로 되돌리거나 누가 언제 만든 코드인지, 수정사항이 무엇인지 비교할 수 있다.

또한 배포가 편리하고 여러 사람이 동일한 소스코드를 공유하며 개발할 수 있다.

 

세션을 관리하는 클래스인 HttpSession을 이용하여 세션 정보를 지울 때 사용하는 메소드를 작성

session.invalidate();

 

스프링 프레임워크에서 @Repository 어노테이션의 역할

클래스가 객체에 대한 저장, 검색, 검색, 업데이트 및 삭제 작업을 위한 메커니즘을 제공함을 나타내는 데 사용된다.

@Repository 어노테이션에 @Component의 기능이 포함되어 있고 @Repository를 사용함으로써 해당 클래스가 Repositorydml 역할을 하는 것을 명확하게 알 수 있다.

 

Git의 명령 중 Push에 대해서 기술

git push는 로컬 브랜치(local branch)를 원격 저장소(remote repository)로 업로드할 때 사용하는 Git 명령어이다.

 

Spring AOP실행 시점에 따른 Advice를 나열하고 각 관점의 특징에 대해 서술

before: 비즈니스 메소드 실행 전 동작

after: 비즈니스 메소드가 실행된 후, 무조건 실행

after-returning: 비즈니스 메소드가 성공적으로 리턴되면 동작 (단, 메소드 내부에 리턴값이 존재하는 경우)

after-throwing: 비즈니스 메소드 실행 중, 예외가 발생하면 동작

around: 메소드 호출 자체를 가로채서 비즈니스 메소드 실행 전&후 모두에 처리할 로직을 삽입할 수 있음

 

404 에러에 대해서 서술

서버 자체는 존재하지만 서버에서 요청한 것을 찾을 수 없을 때 발생하는 에러.

사용자가 요청하는 페이지나 파일이 이동, 수정, 삭제되거나 경로가 잘못되어 발생하는 경우가 가장 많다.

댓글