robot03
สรุปเรื่องต่างๆ ที่แบ่งปันในการเปิดสอนค่ายแรก
สำหรับ Automated Acceptance Test Driven Development with Robot Framework
มีสิ่งที่นำมาแบ่งปันหลายเรื่อง จึงขอนำมาสรุปไว้ตรงนี้ครับ

เริ่มต้นด้วย

การแนะนำเกี่ยวกับ Robot Framework ทั่วไป
โดยส่วนที่เน้นอันดับแรกคือ การเขียน test case สำหรับการทดสอบ Web application
ซึ่งใช้งาน Keyword ต่างๆ จาก library ชื่อว่า Selenium2Library

ต่อจากนั้นเริ่มทำ workshop เล็กๆ เพื่อทำความเข้าใจเกี่ยวกับ
การเขียน test case ด้วย Robot Framework จากไฟล์เปล่า
จนมี test case ต่างๆ ขึ้นมา โดยทำตามแนวคิดของ Test Driven Development (TDD)
เพื่อทำให้เข้าใจขั้นตอนการทำงานของ Robot Framework
รวมทั้งให้เข้าใจวิธีการอ่านเอกสารของ library Selenium2Library
เพื่อทำให้รู้ว่าแต่ละ keyword ใช้งานอย่างไร

และเริ่มทำการ refactor test case ให้อยู่ในรูปแบบ
ที่สามารถอ่าน และ ทำความเข้าใจได้ง่าย
มันจะส่งผลต่อการดูแลรักษาที่ง่ายขึ้น
รวมทั้งยังแนะนำวิธีการกำหนด tag ให้กับ test case
เพื่อจัดกลุ่มของ test case ทำให้ง่ายต่อการทดสอบมากยิ่งขึ้น

จากนั้นแนะนำ Library อื่นๆ ที่มักจะไม่ศึกษากัน

แต่มันสามารถนำมาใช้ประโยชน์ได้มากมาย เช่น

  • Build in library
  • Collection library
  • String library
  • Operating System library
  • Screenshot library

โดยได้ลองทำ workshop เล็กๆ สำหรับการใช้งาน library พื้นฐานต่างๆ เหล่านี้
คือโปรแกรมการแปลงจากคะแนนมาเป็นเกรด A, B, C, D, E และ F
สามารถนำ Build in library มาใช้ได้ดัง code ตัวอย่าง

รวมทั้งยังแนะนำวิธีการนำความสามารถเรื่องการวน loop การตรวจสอบเงื่อนไข
และการใช้งานพวกโครงสร้างข้อมูลแบบ List และ Dictionary
ซึ่งจะช่วยให้การเขียน test case ด้วย Robot Framework มีประสิทธิภาพและยึดหยุ่นมากยิ่งขึ้น

ทำการแนะนำวิธีการทดสอบระบบ web application บน browser ชนิดต่างๆ

ประกอบไปด้วย

  • Firefox
  • IE
  • Google Chrome
  • Safari

โดยในส่วนนี้จะช่วยทำให้เห็นว่า เราสามารถทดสอบระบบงานบน browser ต่างๆ
ด้วย Robot Framework ได้อย่างง่ายดาย
รวมทั้งเทคนิคในการส่งค่าของ variable จาก command line
ไปยัง test case ซึ่งช่วยทำให้การทำงานยึดหยุ่นมากยิ่งขึ้นไปอีก

ต่อจากนั้น

เราแสดงให้เห็นว่าการเขียน test case ก่อนและหลังการสร้างระบบงานนั้น
มีข้อดีและข้อเสียอย่างไร ซึ่งน่าจะพอทำให้เห็นว่ามันมีประโยชน์อย่างไรนะครับ
โดยตรงนี้ทุกๆ คน ได้ลงมือทำด้วยตัวเอง น่าจะทำให้เข้าใจมากยิ่งขึ้นครับ

การ integrate Robot Framework เข้ากับระบบ Continuous Integration

ซึ่งผมเลือกใช้ Jenkins โดยผู้เข้าเรียนสร้าง test case ออกมาดังรูป
Screen Shot 2557-08-17 at 11.09.31 PM

และปิดท้ายด้วยคำแนะนำเกี่ยวการเขียน test ด้วย Robot Framework

ว่าอย่าเขียนเยอะจนเกินไป เนื่องจากในชั้นการทดสอบนี้
จะสนใจที่พฤติกรรมการใช้งานของผู้ใช้งานต่อระบบเป็นหลัก
ไม่ใช่ว่าจะเขียนตรวจสอบทุกๆ อย่างด้วย Robot Framework
ซึ่งเป็นการทดสอบในชั้น End-to-End และ Acceptace Test

ถ้าเขียน test ในชั้นนี้มากจนเกินไป จะส่งให้เกิดปัญหาเมื่อมีการเปลี่ยนแปลงความต้องการ
ซึ่งแน่นอนว่า หลีกเลี่ยงไม่ได้หรอก
ลองคิดดูว่า ถ้าการทดสอบในชั้นนี้ทดสอบมากจนเกินไป
แล้วจะเสียเวลาแก้ไข test เท่าไร รวมทั้งเวลาในการทดสอบจะมากเพียงใด
ดังนั้นควรทำแต่พอดี และ สำคัญๆ ครับ

พยายามเขียน test ในชั้นที่ต่ำลงมาให้มากที่สุด เช่น unit test และ integration test
ไม่เช่นนั้นคุณอาจจะติดกับดักของการเขียน test ในแต่ละส่วนมากเกินไปก็เป็นได้
โดยผมได้อธิบายไว้ในบทความเรื่อง Testing Pyramid vs Ice cream vs Cupcake
รูปแบบที่ดีที่สุดคือ รูป Pyramid  นะครับ ห้ามลืมโดยเด็ดขาด

testing_pyramid_detailed

ขอขอบคุณทุกๆ คน ทั้งผู้เรียน ผู้สอน และผู้ช่วยสอนทุกๆ คนครับ

ผมได้ความรู้และมุมมองใหม่เพิ่มขึ้นมากมายครับ
และทุกๆ คนอย่าลืมนำกลับไปใช้งาน และซ้อมเขียน Robot Framework ทุกๆ วันนะครับ
โดยผู้ที่เข้าร่วมค่าย สามารถส่ง feedback สำหรับค่ายได้ได้เลย
ว่ามันดี แย่ และอยากให้ทางเราปรับปรุงอะไรในครั้งต่อๆ ไปได้ที่นี่เลยครับ

[fb_embed_post href=”https://www.facebook.com/photo.php?fbid=10152182362877371″ width=”550″/]

และทางพี่หนุ่มได้วาดรูปสรุปของสิ่งที่สอน แบ่งปันกันทั้งสองวันตามรูปครับ

robot01

robot02

เจอกันค่ายต่อไปในเดือนกันยายน 2014 นี้ครับ

สามารถลงทะเบียนได้ที่นี่ครับ Acceptance-Test Driven Development with Robot Framework ค่ายที่ 2
แล้วเจอกันครับ