Slide 1

Slide 1 text

ୈ10ճ ࣗಈςετ Drupal Ϟδϡʔϧ ։ൃೖ໳ߨ࠲

Slide 2

Slide 2 text

Drupal Ϟδϡʔϧ։ൃೖ໳ߨ࠲γϦʔζ – DrupalͰ͸ʮϞδϡʔϧʯͱݺ͹ΕΔɺখ͞ͳιϑτ΢ΣΞΛ࣮૷͢Δ͜ͱͰػೳ֦ுΛߦ ͍·͢ɻຊ΢ΣϏφʔγϦʔζͰ͸ɺDrupalͷϞδϡʔϧ։ൃʹؔ͢Δجૅ஌ࣝΛղઆ͠· ͢ɻ – DrupalͷόοΫΤϯυपΓʹ͍ͭͯମܥతʹֶͼ͍ͨํɺࣗ෼ͰΧελϜϞδϡʔϧΛ࡞Ε ΔΑ͏ʹͳΓ͍ͨํɺΞΫΠΞೝఆσϕϩούʔࢼݧΛ໨ࢦ͢ํʹ͓͢͢ΊͰ͢ɻ – DrupalΛҰ௨Γૢ࡞ͨ͜͠ͱ͕͋ΔํΛର৅ͱ͍ͯ͠·͢ɻ·ͩDrupalΛ৮ͬͨ͜ͱ͕ແ͍ ํ͸ɺॳ৺ऀ޲͚DrupalνϡʔτϦΞϧಈըʢ೔ຊޠʣΛઌʹݟ͓ͯ͘ͱΑΓཧղ͕ਂ·Γ ·͢ɻ

Slide 3

Slide 3 text

ΞδΣϯμ 1. Drupalͷࣗಈςετͱ͸ 2. PHPUnitͷಋೖํ๏ 3. ςετͷ࣮ߦํ๏ 4. ςετͷॻ͖ํ 5. ࿅श໰୊

Slide 4

Slide 4 text

Drupalͷࣗಈςετͱ͸

Slide 5

Slide 5 text

ιϑτ΢ΣΞͷςετ ιϑτ΢ΣΞςετ (ӳ: software testing) ͸ɺίϯϐϡʔλͷϓ ϩάϥϜ͔Β࢓༷ʹͳ͍ৼ෣·ͨ͸ܽؕʢόάʣΛݟ͚ͭग़͢ ࡞ۀͷ͜ͱͰ͋Δ https://ja.wikipedia.org/wiki/ιϑτ΢ΣΞςετ - Wikipedia

Slide 6

Slide 6 text

Ұൠతͳιϑτ΢ΣΞςετͷςετϨϕϧ – ୯ମςετɿϓϩάϥϜͷߏ੒ཁૉͰ͋ΔΫϥε΍ؔ਺ͳͲͷ୯ҐͰಈ࡞Λ ֬ೝ͢ΔͨΊͷςετɻϢχοτςετɺίϯϙʔωϯτςετͱ΋ݺ͹Ε Δɻ – ౷߹ςετɿݸʑͷιϑτ΢ΣΞϞδϡʔϧΛ૊Έ߹Θͤͯू߹ମͱͯ͠ಈ ࡞Λ֬ೝ͢ΔͨΊͷςετɻ݁߹ςετͱ΋ݺ͹ΕΔɻ – γεςϜςετɿΞϓϦέʔγϣϯશମ·ͨ͸γεςϜશମͷಈ࡞ΛΤϯυ πʔΤϯυͰਫ਼ࠪ͢ΔͨΊͷςετɻE2Eςετͱ΋ݺ͹ΕΔɻ – डೖςετɿಛఆͷ੡඼·ͨ͸ػೳ͕ɺސ٬·ͨ͸੡඼ϚωʔδϟʔͳͲͷ ಺෦ར֐ؔ܎ऀʹΑͬͯઃఆ͞Εͨ࢓༷ʹैͬͯ։ൃ͞Εͨ͜ͱΛ֬ೝ͢Δ ͨΊͷςετɻ खಈͰςετ͢Δ ͷ͸େมɾɾͦ͜ ͰࣗಈԽʂ https://en.wikipedia.org/wiki/Software_testing#Testing_levels

Slide 7

Slide 7 text

