Screen Shot 2558-10-08 at 8.59.18 PM
ถ้าใครอ่านข่าวเกี่ยวกับ Volkswagen
ซึ่งโกงผลการทดสอบมลพิษของรถยนต์
โดยพัฒนา software บางตัวขึ้นมาโดยเฉพาะ

ไม่เชื่อก็ต้องเชื่อว่า
มีคนสร้าง test library ขึ้นมาเพื่อล้อเลียน หรือ เอาฮาก็ไม่รู้
แต่บอกได้เลยว่า มันน่ากลัวมาก ๆ
มาดูกันว่ามันมีอะไรบ้าง และเป็นอย่างไร ?

มาดู project ที่สร้างขึ้นมา มีตัวอย่างดังต่อไปนี้

  • PHPUnit-VW สำหรับภาษา PHP
  • Volkswagen สำหรับ JavaScript
  • Pytest-vw สำหรับภาษา Python
  • Minitest-volkswagen, Rspec-volkswagen สำหรับภาษา Ruby
  • Golang-volkswagen สำหรับภาษา Go

และคาดว่าจะออกอีกเยอะมาก ๆ !!

เป้าหมายของพวก library ต่าง ๆ เหล่านี้ คือ

เมื่อชุดการทำสอบของ project มัน fail ขึ้นมา
แล้วมันจะทำการหลอกว่า การทดสอบผ่านทั้งหมด !!!

ดังนั้นเมื่อนำไปทำงานบนระบบ Continuous Integration (CI) แล้ว
มันจะผ่านทั้งหมด
ทั้งที่การทำงานจริง ๆ นั่นผิดพลาดขึ้นมา
ผลกระทบมันใหญ่หลวงอย่างมากนะครับ

ตัวอย่างของ CI Server ที่โดนหลอกเช่น

  • TravisCI
  • Appveyor
  • Bamboo
  • Buildkite
  • CircleCI
  • CodeShip
  • GitlabCI
  • Go CD
  • Hudson
  • Jenkins
  • PHPCI
  • TeamCity

จากที่ติดตามพบว่า library ที่จริงจังมาก ๆ คือ PHPUnit-VW

ดังนั้นจึงลองนำไปใช้งานบน Jenkins
แล้วได้ผลการทำงานดังรูป สยองมาก ๆ

Screen Shot 2558-10-08 at 8.49.39 PM

ตัวอย่าง code แบบไม่ดี และห้ามทำอยู่ที่นี่ Github:Up1:VW-Effect

สิ่งเหล่านี้มันน่ากลัวมาก ๆ

ไม่ใช่เรื่องที่ตลก
อย่านำมาใช้งานกันนะครับ !!!
หรือนำแนวคิดมาใช้โดยเด็ดขาด
Developer นั้นควรมีความเป็นมืออาชีพ

Screen Shot 2558-10-08 at 9.03.15 PM