본문 바로가기

개발자정보

테스트 데이터 항목 검증 방법 관련 검토

반응형

 

package com.example.demo.service;

import org.springframework.stereotype.Service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

@Service
public class CompareService {

    private static final String DB_URL = "jdbc:mariadb://localhost:3306/your_database";
    private static final String USER = "your_username";
    private static final String PASS = "your_password";

    public String compareSQL(String sourceSQL, String confirmSQL) {
        StringBuilder result = new StringBuilder();

        try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement()) {

            ResultSet sourceResult = stmt.executeQuery(sourceSQL);
            ResultSet confirmResult = stmt.executeQuery(confirmSQL);

            while (sourceResult.next() && confirmResult.next()) {
                // 키 항목이 동일한지 확인
                if (sourceResult.getString("key_column").equals(confirmResult.getString("key_column"))) {
                    // 비교 대상 항목의 값이 일치하는지 확인
                    if (sourceResult.getString("compare_column").equals(confirmResult.getString("compare_column"))) {
                        result.append("S\n");
                    } else {
                        result.append("F\n");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "Error: " + e.getMessage();
        }

        return result.toString();
    }
}

 

 

 

  • test_cases 테이블: 테스트 케이스 SQL 및 예상 결과 저장
  • test_results 테이블: 테스트 수행 결과 저장
CREATE TABLE test_cases (
  id INT PRIMARY KEY AUTO_INCREMENT,
  test_sql TEXT,
  expected_result_sql TEXT
);

 

id INT PRIMARY KEY AUTO_INCREMENT,
test_case_id INT,
result CHAR(1),
FOREIGN KEY (test_case_id) REFERENCES test_cases(id)

 

### 5. 화면 설계
- **메인 화면**
  - 테스트 케이스 목록
  - 테스트 수행 버튼
- **결과 화면**
  - 테스트 결과 목록
  - 성공/실패 여부 표시

### 6. 프로그램 흐름도
1. 사용자 인터페이스에서 테스트 케이스 선택
2. 테스트 케이스 SQL 수행
3. 결과 SQL 수행
4. 결과 비교
5. 성공/실패 여부 저장
6. 결과 화면에 표시

### 7. 코드 예시

#### Java 코드 예시

 

public static void main(String[] args) {
    String url = "jdbc:mariadb://localhost:3306/testdb";
    String user = "root";
    String password = "password";

    try (Connection conn = DriverManager.getConnection(url, user, password)) {
        Statement stmt = conn.createStatement();

        // 테스트 케이스 SQL 수행
        String testSql = "SELECT * FROM test_table";
        ResultSet rsTest = stmt.executeQuery(testSql);

        // 예상 결과 SQL 수행
        String expectedSql = "SELECT * FROM expected_table";
        ResultSet rsExpected = stmt.executeQuery(expectedSql);

        // 결과 비교
        boolean isSuccess = compareResults(rsTest, rsExpected);

        // 결과 저장
        String result = isSuccess ? "S" : "F";
        String insertResultSql = "INSERT INTO test_results (test_case_id, result) VALUES (1, '" + result + "')";
        stmt.executeUpdate(insertResultSql);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static boolean compareResults(ResultSet rsTest, ResultSet rsExpected) {
    // 결과 비교 로직 구현
    return true; // 임시로 true 반환
}

 

#### 화면 구성 예시
- **메인 화면**
  - 테스트 케이스 목록
  - 테스트 수행 버튼

- **결과 화면**
  - 테스트 결과 목록
  - 성공/실패 여부 표시

이 설계서를 기반으로 Java와 MariaDB 환경에서 테스트 케이스를 수행하고 결과를 비교하여 저장하는 프로그램을 구현할 수 있습니다.

 

 

1. 입력 데이터 항목 설정
데이터 소스 연결: 다양한 데이터 소스(예: 데이터베이스, CSV 파일 등)와 연결하여 입력 데이터를 가져옵니다.
스키마 정의: 입력 데이터의 구조(열 이름, 데이터 타입 등)를 정의하여 데이터 흐름을 명확히 합니다.
2. 출력 데이터 항목 설정
선택적 필드 매핑: 필요한 필드만 선택하여 출력 데이터에 포함시킬 수 있습니다. 불필요한 데이터를 제거하여 효율성을 높입니다.
필드 이름 변경: 출력 데이터의 필드 이름을 변경하여 가독성을 높이거나 특정 규칙에 맞출 수 있습니다.
3. 변환 규칙 적용
데이터 변환: 입력 데이터의 특정 필드에 대해 변환 규칙을 적용할 수 있습니다. 예를 들어, 날짜 형식 변환, 문자열 조작, 수치 계산 등이 가능합니다.
조건부 로직: 특정 조건을 기반으로 데이터를 필터링하거나 변환할 수 있습니다. 예를 들어, 특정 값 이상인 경우에만 출력하도록 설정할 수 있습니다.


4. 매핑 인터페이스
비주얼 매핑: Spoon의 시각적 인터페이스를 이용해 입력 데이터와 출력 데이터 간의 매핑을 직관적으로 설정할 수 있습니다. 드래그 앤 드롭 방식으로 쉽게 연결할 수 있습니다.
미리 보기 기능: 매핑 설정 후, 출력 데이터의 미리 보기를 통해 결과를 확인하고 수정할 수 있습니다.


5. 에러 처리 및 검증
데이터 검증: 매핑 과정에서 데이터 유형 검증 및 유효성 검사를 수행하여 오류를 최소화합니다.
에러 로깅: 변환 과정에서 발생하는 오류를 기록하여 문제를 추적하고 수정할 수 있도록 합니다.
6. 결과 출력
다양한 출력 형식: 변환된 데이터를 다양한 형식(예: 데이터베이스, CSV, Excel 등)으로 저장하거나 다른 시스템으로 전송할 수 있습니다.
자동화: 정기적인 데이터 처리 작업을 자동화하여 효율성을 높일 수 있습니다.
이러한 매핑 기능을 통해 Spoon은 데이터 흐름을 유연하게 관리하고, 사용자가 원하는 형태로 데이터를 변환할 수 있도록 지원합니다.

 

1.비교 대상 데이터 추출 SQL,  소스 SQL, 확인 SQL를 저장한다.
2.소스 SQL과 확인 SQL의 키 항목은 같아야하고 키 항목은 조건에 자동으로 포함된다.
3.비교 대상 데이터 추출 SQL를 통해 소스 SQL과 확인 SQL의 키 항목 목록을 조회한다.
4.비교 대상 데이터 추출 SQL를 수행한 결과 목록을 각각 소스 SQL과 확인 SQL를 수행한다.
5.각각 소스 SQL과 확인 SQL를 수행결과 값에서 동일 한 항목명의 값을 비교하여 일치 여부를 체크하여 일치하면 S 일치하지 않으면 F로 결과 값을 저장 한다.
6.해당 항목 중 이미 정의 된 항목에서 제외 또는 예외 로직 항목은 별도로 비교하여 처리해야 한다.
해당 프로그램을 React17, Typescript, java, mariadb 환경으로 소스 코드 생성해 주세요.

 

 

 

해당 테스트 케이스의 대상 SQL를 수행하여 비교 대상이되는 키 목록을 추출하고
테스트 수행 결과 SQL 수행한 결과와 테스트 예상결과 정답지 SQL를 수행하여 동일한 항목의 값이 일치하는지 확인하여 성공은 S, 실패는 F로 저장 한다.
해당 수행 결과를 저장한다.
java, mariadb 환경에서 수행하는 화면 구성 및 프로그램 설계서 작성해 주세요.



해당 테스트 케이스의 대상 SQL를 수행하여 비교 대상이되는 키 목록을 추출하고
테스트 수행 결과 SQL 수행한 결과와 테스트 예상결과 정답지 SQL를 수행하여 동일한 항목의 값이 일치하는지 확인하여 성공은 S, 실패는 F로 저장 한다.
해당 수행 결과를 저장한다.
java, mariadb 환경에서 수행하는 프로그램 개발해 주세요.

 

 

반응형