Drupalͷࣗಈςετ – ػೳ௥ՃɺվमɺDrupalΞοϓσʔτͰίʔυʹมߋ͕͋ͬͨࡍʹɺࣗಈς ετΛ௨ͯ͡ιϑτ΢ΣΞͷৼΔ෣͍ΛݕࠪͰ͖·͢ɻ – DrupalͰ͸ɺPHPUnitͱ͍͏ςετϑϨʔϜϫʔΫΛαϙʔτ͍ͯ͠·͢ɻ ͜ΕʹΑͬͯPHPϕʔεͷςετΛࣗಈԽͰ͖·͢ɻ – PHPUnitͰ͸ςετͷ࣮ߦɺςετ݁Ռͷग़ྗɺίʔυΧόϨοδղੳͳͲ ͕Ͱ͖·͢ɻ – CI/CDπʔϧͱ૊Έ߹ΘͤΔ͜ͱͰɺίʔυมߋΛߦ͏౓ʹࣗಈతʹςετ ࣮ߦΛߦ͏͜ͱ͕Ͱ͖·͢ɻ

Slide 8

Slide 8 text

DrupalͷςετεΠʔτ ςετͷ໨తʹԠͯ͡5छྨͷςετεΠʔτ͕༻ҙ͞Ε͍ͯ·͢ɻ͜ΕΒ͸ PHPUnitϕʔεʹهड़͞Ε͍ͯ·͢ɻ – UnitɿDB΍ߏ੒σʔλΛ࢖Θͣ(ϞοΫͰରԠՄೳ)ɺΫϥε΍ؔ਺୯Ґ ͰςετΛߦ͏ɻ – KernelɿDB΍ߏ੒σʔλΛ࢖͏͕Webϒϥ΢β͸ෆཁͳςετΛߦ͏ɻ – FunctionalɿWebϒϥ΢βΛ࢖༻ͨ͠ςετΛߦ͏ɻ – FunctionalJavaScriptɿWebϒϥ΢βͱJavaScriptΛ࢖༻ͨ͠ςετΛߦ ͏ɻ – BuildɿϏϧυϓϩηεͱͦͷ݁Ռʹରͯ͠ςετΛߦ͏ɻ https://api.drupal.org/api/drupal/core%21core.api.php/group/testing/9 ୯ମςετɺ౷߹ ςετɺγεςϜ ςετΛΧόʔ

Slide 9

Slide 9 text

Drupalͷࣗಈςετͱ͸ ·ͱΊ – ιϑτ΢ΣΞΛςετ͢Δ্Ͱɺࣗಈςετ͕͋Δ͜ͱʹΑͬͯػೳ ௥ՃɺվमɺDrupalΞοϓσʔτͰίʔυʹมߋ͕͋Δ౓ʹιϑτ ΢ΣΞͷৼΔ෣͍ΛݕࠪͰ͖·͢ɻ – DrupalͰ͸ɺPHPUnitͱ͍͏ςετϑϨʔϜϫʔΫΛαϙʔτ͓ͯ͠ ΓɺPHPϕʔεͷςετΛࣗಈԽͰ͖·͢ɻ – Drupalʹ͸ςετͷ໨తʹԠͯ͡5छྨͷςετεΠʔτ͕༻ҙ͞Εͯ ͓Γɺ୯ମςετɺ౷߹ςετɺγεςϜ/ػೳςετͷ࣮ࢪΛαϙʔ τ͍ͯ͠·͢ɻ

Slide 10

Slide 10 text

PHPUnitͷಋೖํ๏

Slide 11

Slide 11 text

– PHPUnit͸drupal/core-devύοέʔδʹؚ·Ε͍ͯΔͷͰɺcomposerίϚϯυͰΠϯετʔϧ ͠·͢ɻ 
 $ composer require drupal/core-dev --dev --update-with-all-dependencies 
 
 
 
 
 
 – PHPUnit͕ΠϯετʔϧͰ͖ͨΒɺphpunitίϚϯυ͕࢖͑ΔΑ͏ʹͳΓ·͢ɻ 
 $ ./vendor/bin/phpunit --version PHPUnitͷΠϯετʔϧ ※1 PHPUnitΛ࢖༻͢Δʹ͸Composer͕ඞཁͰ͢ɻ ※2 --devΦϓγϣϯΛ෇͚ͯΠϯετʔϧ͠·͢ɻ ※3 DrupalϓϩδΣΫτ͕࠷৽Ͱͳ͍৔߹͸ɺ࢖༻͍ͯ͠ΔDrupalόʔδϣϯΛࢦఆͯ͠Πϯ ετʔϧ͠·͢ɻྫɿ ‘drupal/core-dev:^9.4’

