3. e2e

jest ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ,

์ด๋ฒˆ ๊ณผ์ œ์—” codecept๋ฅผ ์ด์šฉํ•œ e2e test๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค.

E2E Test๋ž€(End To End Test)

E2E Test๋Š” ์ข…๋‹จ(Endpoint) ๊ฐ„ ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๋ณดํ†ต Web, App ๋“ฑ์—์„œ GUI๋ฅผ ํ†ตํ•ด์„œ ์‹œ๋‚˜๋ฆฌ์˜ค, ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘ ๋…ธ์ถœ๋˜๋Š” ๋ถ€๋ถ„์„ ์ ๊ฒ€ํ•œ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋Š” ์›ํ•˜๋Š” Text๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค๋Š”์ง€, A๋ฅผ ํด๋ฆญํ–ˆ์„๋•Œ ๊ธฐ๋Œ€ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๋Š”์ง€ ๋“ฑ ์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

์™œ E2E ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š”๊ฐ€

1. qa๊ฐ€ ์ œํ’ˆ ๊ด€๋ฆฌ๋ฅผ ์ž˜ํ•  ์ˆ˜ ์žˆ์Œ

qa์—์„œ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์ง€๋งŒ ๋‹จ์ˆœ ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ญ์ƒ ์ง„ํ–‰ํ•˜๋Š”๊ฒƒ์€ ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค.

์ด๋Ÿฐ ์˜์—ญ๋“ค์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ์ž์˜ ๋™์ž‘์„ ๋ชจ์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ž…์žฅ์˜ workflow์™€ laytency๋ฅผ ์ธก์ •ํ•˜๊ณ  ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ณต์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๋ผ๋ฉด E2E ํ…Œ์ŠคํŠธ๋งŒ

์ข…๋‹จ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ๊ธฐ๋Šฅ์ด ์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ, ์ข…๋‹จ์—์„œ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„์งœ ๋ฌธ์ œ.

E2E Test Framework

์‹ค์Šต์— ์„ธํŒ…๋œ codecept๋ง๊ณ ๋„ Selenium, Cypress, TestCafe ๋“ฑ์ด ์žˆ๋‹ค.

์‹ค์Šต test code

Feature('Home');

Scenario('Visit the home page', ({ I }) => {
  I.amOnPage('/');

  I.see('Hello, wholeman!');

  I.seeElement('//img[@alt="Test Image"]');
});

Scenario('Counter test', ({ I }) => {
  I.amOnPage('/');

  I.see('Count: 0');

  I.click('+1');

  I.see('Count: 1');

  I.click('+2');

  I.see('Count: 3');

  I.click('+4');

  I.see('Count: 7');

  I.click('+5');

  I.see('Count: 12');

  I.click('+3');

  I.see('Count: 15');
});

์ด๋Ÿฐ์‹์œผ๋กœ user scenario๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

Last updated