손으로 클릭 테스트? 그만 — OPA5로 E2E 자동화 #shorts #SAP #UI5

Moderator · 조회 3

OPA5로 E2E 테스트 자동화하기

SAPUI5 애플리케이션은 복잡한 사용자 상호작용을 포함합니다. 매 배포마다 수동 테스트를 반복하는 것은 비효율적이며 오류 발생 위험이 높습니다. OPA5(One Page Acceptance)는 SAPUI5 전용 E2E 테스트 프레임워크로, 사용자 동작을 코드로 재현하여 배포 시마다 전체 시나리오를 자동 검증합니다.

Given/When/Then 구조

OPA5는 BDD(Behavior Driven Development) 스타일의 Given/When/Then 구조를 지원합니다. Given에서 초기 상태를 설정하고, When에서 사용자 동작을 재현하며, Then에서 결과를 검증합니다.

// QUnit 테스트 파일
oOpa.iStartMyUIComponent({
  componentConfig: { name: "my.app" }
});

oOpa.waitFor({
  id: "submitBtn",
  actions: new Press(),
  success: function(oBtn) {
    Opa5.assert.ok(true, "버튼 클릭 성공");
  }
});

oOpa.iTeardownMyApp();

Page Object 패턴

Page Object 패턴은 화면별 동작을 클래스로 캡슐화합니다. 화면 구조가 변경되더라도 Page Object 파일 한 곳만 수정하면 모든 테스트에 반영됩니다.

Opa5.createPageObjects({
  onTheListPage: {
    actions: {
      iPressTheAddButton: function() {
        return this.waitFor({
          id: "addBtn",
          actions: new Press()
        });
      }
    },
    assertions: {
      iShouldSeeTheList: function() {
        return this.waitFor({
          id: "itemList",
          success: function(oList) {
            Opa5.assert.ok(oList, "리스트 표시됨");
          }
        });
      }
    }
  }
});

waitFor 활용 — 비동기 UI 처리

OPA5의 waitFor는 폴링 방식으로 UI 요소가 준비될 때까지 대기합니다. OData 요청 응답 후 화면이 갱신되는 경우도 안정적으로 처리할 수 있습니다.

this.waitFor({
  controlType: "sap.m.List",
  matchers: new AggregationLengthEquals({
    name: "items",
    length: 5
  }),
  success: function(aLists) {
    Opa5.assert.ok(true, "5개 항목 로드 완료");
  },
  errorMessage: "리스트 로드 실패"
});

QUnit Runner 설정

OPA5 테스트는 QUnit Runner를 통해 브라우저 또는 CI/CD 파이프라인에서 실행됩니다. karma-ui5 플러그인을 사용하면 Jest처럼 자동화된 환경에서 실행할 수 있습니다.

핵심 한 줄

OPA5의 Given/When/Then + Page Object 패턴으로 배포마다 반복되는 수동 E2E 테스트를 완전히 자동화하세요.