Slide 12

Slide 12 text

PHPUnitͷઃఆϑΝΠϧΛ༻ҙ͢Δ – phpunit.xml (΋͘͠͸phpunit.xml.dist)ͱ͍͏ϑΝΠϧΛɺϓϩδΣΫτσΟϨΫτϦ ௚Լʹ഑ஔ͠·͢ɻ/web/core/phpunit.xml.dist Λίϐʔͯ࣋ͬͯ͘͠ΔͱָͰ͢ɻ 
 $ cp web/core/phpunit.xml.dist phpunit.xml 
 – ϑΝΠϧͷத਎Λ͍͔ͭ͘मਖ਼͠·͢ɻ – bootstrapͷ஋ɿύεΛमਖ਼͢Δ – SIMPLETEST_DBͷ஋ɿKernelςετ΍FunctionalςετͰඞཁ – SIMPLETEST_BASE_URLͷ஋ɿFunctionalςετͰඞཁ – ͦͷଞɿద੾Ͱͳ͍ύεΛमਖ਼͢Δ

Slide 13

Slide 13 text

ઃఆϑΝΠϧͷมߋՕॴྫ https://github.com/hmaruyama/my-drupal9- module/commit/044fabfd2475

Slide 14

Slide 14 text

ࢀߟ) LandoͰDrupal؀ڥΛ༻ҙ͍ͯ͠Δ৔߹ – LandoͷDrupalϨγϐΛ࢖༻ͯ͠Drupal؀ڥΛ༻ҙ͍ͯ͠Δ৔߹͸ɺ࣍ͷίϚϯυ ͰphpunitίϚϯυΛ࣮ߦͰ͖·͢ɻ 
 $ lando php /app/vendor/bin/phpunit --version 
 – ·ͨ͸ɺ.lando.ymlʹ 
 
 
 
 
 
 ͷΑ͏ʹઃఆ͢Δ͜ͱͰɺಠࣗͷίϚϯυΛఏڙͰ͖·͢ɻ 
 $ lando phpunit --version tooling: phpunit: service: appserver cmd: - appserver: php /app/vendor/bin/phpunit -c /app/phpunit.xml

Slide 15

Slide 15 text

ςετͷ࣮ߦํ๏

Slide 16

Slide 16 text

ςετΛ࣮ߦ͢Δ – ςετͷ࣮ߦ͸phpunitίϚϯυͰߦ͏͜ͱ͕Ͱ͖·͢ɻ 
 
 $ ./vendor/bin/phpunit -c {ઃఆϑΝΠϧ} {ର৅ͷςετϑΝΠϧ/σΟϨΫ τϦ}

Slide 17

Slide 17 text

– DrupalίΞΛؚΉશͯͷςετΛ࣮ߦ 
 $ ./vendor/bin/phpunit -c phpunit.xml 
 – ಛఆͷσΟϨΫτϦ಺ͷςετΛ࣮ߦ 
 $ ./vendor/bin/phpunit -c phpunit.xml web/core/modules/system/tests/src/Kernel 
 – ಛఆͷςετϑΝΠϧ಺ͷςετΛ࣮ߦ 
 $ ./vendor/bin/phpunit -c phpunit.xml web/core/modules/system/tests/src/Unit/ Breadcrumbs/PathBasedBreadcrumbBuilderTest.php ͞·͟·ͳ࣮ߦํ๏

Slide 18

Slide 18 text

– ಛఆͷςετεΠʔτͷςετΛ࣮ߦ͢Δ 
 $ ./vendor/bin/phpunit -c phpunit.xml --testsuite unit 
 – ಛఆͷάϧʔϓͷςετΛ࣮ߦ͢Δ 
 $ ./vendor/bin/phpunit -c phpunit.xml --group views 
 – ςετର৅ͷҰཡΛग़ྗ͢Δ $ ./vendor/bin/phpunit -c phpunit.xml --list-tests ͞·͟·ͳ࣮ߦํ๏

Slide 19

Slide 19 text

