Session 403
๐ What's New in Testing - WWDC 2018 - Videos - Apple Developer
- Xcode 9.3
- Performance and accuray ํฅ์ Xcode 9 ๋ณด๋ค 95% ๋นจ๋ผ์ง. File Size๋ 10๋ฐฐ ๊ฐ์.
- Target selection third-party dependencies, ์ด๋ฏธ ํ ์คํธ ๋ framework๊ฐ ์์ ๋ ํ๊ฒ ์กฐ์ ๊ฐ๋ฅ
-
xccov Command line tool, Human-readable, View coverage data
Coverage data
- Derived data์ ์กด์ฌ
xcodebuild -resultBundlePath ...
flag๊ฐ ์๋ค๋ฉด Result Bundle์๋ ํฌํจ
-
Source editor
Xcode10 New
- Automatically include new test ํ ์คํธ ์๋ก ์์ฑํ๋ฉด ์๋์ผ๋ก ํฌํจ ์์ผ์ค
- ์๋ ํ ์คํธ ์์๋ ์ํ๋ฒณ ์์๊ฐ ๋ํดํธ์ธ๋ฐ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค โ Randomize execution order ์ฒดํฌ ํ๋ฉด ๋๋ค์ผ๋ก ์์๋ฅผ ๋ฐ๊ฟ์ค๋ค
xcodebuild test
-destination โplatform=iOS,name=iPhone Xโ
-destination โplatform=iOS,name=iPadโ
Xcode9์์ ์๊ฐ๋, ๋ชจ๋ ํ ์คํธ๋ฅผ ๋์์ ์ฌ๋ฌ ๊ฐ์ destination์์ ๋๋ฆฌ๋ ๊ธฐ๋ฅ ๊ทธ ์ ์๋ iPhone X์์ ํ ์คํธ๋ฅผ ํ๊ณ ์ข ๋ฃ ํ๋ฉด iPad๋ฅผ ํ๋ ์. Xcode9์์ ํ ์คํธ๊ฐ ๋์์ ์งํ ๋ ์ ์๊ฒ ํจ. ์คํ ์๊ฐ์ ๊ฐ์์ํด. ํ์ง๋ง ์ ์ฝ์ด ์์๋ค.
- ์ฌ๋ฌ๊ฐ์ destination์์ ํ ์คํธํ ๋๋ง ์ ์ตํจ
- xcodebuild์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
- ํ๋์ destination์ ๋ณ๋ ฌ๋ก ํ ์คํธ ์คํ
- xcodebuild, XCode์์ ์ฌ์ฉ ๊ฐ๋ฅ
Unit tests
- Unit test๋ test bundle๋ก ์ปดํ์ผ ๋๋ค
- ๋ฐํ์์, Xcode๋ ํ ์คํธ runner๋ก ์ทจ๊ธ๋๋ ์ฑ์ ์ธ์คํด์ค๋ฅผ ์คํ์ํจ๋ค
- runner๋ test bundle์ loadํ๊ณ ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๋ค
UI Test
- test bundle๋ก ์ปดํ์ผ ๋๋ค
- ํ์ง๋ง ์ด ๋ฒ๋ค์ Xcode๊ฐ ์์ฑํ๋ custom app์ ์ํด load ๋๋ค
- ์ฑ์ด ๋์ด์ ํ ์คํธ๋ฅผ ์คํ ํ๋๊ฒ ์๋๋ผ,
- ํ ์คํธ๊ฐ ์ฑ์ ์คํ์ํค๊ณ ๋ค๋ฅธ UI ํํธ์ ์ํธ์์ฉ ํ๋ฉด์ ์ฑ์ ์๋ํํ๋ค
Parallel Distributed Testing
- ๊ทธ์ ์ฒ๋ผ Xcode๊ฐ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด test runner๋ฅผ ๋ฐ์นญํ๋ค
- ํ์ง๋ง ์ฌ๋ฌ๊ฐ์ test runner๋ค์ ์คํ์ํจ๋ค
- ๊ฐ๊ฐ ํ ์คํธ subset์ ์คํ์ํจ๋ค
- ๊ธฐ๊ณ๋ฅผ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํด Xcode๋ test ruuner์๊ฒ ๋์ ์ผ๋ก ํ ์คํธ๋ฅผ ๋ถ๋ฐฐํ๋ค
- ๊ฐ๊ฐ์ runnere๋ค์ ํ ์คํธ ํด๋์ค๋ฅผ ๋ถ๋ฐฐ ๋ฐ๋๋ค
- ๋ชจ๋ ํ ์คํธ ํด๋์ค๊ฐ ๋๋ฌ์ ๋ ํ ์คํธ๊ฐ ๋๋๋ค
์ ํ ์คํธ๋ฅผ ๊ฐ๊ฐ์ ํ ์คํธ ๋ฉ์๋ ๋จ์๋ก ๋๋๋๊ฒ ์๋๋ผ ํ ์คํธ ํด๋์ค๋ก ๋ถ๋ฐฐํ ๊น?
- ํด๋์ค์ ํ ์คํธ๋ค ์ฌ์ด์ ์์กด์ฑ์ ์จ๊ธฐ๊ธฐ ์ํด
- ๊ฐ๊ฐ์ ํ
์คํธ ํด๋์ค์๋ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ํด๋์ค ๋ ๋ฒจ์
setUp
๊ณผtearDown
๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์. ํ๋์ runner์ ํ ์คํธ ํด๋์ค๋ก ์ ํ ํจ์ผ๋ก์จ XE test๋ ์ด ๋ฉ์๋๋ค์ ํ๋ฒ๋ง ํธ์ถ ํ๋ฉด ๋๋ค.
์๋ฎฌ๋ ์ดํฐ์์ Parellel Test๋ฅผ ์คํํ๋ฉด, Xcode ๋ ๋ด๊ฐ ์ ํํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์์ํ๊ณ
์ฌ๋ฌ ๊ฐ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ฑฐ๋ cloneํ๋ค. ์ด ๋ณต์ฌ๋ณธ๋ค์ ์๋ณธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฒ๊ณผ ๋์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ Xcode๋ ํ์ํ๋ค๋ฉด ์๋์ผ๋ก ์ด ๋ณต์ฌ๋ณธ์ ์์ฑํ๊ฑฐ๋ ์ญ์ ํ ๊ฒ์ด๋ค.
์๋ฎฌ๋ ์ดํฐ์ ๋ช์ฐจ๋ก ๋ณต์ฌ ํ ํ, Xcode๋ ๊ฐ๊ฐ์ ๋ณต์ฌ๋ณธ์์ test runner๋ฅผ ์คํ์ํค๊ณ , runner๋ ํ ์คํธ ํด๋์ค๋ฅผ ์คํํ๊ธฐ ์์ํ๋ค.
Implications
- ์๋ณธ ์๋ฎฌ๋ ์ดํฐ๋ ํ ์คํธ ๋์์ ์ฌ์ฉ ๋์ง ์๋๋ค
- ์ฑ์ ๋ณต์ฌ๋ณธ์ด ์ฌ๋ฌ ๊ฐ๊ฐ ์๋ค. ๊ฐ๊ฐ์ ๋ณต์ฌ๋ณธ์ ๊ณ ์ ์ data container์ ๊ฐ์ง๊ณ ์๋ค. ๋์คํฌ์์ ํ์ผ์ ์์ ํ๋ ํ ์คํธ ํด๋์ค๊ฐ ์์ ๋, ์์ ํ ๋ถ๋ฆฌ๋ data container์ ์ ๊ทผ ํ๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ํ ์คํธ ํด๋์ค์์ ํ์ผ ์์ ์ ๋ณผ ์ ์๋ค
- ์ค๋ ๊ฑธ๋ฆฌ๋ ํด๋์ค๋ฅผ ๋ ํด๋์ค๋ก ๋๋๋ ๊ฒ์ ๊ณ ๋ คํด๋ผ
- parallelization์ด disabled๋ ์ํ์์, bundle์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ผ
- ์ด๋ค ํ ์คํธ๋ค์ด prallelization์ ์์ ํ์ง ์์์ง ์ดํดํ๋ผ