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. 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. 2.

    ൃදࢿྉˠ http://bit.ly/bc20test ࣗݾ঺հ • ౬ଜ ཌྷ / @yumu19 • ࠃཱݚڀ։ൃ๏ਓ

    ৘ใ௨৴ݚڀػߏ ݚڀһ • ઐ໳ɿωοτϫʔΫɺϢϏΩλείϯϐϡʔςΟϯά etc. 2 ৘ใॲཧֶձࢽ ฤूҕһ ٕज़ॻయ7Ͱֶձࢽ൦෍ ͓͏ͪϋοΫಉ޷ձ Ϟϊͮ͘ΓܥϙουΩϟετ ඼ϞϊϥδΦ https://www.facebook.com/ groups/ouch.hack/ https://shinamonoradio.github.io/
  3. 3.

    ൃදࢿྉˠ http://bit.ly/bc20test NICT 3 w ਖ਼໊ࣜশɿࠃཱݚڀ։ൃ๏ਓ৘ใ௨৴ݚڀػߏ w /BUJPOBM*OTUJUVUFPG*OGPSNBUJPOBOE$PNNVOJDBUJPOT5FDIOPMPHZ w ʮʹ͘ͱʯͰ͸ͳ͘ʮ͑͵͍͋͠ʔͯ͌ʔʯΒ͍͠ʢผʹͲͬͪͰ΋͍͍͚Ͳɾɾɾʣ

    w ૯຿লॴ؅ͷࠃཱݚڀ։ൃ๏ਓ w ೔ຊશࠃՕॴ খۚҪɺେखொɺઋ୆ɺࣛౡɺԣਢլɺੴ઒ɺژ౎ɺେࡕɺਆށɺԭ ೄ ʹڌ఺ w ແઢɺޫ௨৴ɺࣗવݴޠॲཧɺ೴৘ใɺӉ஦ఱؾɺηΩϡϦςΟɺϏοάσʔλFUD w ೔ຊඪ४࣌ΛܾΊΔ࣌ܭ͕͋Δ w ͏Δ͏ඵͷͱ͖ʹχϡʔεʹͳΔ
  4. 4.

    ൃදࢿྉˠ http://bit.ly/bc20test StarBED • NICTͷηϯλʔ(ࣄۀॴ)ͷͻͱͭ • ੴ઒ݝೳඒࢢʹ͋Δੈք࠷େن໛ͷωοτϫʔΫςετϕου • ໿1000୆ͷ෺ཧϊʔυ͕Քಇ •

    ػߏ಺֎ͷݚڀऀɾ։ൃऀʹ࣮ݧ؀ڥΛఏڙ • ؅ཧɾ੍ޚπʔϧ܈Λಠࣗ։ൃ • We are hiring!!!! ݚڀ৬ & ٕज़৬ 4 ৄࡉ͸NICT΢ΣϒαΠτ>࠾༻৘ใ ͔Βʂ http://www.nict.go.jp/employment/201904.html
  5. 5.

    ൃදࢿྉˠ http://bit.ly/bc20test ͸͡Ίʹ (excuse) • ຊ৬͸ωοτϫʔΫɾϢϏΩλείϯϐϡʔςΟϯάͷݚڀऀͰ͢ • ιϑτ΢ΣΞςετͷઐ໳ՈͰ͸͋Γ·ͤΜ • ίʔυ͸ॻ͖·͕͢όϦόϦͷݱ৔։ൃ͔Β͸5೥΄Ͳԕ͔ͬͯ͟·͢

    • πʔϧͷࣄྫ͕ݹ͍Մೳੑ͕͋Δ·͢ • ͥͻ࠷ۙͷΠέͯΔπʔϧ΍ࣄྫΛڭ͑ͯԼ͍͞ʂ • ࿩͢͜ͱ • 20೥ޙͷٕज़༧ଌ • (޿ٛͷ)ςετʹؔ͢Δπʔϧͷࣄྫ঺հ • Ծ૝ۭؒΛ༻͍ͨ(޿ٛͷ)ςετͷࣄྫ঺հͱऔ૊঺հ • ࿩͞ͳ͍͜ͱ • ιϑτ΢ΣΞςετͷମܥతͳ࿩ • ιϑτ΢ΣΞςετͷ໢ཏతͳ࿩ 5
  6. 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. 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. 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)
  9. 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
  10. 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)
  11. 13.

    ൃදࢿྉˠ http://bit.ly/bc20test ιϑτ΢ΣΞςετ • ιϑτ΢ΣΞςετ is େࣄ • ςετۦಈ։ൃ •

    ςετࣗಈԽ • CI(ܧଓతΠϯςάϨʔγϣϯ): Jenkins, CircleCI etc. • αʔό؀ڥςετ: Serverspec etc. • UIςετπʔϧ: Selenium, appium etc. 13
  12. 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)
  13. 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)
  14. 18.

    ൃදࢿྉˠ http://bit.ly/bc20test Kinect Doll 18 KINECT DOLL Ver3.0 https://www.youtube.com/watch?v=syY26n7ponM •

    KinectΞϓϦέʔγϣϯσόοά༻ͷਓܗ • ೚ҙͷϙʔζΛࢦఆՄೳ (ಈըͰ͸ਓؒͱಉ͡ಈ͖)
  15. 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)
  16. 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)
  17. 25.
  18. 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)
  19. 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
  20. 29.

    ൃදࢿྉˠ http://bit.ly/bc20test BluMoon֓ཁ • Bluetooth Low Energy (BLE)ͷϑϨʔϜΛUDP/IP/Ethernetʹࡌͤͯ௨৴͢Δ ΤϛϡϨʔλ •

    PCΫϥελͰ௨৴࣮ݧՄೳ • Ծ૝ϚγϯͰ௨৴࣮ݧՄೳ • ԕִ஍Ͱ௨৴࣮ݧՄೳ • Linux্ͰBluetoothΠϯλϑΣʔεͱͯ͠ݟ͑Δ • ి೾ड৴ڧ౓(RSS)͸ʁ → ࠶ݱ͠·͢ • ి೾ׯব͸ʁ → ࠶ݱ͠·͢ 29
  21. 30.

    ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: HCIΛڥքͱͨ͠ίϯτϩʔϥΤϛϡϨʔγϣϯ • Application, Host, Controllerͱ͍͏֊૚ߏ଄ • Host-Controllerؒ͸Host-Controller

    Interface(HCI)͕ఆٛ • ίϯτϩʔϥΛLinuxΞϓϦέʔγϣϯͱ࣮ͯ͠૷ 30 ͜͜ΛLinuxΞϓϦέʔγϣϯʹஔ͖׵͑Δ
  22. 32.

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

    ػثؒ௨৴͸UDPσʔλάϥϜʹωοτϫʔΫԾ૝ԽϑΥʔϚοτΛ ಺แ • ΤϛϡϨʔγϣϯʹඞཁͳ৘ใ(ch,TxPower,Location)Λϔομʹ֨ೲ 32
  23. 33.

    ൃදࢿྉˠ http://bit.ly/bc20test BluMoon: ड৴ి೾ڧ౓ͷ໛฿ • ϊʔυͷҐஔΛܾΊͯڑ཭ʹԠͯ͡ݮਰ • ࣮ࡍͷ఻ൖɾݮਰ͸ෳࡶ(ਤ)͕ͩɺ͜͜Ͱ͸୯७ͳϞσϧ • ࣗ༝ۭؒి೾఻೻ଛࣦ

    + Ճࢉੑന৭Ψ΢εࡶԻ(AWGN) 33 • AWGN(δ)͸ҎԼͷ֬཰ີ౓ؔ਺͔Βཚ୒ Neburka et al., Study of the Performance of RSSI based Bluetooth Smart Indoor Positioning (2016)
  24. 37.

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

    • ҐஔΛ࠶ݱ͢ΔͨΊʹϏʔίϯͷϔομͷૹ৴ిྗ஋Λॻ͖׵͑ • ࣮ࡍ͸͔ۙ͘ΒͷϏʔίϯ͕ͩɺԕ͔͘ΒඈΜͰ͖ͨΑ͏ʹݟ ͔͚ͤΔ 37
  25. 40.

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

    ത෺ؗφϏήʔγϣϯΞϓϦ 40 ౦ژࠃཱത෺ؗ - ΞϓϦʮτʔϋΫͳͼʯ • ݕূ͕େม • ϏʔίϯઃஔޙͷҐஔมߋ͕ࠔ೉ • ΞϓϦέʔγϣϯ୺຤Λ࣋ͬͯา͖ճΔ • → ص্ݕূΛՄೳʹ
  26. 41.

    ൃදࢿྉˠ http://bit.ly/bc20test ·ͱΊ 41 https://sigpx.org • ιϑτ΢ΣΞ͕Ͱ͖Δ͜ͱ͕૿͑ΔʢߴػೳԽɺѻ͏ର৅ͷ޿ൣғԽʣ • ։ൃ΋ςετ΋ͲΜͲΜෳࡶʹͳΔɿࣗવͷઁཧ •

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