DrupalίΞʹଘࡏ͢Δ͞·͟·ͳςετΛ࣮ߦͯ͠ΈΑ͏ʂ 1. ಛఆͷσΟϨΫτϦ಺ͷςετ 2. ಛఆͷςετεΠʔτͷςετ 3. ͳͲ ԋश

Slide 20

Slide 20 text

ςετͷॻ͖ํ

Slide 21

Slide 21 text

ΧελϜϞδϡʔϧͷςετΛॻ͍ͯΈΑ͏ʂ – DrupalίΞͰߦΘΕ͍ͯΔΑ͏ʹɺΧελϜϞδϡʔϧͰ΋ςε τίʔυΛ഑ஔ͠ɺࣗಈςετΛ࣮ࢪ͢Δ͜ͱ͕Ͱ͖·͢ɻ – ςετίʔυͷॻ͖ํ͸جຊతʹPHPUnitͷ࢓༷ʹج͖ͮ·͢ɻ

Slide 22

Slide 22 text

ςετϑΝΠϧ࡞੒ʹؔ͢Δϧʔϧ – ςετϑΝΠϧ͸ 
 {yourmodule}/tests/src/{testsuite}/xxTest.php 
 ͷ໋໊نଇʹै͍·͢ɻ 
 ྫɿmarucha/tests/src/Unit/Controller/MaruchaControllerTest.php – ςετΫϥεͷ໊લۭؒ͸࣍ͷΑ͏ʹͳΓ·͢ɻ 
 Drupal\Tests\{yourmodule}\{testsuite}\xxTest 
 ྫɿDrupal\Tests\marucha\Unit\Controller\MaruchaControllerTest – ςετΫϥε͸࢖༻͢ΔςετεΠʔτ͕༻ҙ͢ΔجఈΫϥεΛ֦ு͠·͢ɻ – ςετϝιου͸ɺtest͔Β࢝·Δpublicϝιουʹهड़͠·͢ɻ – docblockͰςετʹؔ͢Δ৘ใΛదٓهࡌ͠·͢ɻ

Slide 23

Slide 23 text

DrupalͷςετεΠʔτ ΧςΰϦ ໨త جఈΫϥε σΟϨΫτϦ Unit DB΍ߏ੒σʔλΛ࢖Θͣ(Ϟο ΫͰରԠՄೳ)ɺΫϥε΍ؔ਺୯ ҐͰςετΛߦ͏ɻ \Drupal\Tests\UnitTestCase yourmodule/tests/src/Unit/ Kernel DB΍ߏ੒σʔλΛ࢖͏͕Webϒ ϥ΢β͸ෆཁͳςετΛߦ͏ɻ \Drupal\KernelTests\KernelTestBase yourmodule/tests/src/Kernel/ Functional Webϒϥ΢βΛ࢖༻ͨ͠ςετ Λߦ͏ɻ \Drupal\Tests\BrowserTestBase yourmodule/tests/src/Functional/ FunctionalJavaScript Webϒϥ΢βͱJavaScriptΛ࢖ ༻ͨ͠ςετΛߦ͏ɻ \Drupal\FunctinalJavaScriptTests\We bDriverTestBase yourmodule/tests/src/ FunctionalJavaScript/ Build Ϗϧυϓϩηεͱͦͷ݁Ռʹର ͯ͠ςετΛߦ͏ɻ \Drupal\BuildTests\Framework\BuildT estBase yourmodule/tests/src/Build/ https://api.drupal.org/api/drupal/core%21core.api.php/group/testing/9

Slide 24

Slide 24 text

ԋश ΧελϜϞδϡʔϧͰςετίʔυ(Unitςετ)Λॻ͍ͯΈΑ͏ʂ 1. ϞδϡʔϧσΟϨΫτϦʹ tests/src/Unit/Controller/ MaruchaController.php ϑΝΠϧΛ࡞੒͢Δ 2. ςετΛ࣮ߦࣦͯ͠ഊ͢Δ͜ͱΛ֬ೝ͢Δ 3. ςετ͕௨ΔΑ͏ʹ࣮૷͢Δ ίʔυ͸ͪ͜Β→ https://github.com/hmaruyama/my-drupal9-module/compare/vol10

Slide 25

Slide 25 text

࿅श໰୊

Slide 26

Slide 26 text

