20年後のソフトウェアテストの話をしよう / Software Testing for 20 years later

20年後のソフトウェアテストの話をしよう / Software Testing for 20 years later

2019/08/31(土)に東京電機大学で開催されたbuilderscon tokyo 2019のセッション「20年後のソフトウェアテストの話をしよう」の発表資料
blog: http://yumulog.hatenablog.com/entry/2019/08/31/235727
Togetter: https://togetter.com/li/1397692
概要ページ: https://builderscon.io/builderscon/tokyo/2019/session/783619e0-4c45-45cb-b29a-fbff39077f43

96466365a9bf7e66990f2b9ba547b02f?s=128

Tsubasa Yumura

August 31, 2019
Tweet

Transcript

  1. 20年後のソフトウェアテストの話をしよう 湯村 翼 @yumu19 国立研究開発法人 情報通信研究機構 湯村 翼 @yumu19 国立研究開発法人 情報通信研究機構 SOFTWARE

    TESTING - What's the Right Thing to Do? ൃදࢿྉˠ http://bit.ly/bc20test 2019.08.31 14:10-15:10 ౦ژిػେֶ 100प೥ϗʔϧB #bc100b #builderscon
  2. ൃදࢿྉˠ http://bit.ly/bc20test ࣗݾ঺հ • ౬ଜ ཌྷ / @yumu19 • ࠃཱݚڀ։ൃ๏ਓ

    ৘ใ௨৴ݚڀػߏ ݚڀһ • ઐ໳ɿωοτϫʔΫɺϢϏΩλείϯϐϡʔςΟϯά etc. 2 ৘ใॲཧֶձࢽ ฤूҕһ ٕज़ॻయ7Ͱֶձࢽ൦෍ ͓͏ͪϋοΫಉ޷ձ Ϟϊͮ͘ΓܥϙουΩϟετ ඼ϞϊϥδΦ https://www.facebook.com/ groups/ouch.hack/ https://shinamonoradio.github.io/
  3. ൃදࢿྉˠ http://bit.ly/bc20test NICT 3 w ਖ਼໊ࣜশɿࠃཱݚڀ։ൃ๏ਓ৘ใ௨৴ݚڀػߏ w /BUJPOBM*OTUJUVUFPG*OGPSNBUJPOBOE$PNNVOJDBUJPOT5FDIOPMPHZ w ʮʹ͘ͱʯͰ͸ͳ͘ʮ͑͵͍͋͠ʔͯ͌ʔʯΒ͍͠ʢผʹͲͬͪͰ΋͍͍͚Ͳɾɾɾʣ

    w ૯຿লॴ؅ͷࠃཱݚڀ։ൃ๏ਓ w ೔ຊશࠃՕॴ খۚҪɺେखொɺઋ୆ɺࣛౡɺԣਢլɺੴ઒ɺژ౎ɺେࡕɺਆށɺԭ ೄ ʹڌ఺ w ແઢɺޫ௨৴ɺࣗવݴޠॲཧɺ೴৘ใɺӉ஦ఱؾɺηΩϡϦςΟɺϏοάσʔλFUD w ೔ຊඪ४࣌ΛܾΊΔ࣌ܭ͕͋Δ w ͏Δ͏ඵͷͱ͖ʹχϡʔεʹͳΔ
  4. ൃදࢿྉˠ http://bit.ly/bc20test StarBED • NICTͷηϯλʔ(ࣄۀॴ)ͷͻͱͭ • ੴ઒ݝೳඒࢢʹ͋Δੈք࠷େن໛ͷωοτϫʔΫςετϕου • ໿1000୆ͷ෺ཧϊʔυ͕Քಇ •

    ػߏ಺֎ͷݚڀऀɾ։ൃऀʹ࣮ݧ؀ڥΛఏڙ • ؅ཧɾ੍ޚπʔϧ܈Λಠࣗ։ൃ • We are hiring!!!! ݚڀ৬ & ٕज़৬ 4 ৄࡉ͸NICT΢ΣϒαΠτ>࠾༻৘ใ ͔Βʂ http://www.nict.go.jp/employment/201904.html
  5. ൃදࢿྉˠ http://bit.ly/bc20test ͸͡Ίʹ (excuse) • ຊ৬͸ωοτϫʔΫɾϢϏΩλείϯϐϡʔςΟϯάͷݚڀऀͰ͢ • ιϑτ΢ΣΞςετͷઐ໳ՈͰ͸͋Γ·ͤΜ • ίʔυ͸ॻ͖·͕͢όϦόϦͷݱ৔։ൃ͔Β͸5೥΄Ͳԕ͔ͬͯ͟·͢

    • πʔϧͷࣄྫ͕ݹ͍Մೳੑ͕͋Δ·͢ • ͥͻ࠷ۙͷΠέͯΔπʔϧ΍ࣄྫΛڭ͑ͯԼ͍͞ʂ • ࿩͢͜ͱ • 20೥ޙͷٕज़༧ଌ • (޿ٛͷ)ςετʹؔ͢Δπʔϧͷࣄྫ঺հ • Ծ૝ۭؒΛ༻͍ͨ(޿ٛͷ)ςετͷࣄྫ঺հͱऔ૊঺հ • ࿩͞ͳ͍͜ͱ • ιϑτ΢ΣΞςετͷମܥతͳ࿩ • ιϑτ΢ΣΞςετͷ໢ཏతͳ࿩ 5
  6. ൃදࢿྉˠ http://bit.ly/bc20test 20೥લͷςΫϊϩδʔ (2000೥ࠒ) 6 CC BY-SA 2.5 Photo by

    asamoto ϙέϕϧ Windows 2000 CC BY-SA 4.0 Photo by Mc681 iϞʔυܞଳ (1999ʙ) PHS (Pϝʔϧ: 1996ʙɺ PϝʔϧDX: 1999ʙ) https://www.toshiba.co.jp/about/press/1999_03/pr_j2301.htm
  7. ൃදࢿྉˠ http://bit.ly/bc20test ݱࡏͷςΫϊϩδʔ (2019೥) 7 Oculus Quest https://www.oculus.com/quest iPhone XS

    https://www.apple.com • εϚϗ͸׬શʹීٴ(10೥લʹొ৔) • ʮ΢ΣΞϥϒϧίϯϐϡʔςΟϯάʯʮϢϏΩλείϯϐϡʔςΟϯάʯ ͕࣮૷͞Ε͸͡Ίͨʢ͍ΘΏΔIoTʣ • όʔνϟϧϦΞϦςΟ (VR) • ػցֶश Fitbit Alta HR https://www.fitbit.com/jp/altahr Amazon Echo https://www.amazon.co.jp/dp/ B074B17MJ6
  8. ൃදࢿྉˠ http://bit.ly/bc20test 20೥ޙͷςΫϊϩδʔ (2040೥ࠒ) 8 ʁ

  9. ൃදࢿྉˠ http://bit.ly/bc20test ϢϏΩλείϯϐϡʔςΟϯά • Mark Weiser, “The Computer for the

    21st Century” (1991) • 21ੈلͷίϯϐϡʔςΟϯάʹ͍ͭͯॻ͔Εͨจॻ • ͍·ͷIoTɺεϚϗɺ΢ΣΞϥϒϧσόΠε౳ 9 Mark Weiser, The Computer for the 21st Century (1991)
  10. ൃදࢿྉˠ http://bit.ly/bc20test ίϯςΩετΞ΢ΣΞ • Context-Aware (System / Application / etc.)

    • ೔ຊޠʹ௚͢ͱʮঢ়گΛߟྀͨ͠ (γεςϜ/ΞϓϦέʔγϣϯ)ʯ • “Context-Aware”ͱ͍͏୯ޠͷॳग़͸Schilit and Theimer(1994), "Disseminating active map information to mobile hosts” • Mark WeiserͷUbicomp࿦จ(1991)ͷ3೥ޙ • Xerox Palo Altoݚڀॴ • ࠷΋༗໊ͳ࿦จͷͻͱ͕ͭA.K.Dey(2001), “Understanding and Using Context” 10 Software Context
  11. ൃදࢿྉˠ http://bit.ly/bc20test ίϯςΩετͷཁૉͷྫ • Spatial contextɿ৔ॴɺݐ෺ͳͲ • Temporal contextɿ࣌ؒɺ༵೔ͳͲ •

    Device contextɿը໘αΠζͳͲ • Network and communication contextɿωοτϫʔΫ஗Ԇ ͳͲ • Environmental contextɿ෺ཧ؀ڥɻ૽Իɺޫͷڧ͞ͳͲɻ • Individuality and user profile contextɿϢʔβͷᅂ޷ɺؔ ৺ɺश׳ͳͲʹؔ͢ΔίϯςΩετ • Activity contextɿݱࡏͲͷλεΫʹؔΘ͍ͬͯΔͷ͔ɺ࣍ ʹԿΛ͢Δͷ͔ • Mental contextɿ৺ͷ಺෦ঢ়ଶʹؔ͢Δ৘ใɻײ৘ɺؾ ෼ɺετϨε • Interaction contextɿϢʔβؒͷΠϯλϥΫγϣϯɺϢʔ βͱΞϓϦέʔγϣϯͷΠϯλϥΫγϣϯͳͲ 11 Knappmeyer et al., Survey of Context Provisioning Middleware (2013)
  12. ൃදࢿྉˠ http://bit.ly/bc20test 20೥ޙͷςΫϊϩδʔ (2040೥ࠒ) • ಁաܕϔουϚ΢ϯτσΟεϓϨΠ(MR) • ඇಁաܕϔουϚ΢ϯτσΟεϓϨΠ(VR) • ۭؒηϯγϯά

    • ೶৔ / ౎ࢢ / ಓ࿏ etc. • ࣗಈӡసं (Ϩϕϧ5ɿ׬શࣗಈӡస) 12 ※ಠஅʹجͮ͘ໝ૝Ͱ͢
  13. ൃදࢿྉˠ http://bit.ly/bc20test ιϑτ΢ΣΞςετ • ιϑτ΢ΣΞςετ is େࣄ • ςετۦಈ։ൃ •

    ςετࣗಈԽ • CI(ܧଓతΠϯςάϨʔγϣϯ): Jenkins, CircleCI etc. • αʔό؀ڥςετ: Serverspec etc. • UIςετπʔϧ: Selenium, appium etc. 13
  14. ൃදࢿྉˠ http://bit.ly/bc20test ϋʔυ΢ΣΞͷE2Eςετ • εϚʔτϩοΫςετͷࣗಈԽ 14 ϋʔυ΢ΣΞΛE2EςετͰ͖ͳ͍ͳΜͯ୭͕ݴͬͨʁ - IoTͷςετΛࣗಈԽ͢Δϝιου (Ishii

    Taiki) - builderscon tokyo 2018 https://www.youtube.com/watch?v=m_HCUdWtQco
  15. ൃදࢿྉˠ http://bit.ly/bc20test εϚϗͷςετࣗಈԽ • ෺ཧతʹλοϓͯࣗ͠ಈԽ 15 iOS୺຤ͷςετࣗಈԽ - Quality Commander

    7 https://www.youtube.com/watch?v=QlfWZOzM-ik
  16. ൃදࢿྉˠ http://bit.ly/bc20test Remotion • ϦϞʔτ͓ΑͼԾ૝ۭؒͷ୺຤ͱ࢟੎Λಉظ 16 Qian et al., Remotion:

    A Motion-Based Capture and Replay Platform of Mobile Device Interaction for Remote Usability Testing (UBICOMP2018)
  17. ൃදࢿྉˠ http://bit.ly/bc20test ϞόΠϧΞϓϦέʔγϣϯ޲͚ίϯςΩετੜ੒ • Androidͷ࣮ػ͓ΑͼΤϛϡϨʔλʹίϯςΩετ৘ใ Λ஫ೖ 17 Rege et al.,

    Realistic Context Generation For Mobile App Testing and Performance Evaluation (PerCom2017) Luo et al., TestAWARE: A Laboratory-Oriented Testing Tool for Mobile Context-Aware Applications (UBICOMP2017)
  18. ൃදࢿྉˠ http://bit.ly/bc20test Kinect Doll 18 KINECT DOLL Ver3.0 https://www.youtube.com/watch?v=syY26n7ponM •

    KinectΞϓϦέʔγϣϯσόοά༻ͷਓܗ • ೚ҙͷϙʔζΛࢦఆՄೳ (ಈըͰ͸ਓؒͱಉ͡ಈ͖)
  19. ൃදࢿྉˠ http://bit.ly/bc20test ࣗಈӡసं • Uberͷࣗಈӡసऀͷ૸ߦςετͷͨΊͷڊେίʔε 19 Our Road to Self-Driving

    Vehicles | Uber ATG https://www.youtube.com/watch?v=27OuOCeZmwI
  20. ൃදࢿྉˠ http://bit.ly/bc20test EUDebug 20 • IFTTTͷΑ͏ʹΤϯυϢʔβ͕࡞੒͢ΔTrigger-ActionϧʔϧͷͨΊͷσόοάπʔϧ • Trigger-ActionϧʔϧͰى͜Γ͏Δ3छྨͷ໰୊ • ʮϧʔϓ(loop)ʯʮໃ६(inconsistency)ʯʮ৑௕ੑ(redundancy)ʯ

    • ͜ͷ໰୊Λಛఆͯ͠Ϣʔβʹఏࣔ͢Δ • Semantic Colored Petri-Net(SCPN)ϞσϧΛར༻ͯ͠ϧʔϧΛղੳ Corno et al., Empowering End Users in Debugging Trigger-Action Rules (CHI2019)
  21. ൃදࢿྉˠ http://bit.ly/bc20test Ծ૝؀ڥͷ׆༻ • ୺຤֎ͷ৘ใ (෺ཧత৘ใ) ͷऔಘ͕伴 • Ծ૝؀ڥɾγϛϡϨʔγϣϯΛςετʹ׆༻ 21

  22. ൃදࢿྉˠ http://bit.ly/bc20test UBIWISE • άϥϑΟοΫΤϯδϯΛ༻͍ͨԾ૝؀ڥΛΞϓϦέʔ γϣϯςετͷίϯςΩετʹར༻ • ᝑମઃܭ΍ΞϓϦέʔγϣϯςετʹར༻ 22 Barton

    and Vijayaraghavan, UBIWISE, A Ubiquitous Wireless Infrastructure Simulation Environment (2002)
  23. ൃදࢿྉˠ http://bit.ly/bc20test UbiREAL • εϚʔτεϖʔεͷͨΊͷγεςϜςετ؀ڥ • ϏδϡΞϥΠβɺωοτϫʔΫγϛϡϨʔλɺ෺ཧγϛϡϨʔλͷ ػೳΛ౥ࡌ 23 Nishikawa

    et al., UbiREAL: Realistic Smartspace Simulator for Systematic Testing (UBICOMP 2006)
  24. ൃදࢿྉˠ http://bit.ly/bc20test AirSim (Microsoft Research) • ࣗಈӡసंɾυϩʔϯͷػցֶशͷͨΊͷγϛϡϨʔλ • Unreal Engine4

    24 Shah et al., AirSim: High-Fidelity Visual and Physical Simulation for Autonomous Vehicles (FSR 2017)
  25. ൃදࢿྉˠ http://bit.ly/bc20test AI2-THOR • ՈࣄϩϘοτͷֶशͷͨΊͷ3D؀ڥ • Unity 25 Kolve et

    al., AI2-THOR: An Interactive 3D Environment for Visual AI (arXiv)
  26. ൃදࢿྉˠ http://bit.ly/bc20test House3D (Facebook AI Research) • ϩϘοτͷՈఉ಺λεΫͷֶशͷͨΊͷ3D؀ڥ 26 Wu

    et al., Building Generalizable Agents with a Realistic and Rich 3D Environment (ICLR 2018)
  27. ൃදࢿྉˠ http://bit.ly/bc20test ֶश޲͚Ծ૝؀ڥ • ͨ͘͞Μ͋Δ 27 AI2-THOR http://ai2thor.allenai.org/ ΑΓ

  28. ൃදࢿྉˠ http://bit.ly/bc20test Ծ૝؀ڥΛ࢖ͬͨςετ؀ڥͷఏҊ • Bluetooth Low Energy (BLE) ʹؔ͢ΔݚڀࣄྫΛ঺հ •

    BluMoon: Linux༻BLEΤϛϡϨʔλ • AOBAKO: BLEϏʔίϯΞϓϦέʔγϣϯͷݕূγεςϜ • BLE: ػثؒ઀ଓ(εϚϗ-पลػث)ɺ԰಺ଌҐͳͲʹ࢖ΘΕΔ 28 https://www.bluetooth.com/what-is-bluetooth-technology/how-it-works
  29. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon֓ཁ • Bluetooth Low Energy (BLE)ͷϑϨʔϜΛUDP/IP/Ethernetʹࡌͤͯ௨৴͢Δ ΤϛϡϨʔλ •

    PCΫϥελͰ௨৴࣮ݧՄೳ • Ծ૝ϚγϯͰ௨৴࣮ݧՄೳ • ԕִ஍Ͱ௨৴࣮ݧՄೳ • Linux্ͰBluetoothΠϯλϑΣʔεͱͯ͠ݟ͑Δ • ి೾ड৴ڧ౓(RSS)͸ʁ → ࠶ݱ͠·͢ • ి೾ׯব͸ʁ → ࠶ݱ͠·͢ 29
  30. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: HCIΛڥքͱͨ͠ίϯτϩʔϥΤϛϡϨʔγϣϯ • Application, Host, Controllerͱ͍͏֊૚ߏ଄ • Host-Controllerؒ͸Host-Controller

    Interface(HCI)͕ఆٛ • ίϯτϩʔϥΛLinuxΞϓϦέʔγϣϯͱ࣮ͯ͠૷ 30 ͜͜ΛLinuxΞϓϦέʔγϣϯʹஔ͖׵͑Δ
  31. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ಈ࡞σϞ • ϩʔΧϧϗετ(BluetoothΠϯλϑΣʔεແ͠)ʹ Bluetoothύέοτ(ΞυόλΠζ)Λ஫ೖ 31

  32. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ઃܭͱ࣮૷ • ΦʔϓϯιʔεLinux BluetoothελοΫBlueZΛݩʹ࣮૷ • Ծ૝ΠϯλϑΣʔε͔Β௨৴Ͱ͖ΔΑ͏վม •

    ػثؒ௨৴͸UDPσʔλάϥϜʹωοτϫʔΫԾ૝ԽϑΥʔϚοτΛ ಺แ • ΤϛϡϨʔγϣϯʹඞཁͳ৘ใ(ch,TxPower,Location)Λϔομʹ֨ೲ 32
  33. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ड৴ి೾ڧ౓ͷ໛฿ • ϊʔυͷҐஔΛܾΊͯڑ཭ʹԠͯ͡ݮਰ • ࣮ࡍͷ఻ൖɾݮਰ͸ෳࡶ(ਤ)͕ͩɺ͜͜Ͱ͸୯७ͳϞσϧ • ࣗ༝ۭؒి೾఻೻ଛࣦ

    + Ճࢉੑന৭Ψ΢εࡶԻ(AWGN) 33 • AWGN(δ)͸ҎԼͷ֬཰ີ౓ؔ਺͔Βཚ୒ Neburka et al., Study of the Performance of RSSI based Bluetooth Smart Indoor Positioning (2016)
  34. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ి೾ׯবͷ໛฿ • BLEͰ͸2.400GHz-2.480GHzΛ0.002GHzͣͭ40chʹ෼ׂ • ಉνϟϯωϧͷผϑϨʔϜΛಉ࣌(Ұఆ࣌ؒ಺)ʹड৴ͨ͠Βׯব ͱΈͳ͢ →

    ϑϨʔϜΛഁغ 34 Faragher and Harle, Location FingerprintingWith Bluetooth Low Energy Beacons
  35. ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ൺֱ࣮ݧ • ࣮؀ڥͱΤϛϡϨʔγϣϯͷൺֱ 35

  36. ൃදࢿྉˠ http://bit.ly/bc20test AOBAKO֓ཁ • BLEϏʔίϯར༻ΞϓϦέʔγϣϯͷݕূγεςϜ • ശͷ্ʹ୺຤Λஔ͚ͩ͘ͰBLEΞϓϦέʔγϣϯΛ ༷ʑͳ৚݅Ͱݕূ͢Δ͜ͱ͕Ͱ͖Δ 36

  37. ൃදࢿྉˠ http://bit.ly/bc20test AOBAKO: ݕূ؀ڥ • ಺෦ʹ͸Ϗʔίϯൃ৴ػͱͯ͠Raspberry Pi͕ຒΊࠐ·Ε͍ͯΔ • 4୆ͷRaspberry PiͰϩʔςʔγϣϯͰϏʔίϯൃ৴

    • ҐஔΛ࠶ݱ͢ΔͨΊʹϏʔίϯͷϔομͷૹ৴ిྗ஋Λॻ͖׵͑ • ࣮ࡍ͸͔ۙ͘ΒͷϏʔίϯ͕ͩɺԕ͔͘ΒඈΜͰ͖ͨΑ͏ʹݟ ͔͚ͤΔ 37
  38. ൃදࢿྉˠ http://bit.ly/bc20test AOBAKO: ৚݅ઃఆΠϯλϑΣʔε • Ϗʔίϯૹ৴ػͱड৴ػͷҐஔΛࢦఆ • ্෦ͷWebΧϝϥͷө૾͔Β਺ࣈΛೝࣝ 38

  39. ൃදࢿྉˠ http://bit.ly/bc20test AOBAKO: Ϗϡʔϫ • Ϗʔίϯૹ৴ͷ༷ࢠΛՄࢹԽ 39

  40. ൃදࢿྉˠ http://bit.ly/bc20test AOBAKO: ׆༻ • BLEϏʔίϯ͸ड৴ి೾ڧ౓(RSSI)ʹΑͬͯεϚʔτϑΥϯ౳Ͱͷ԰಺ଌҐ(ۙ઀൑ఆ)ʹ ༻͍ΒΕΔ • ళฮ΍ࣗಈൢചػͷདྷళݕ஌ •

    ത෺ؗφϏήʔγϣϯΞϓϦ 40 ౦ژࠃཱത෺ؗ - ΞϓϦʮτʔϋΫͳͼʯ • ݕূ͕େม • ϏʔίϯઃஔޙͷҐஔมߋ͕ࠔ೉ • ΞϓϦέʔγϣϯ୺຤Λ࣋ͬͯา͖ճΔ • → ص্ݕূΛՄೳʹ
  41. ൃදࢿྉˠ http://bit.ly/bc20test ·ͱΊ 41 https://sigpx.org • ιϑτ΢ΣΞ͕Ͱ͖Δ͜ͱ͕૿͑ΔʢߴػೳԽɺѻ͏ର৅ͷ޿ൣғԽʣ • ։ൃ΋ςετ΋ͲΜͲΜෳࡶʹͳΔɿࣗવͷઁཧ •

    ΤϯδχΞ͸͜ͷྲྀΕʹ৐͍ͬͯ͘ඞཁ͕͋Δ • ٕज़ͷൃలΛ૝૾͢Δͷ΋ָ͍͠͠ɺൃలٕͨ͠ज़ΛͲ͏΍ͬͯςετ ͢Δ͔ߟ͑Δͷ΋ָ͍͠ πʔϧ΍ࣄྫͷ঺հɺ࣭໰ɺײ૝ɺίϝϯτͳͲ͓଴ͪͯ͠·͢ (TwitterͳͲͰ) @yumu19