[Jest + POM] ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•œ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง
ยท
๐Ÿ“‚ Quality Assurance Study/๐Ÿ“„ QA ๊ณต๋ถ€
๐Ÿ“Œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐVSCode/ โ”œโ”€โ”€ JavaScript_Prac/ โ”‚ โ”œโ”€โ”€ LoginPage.js โ”‚ โ””โ”€โ”€ LoginPage.test.js โ”œโ”€โ”€ package.json โฌ‡๏ธ LoginPage.js๋”๋ณด๊ธฐconst { By } = require('selenium-webdriver');class LoginPage { constructor(driver) { this.driver = driver; this.emailInput = By.id("email"); this.pwdInput = By.id("password"); }; async getElement(el) { return await this.driver.findElement(el); } asy..
Unity์—์„œ์˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋ฐ Jira ์ด์Šˆ ๋“ฑ๋ก ์ž๋™ํ™”
ยท
๐Ÿ“‚ Quality Assurance Study/๐Ÿ“„ QA ๊ณต๋ถ€
๐Ÿ“Œ Unity Script vs Test Scriptํ•ญ๋ชฉ์ผ๋ฐ˜์ ์ธ Unity Script (MonoBehaviour)Test Script (NUnit)๋™์ž‘ ๋ฐฉ์‹GameObject์˜ Component๋กœ ์ถ”๊ฐ€๋˜์–ด์•ผ ์‹คํ–‰๋จTest Runner๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹คํ–‰ ์‹œ์ Unity์˜ Start(), Update() ๋“ฑ์—์„œ ํ˜ธ์ถœ๋จTest Runner๊ฐ€ SetUp(), Test() ๋“ฑ์„ ํ˜ธ์ถœUnity Scene ํ•„์š” ์—ฌ๋ถ€ํ•„์š” O (Scene์—์„œ ์‹คํ–‰๋จ)ํ•„์š” X (GameObject ์—†์ด๋„ ๋™์ž‘ ๊ฐ€๋Šฅ) + ์ถ”๊ฐ€ ์ง€์‹Test Runner ~> Unity์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” Test Runner ๋„๊ตฌ ์‚ฌ์šฉ ~> [ Window ] > [ General ] > [ Test Runner ] ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ ๐Ÿ“Œ Un..
Jira REST API ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์ด์Šˆ ์กฐํšŒ
ยท
๐Ÿ“‚ Quality Assurance Study/๐Ÿ“„ QA ๊ณต๋ถ€
๐Ÿ“Œ ๋ฌธ์ œ ์ƒํ™ฉ ์šฐ๋ฆฌ ์Šคํ„ฐ๋””์—์„œ๋Š” ์ฃผ์ฐจ๋ณ„๋กœ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๊ฐ ์ฃผ์ฐจ์— ๋งž๋Š” ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ์ผ์ •์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 1์ฃผ์ฐจ์— ํ•ด๋‹นํ•˜๋Š” ์ด์Šˆ๋“ค์€ '1์ฃผ์ฐจ' ์—ํ”ฝ์—, 2์ฃผ์ฐจ์— ํ•ด๋‹นํ•˜๋Š” ์ด์Šˆ๋“ค์€ '2์ฃผ์ฐจ' ์—ํ”ฝ์— ํ• ๋‹น๋œ๋‹ค. Confluence ๋ฌธ์„œ์— Jira์˜ ํŠน์ • ์ด์Šˆ๋ฅผ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ ํŠน์ • ์—ํ”ฝ์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์—†์–ด, ๋ชจ๋“  ์ฃผ์ฐจ์˜ ์ด์Šˆ๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ๋ถˆ๋Ÿฌ์™€์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด๋Š” JQL์—์„œ and parent = "์—ํ”ฝ ํ‚ค" ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (์ž์„ธํ•œ ๋‚ด์šฉ์€ [๋„๊ตฌ #1] Jira ๋ฐ Confluence ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๊ธ€์˜ "๐Ÿ“Œ Confluence ์ฝ˜ํ…์ธ  ์ƒ์„ฑ (jira ์ด์Šˆ ์—ฐ๋™)" ์ฐธ๊ณ ) ์œ„๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ, ์ด์Šˆ ์œ ํ˜•, ์ƒํƒœ, ๋‹ด๋‹น์ž ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JQL์„ ์ˆ˜์ •ํ•˜์—ฌ ์—ํ”ฝ๊นŒ์ง€ ํ•„..
XPath์— ๋Œ€ํ•˜์—ฌ
ยท
๐Ÿ“‚ Quality Assurance Study/๐Ÿ“„ QA ๊ณต๋ถ€
๐Ÿ“Œ XPath(XML Path Language)๋ž€?XPath๋Š” XML ๋ฌธ์„œ์—์„œ ํŠน์ • ์š”์†Œ๋‚˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ์–ธ์–ด๋กœ, W3C ํ‘œ์ค€์ด๋‹ค. ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ , ํŠน์ • ๊ตฌ๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณตํžŒ๋‹ค. ์›๋ž˜๋Š” XML ๋ฌธ์„œ ๋‚ด์˜ ํ•ญ๋ชฉ์„ ๋ฐฐ์น˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์ง€๋งŒ, ์ „๋ฐ˜์ ์œผ๋กœ ๋งˆํฌ์—… ์–ธ์–ด(Markup Language)๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ HTML๊ณผ ๊ฐ™์€ ๋งˆํฌ์—… ์–ธ์–ด์—์„œ๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. + ์ถ”๊ฐ€ ์ง€์‹Markup Language ~> ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ํ‘œ์‹œํ•˜๋Š” ์–ธ์–ด (์˜ˆ: HTML, XML ๋“ฑ) ~> ํŠน์ง• โ€ข ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ โ€ข ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ โ€ข ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ํ•ด..
Jira ๋ฐ Confluence ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
ยท
๐Ÿ“‚ Quality Assurance Study/๐Ÿ“„ QA ๊ณต๋ถ€
ํ˜„์žฌ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•™์Šต ๊ณ„ํš ๋ฐ ์„ฑ๊ณผ ๋ถ„์„์„ Jira์™€ Confluence๋ฅผ ํ™œ์šฉํ•ด ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ๋ณธ์ธ์ด ์Šคํ„ฐ๋””์žฅ์„ ๋งก๊ณ  ์žˆ์–ด์„œ Jira ๋ฐ Confluence๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ์ทจํ•ฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋‘ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•œ ๋ฐ๋‹ค ์‚ฌ์šฉ ๊ฐ€์ด๋“œ๋„ ์ธํ„ฐ๋„ท์ด๋‚˜ ์œ ํŠœ๋ธŒ์— ๋งŽ์ง€ ์•Š์•„์„œ ๊ทธ์•ผ๋ง๋กœ ๋งจ๋•…์— ํ—ค๋”ฉํ•˜๋ฉฐ ํ•˜๋‚˜์”ฉ ๊ธฐ๋Šฅ์„ ์ตํ˜€๊ฐ€๋Š” ์ค‘์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ˜ผ์ž ์‚ฝ์งˆํ•˜๋ฉฐ ์•Œ์•„๋‚ธ ๊ธฐ๋Šฅ๋“ค์„ ์ด ๊ธ€์— ์ •๋ฆฌํ•ด๋‘๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ๋“ค๋„ ํ‹ˆํ‹ˆ์ด ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ด๋‹ค. (๋ณธ์ธ์ด ๋ชจ๋ฅด๋Š” Jira ๋ฐ Confluence ๊ธฐ๋Šฅ์ด ์•„์ง๋„ ๋งŽ์„ ๊ฑฐ๋‹ค..) ์ €์ฒ˜๋Ÿผ ํ˜ผ์ž ํ—ค๋งค๊ณ  ์žˆ์„ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•œ๋‹ค. (๋ณธ์ธ์ด ํ•œ์ฐธ ์‚ฝ์งˆํ–ˆ๋˜ ๋ถ€๋ถ„์€ ๋นจ๊ฐ„์ƒ‰..