࿅श໰୊1 Drupalͷࣗಈςετ͸ɺ࣍ͷͲͷςετϑϨʔϜϫʔΫ͕࢖༻͞Ε͍ͯ·͢ ͔ʁ 1. RSpec 2. PHPSpec 3. PHPUnit 4. Twig

Slide 27

Slide 27 text

࿅श໰୊1 Drupalͷࣗಈςετ͸ɺ࣍ͷͲͷςετϑϨʔϜϫʔΫ͕࢖༻͞Ε͍ͯ·͢ ͔ʁ 1. RSpec 2. PHPSpec 3. PHPUnit 4. Twig

Slide 28

Slide 28 text

࿅श໰୊2 DrupalͰ༻ҙ͞Ε͍ͯΔPHPUnitϕʔεͷςετεΠʔτ͸ͲΕͰ͔͢ʁʢ3ͭબ ୒͍ͯͩ͘͠͞ɻʣ 1. Kernel 2. Deploy 3. Build 4. Application 5. Unit

Slide 29

Slide 29 text

࿅श໰୊2 DrupalͰ༻ҙ͞Ε͍ͯΔPHPUnitϕʔεͷςετεΠʔτ͸ͲΕͰ͔͢ʁʢ3ͭ બ୒͍ͯͩ͘͠͞ɻʣ 1. Kernel 2. Deploy 3. Build 4. Application 5. Unit

Slide 30

Slide 30 text

࿅श໰୊3 ςετΫϥε(marucha/tests/src/Functional/Form\MaruchaForm.php)ͷ໊લۭؒͱ ͯ͠ਖ਼͍͠΋ͷΛબ୒͍ͯͩ͘͠͞ɻ 1. \Drupal\marucha\Tests\Functional\Form\MaruchaForm 2. \Drupal\Tests\marucha\Functional\Form\MaruchaForm 3. \Drupal\marucha\Test\Functional\Form\MaruchaForm 4. \Drupal\Test\marucha\Functional\Form\MaruchaForm

Slide 31

Slide 31 text

࿅श໰୊3 ςετΫϥε(marucha/tests/src/Functional/Form\MaruchaForm.php)ͷ໊લۭؒͱ ͯ͠ਖ਼͍͠΋ͷΛબ୒͍ͯͩ͘͠͞ɻ 1. \Drupal\marucha\Tests\Functional\Form\MaruchaForm 2. \Drupal\Tests\marucha\Functional\Form\MaruchaForm 3. \Drupal\marucha\Test\Functional\Form\MaruchaForm 4. \Drupal\Test\marucha\Functional\Form\MaruchaForm

Slide 32

Slide 32 text

ຊ೔ͷΞδΣϯμ͸ऴྃ

Slide 33

Slide 33 text

ΞδΣϯμ 1. Drupalͷࣗಈςετͱ͸ 2. PHPUnitͷಋೖํ๏ 3. ςετͷ࣮ߦํ๏ 4. ςετͷॻ͖ํ 5. ࿅श໰୊

Slide 34

Slide 34 text

Drupal Ϟδϡʔϧ։ൃೖ໳ߨ࠲γϦʔζ 1. Ϟδϡʔϧͷجૅ஌ࣝ 2. γϯϓϧͳΧελϜϞδϡʔϧΛ࡞ͬͯΈΑ͏ 3. ϑοΫ 4. ϑΥʔϜ 5. αʔϏε 6. Πϕϯτ 7. ϓϥάΠϯ 8. ΤϯςΟςΟ 9. ߏ੒ 10. ࣗಈςετ https://www.youtube.com/playlist?list=PLVkpj3GMKNm2n_u-gOCBhDtqXTDxwhqjM

Slide 35

Slide 35 text

– Ξϯέʔτͷ͝ڠྗΑΖ͓͘͠ئ͍͠·͢ʂ 
 ʢ΢ΣϏφʔऴྃޙʹURL͕ڞ༗͞Ε·͢ʣ – ࣍ճͷ์ૹ͸ͪ͜Β 
 3/1(ਫ) ΞΫΠΞೝఆCloud Platform Proͬͯ 
 ͲΜͳࢼݧʁపఈղઆ΢ΣϏφʔ https://www.acquia.com/jp/events/webinars/acquia-certified-cloud-platform-pro-introduction ࠷ޙʹ

Slide 36

Slide 36 text

No content