สัปดาห์ที่ผ่านมา แอดเรียนจบ sprint 01 ของคอร์ส QA Engineering แล้ว โดยรวมแอดชอบเลย เนื้อหาเป็นแบบ text-based มี audio บ้างนิดหน่อย
ใช้เวลาเรียนประมาณ 5-6 ชั่วโมง รวมทำโปรเจ็คอีก 2-3 ชั่วโมง แอดนั่งเรียนช่วงค่ำๆหลังเลิกงาน แบบ 20.00-21.00 น. แล้วก็เก็บเนื้อหาอีกทีวันเสาร์
น่าจะสรุปไม่จบในบทความเดียว เพราะแค่เรื่อง testing อย่างเดียวก็จุกๆแล้ว 555+

พอได้เรียน QA Engineering แอดคิดว่าความรู้นี้น่าสนใจมากเลย มีนักเรียนหลายคนทักมาว่าตอนนี้ทำงานเป็น QA อยู่เหมือนกัน สุดยอด
ในคอร์สเค้าบอกว่าสายงานนี้จริงๆต่อยอดไปเป็น Product Manager ได้สบายๆ เพราะเราเข้าใจการเขียน requirements/ tests ของ product อยู่แล้ว
QA engineers do more than test software, but it’s a big part of the job.
เรื่อง testing แอดก็เพิ่งรู้ว่ามันมีเยอะขนาดนี้ 555+ เช่น smoke test, regression test, exploratory test ไม่รวมรายละเอียดยิบย่อยอีก ไว้แอดเขียนสรุปให้อ่าน
Soft skill ที่สำคัญมากของ QA engineer คือเรื่องการสื่อสาร ไม่ว่าจะเป็นการเขียน (Writing) หรือการเล่าเรื่อง (Communication) เพราะเราต้องคุยกับคนอื่นๆ ทั้งเพื่อน software engineer ด้วยกัน ผู้บริหาร รวมถึงลูกค้าหรือ end-users
Learning Plan
QA Engineering (Quality Assurance) ของ tripleten เป็นหลักสูตร 5 เดือน 9 sprints เรียนแบบออนไลน์ของประเทศอเมริกา เนื้อหาครอบคลุมเรื่อง
- เข้าใจภาพรวมของการทำงานเป็น software engineer/ developer
- ออกแบบและเขียน test, document และ bug reports
- manual vs. automated test
- ได้ลอง test หลายๆ applications เช่น web, app, database, API
- รู้จักเครื่องมือหลักของ QA engineer เช่น Postman, Jira, SQL
- เรียนพื้นฐาน JavaScript สำหรับงาน QA Engineering
บริษัทแม่ของ tripleten คือ Yandex เป็น tech giant ของรัสเซีย รายได้ 12 เดือนหลังสุด อัพเดท ก.ย. 2023 อยู่ที่ $7.85B หรือประมาณสองแสนล้าน โหดมาก
จริงๆแอดเคยลงเรียน practicum bootcamp มาปีก่อนๆ แต่ไม่จบ 555+ รอบนี้มาแก้ตัวใหม่อีกรอบ จะสู้เต็มที่ เป็นกำลังใจให้แอดด้วยนะครับ ✌️
Sprints
Sprint แรกของ bootcamp คือ Testing Fundamentals แบ่งเป็น 6 chapters
- Introduction to the QA profession
- ✅ Software development lifecycle (SDLC)
- ✅ Types of testing
- Exploratory testing
- ✅ Bug reports
- First project
✅ คือหัวข้อที่แอดคิดว่าสำคัญ และ QA engineer ทุกคนต้องรู้เรื่องนี้แม่นๆเลย
Sprint คือรูปแบบการทำงานของ agile (scrum) team โดยใช้เทคนิค time-boxing เพื่อทำงานให้เสร็จในเวลาที่กำหนด ส่วนใหญ่ sprint หนึ่งจะใช้เวลา 1-2 สัปดาห์
สมัยแอดไปฝึกงานที่ ODDS ทำ mobile app ก็ใช้ 2-week sprint งานรีบ 555+
ส่วนตัวแอดคิดว่า sprint ใช้งานได้ดีมากเลย แนวๆ deadline driven เลยหยิบไอเดียนี้มาใช้ตอนสร้าง data science bootcamp รูปแบบการเรียนของเราเป็น sprint เหมือนกัน นักเรียนจะเก่งขึ้นเรื่อยๆพอจบแต่ละ sprint
Agile เรียก concept นี้ว่า “Incremental Development” คูลมาก
QA Profession
Amazon, Spotify, Meta, Apple, NASA, Tesla และทุกบริษัท tech ที่เรานึกออกต้องการ test engineers ทั้งหมดเลย
เราสร้าง software ขึ้นมาเพื่อตอบโจทย์ purpose บางอย่าง
และ test engineers หรือ QA จะเป็นคนที่คอยเช็คว่า software นั้นทำหน้าที่ได้อย่างที่เราคาดหวังไหม
Bug คือความแตกต่างระหว่าง actual และ expectation โดย QA จะเป็นคนหาและรายงาน bug เหล่านั้น เขียนรายงานส่งให้ software engineer ไปซ่อม ก่อนที่จะปล่อยอัปเดต software ให้ end-users ใช้งาน

แล้วถ้าเราไม่แก้ bug จะเกิดอะไรขึ้น?
ตัวอย่างโปรเจ็คของ NASA – Mars Climate Orbiter หลงทางในอวกาศปี 1999 ก็เกิดมาจากความผิดพลาดของซอฟต์แวร์ ทีม dev ใช้ระบบไม่เหมือนกันในการคำนวณเส้นทาง metric vs. imperial system เสียหายไป $125 ล้าน
ลองจินตนาการ mobile app ที่มี bug เพียบ users คงลบทิ้ง และเขียนรีวิว 1 ดาวกันหมด ไม่มีใครอยากใช้ app ที่เต็มไปด้วยข้อผิดพลาด
เขียนมาตั้งยาวสรุปคือ QA และ test engineers สำคัญจริงๆ 555+
QA Task Workflow
การทำงานของทีม software development (ต่อไปแอดเรียกสั้นๆว่า development team) จะแบ่งเป็น 4 phases ตั้งแต่ setting the task ไปจนจบ testing

Workflow การทำงานของ QA engineer จะตีขนานไปกับทีม development โดยแบ่งออกเป็น 4 phases เช่นกัน ตามรูปด้านล่าง

Phase 01 & 02 คือการวิเคราะห์ requirements และวางแผนการทำงาน แต่ละ task จะใช้เวลาเท่าไหร่ อะไรยังไง sprint นี้จะทำอะไรเสร็จบ้าง
Phase 03 – เขียน test cases และสร้าง checklists
Phase 04 – Testing execution รัน tests ทั้งหมดที่วางแผนไว้ ทำสรุปผลรายงาน document & bug report ส่งให้ทีม development ใน sprint ต่อไป
พอจบ sprint นั้นๆ หลังจากทำ retrospective (รีวิวงานต่างๆกับทีม) ก็จะเริ่ม loop 1-4 ใหม่ วิ่งวนแบบนี้ไปเรื่อยๆ ไม่มีวันจบ หรือจนกว่า product เราจะสิ้นอายุขัย
Types of Testing
รูปแบบการ testing แบ่งได้เป็น 7 หัวข้อหลักๆ อันนี้แอดยังจำได้ไม่หมดเหมือนกัน เยอะจัด 555+ เหมือนเป็น framework ให้เราเลือกทำ test ได้เหมาะสมขึ้น
น่าจะต้องค่อยๆซึมซับมันเข้าไป พอมาเขียนสรุปใน newsletter แบบนี้เหมือนแอดได้ทบทวนไปในตัวด้วย ขอบคุณทุกคนมากๆ 555+
- Level of automation
- Manual
- Automated
- Characteristics of the appplication
- Functional
- Non-Functional
- Level of planning
- Scripted
- Exploratory
- Iteration of testing
- Testing new feature
- Regression
- Coverage level
- Smoke
- Extended
- Exhaustive
- Level of isolation
- Component
- Integration
- System
- Access to source code
- Black
- Gray
- White
ที่แอดชอบสุด แบบเปลี่ยน mindset เลย คือการเลือกระหว่าง manual vs. automated testing แอดเคยเข้าใจว่าทุกอย่างต้อง automated หมด
จริงๆคือถ้าเราต้อง test ฟีเจอร์ใหม่ๆที่ requirements ยังไม่นิ่ง หรือมีความซับซ้อนสูง การทำ manual อาจจะเหมาะสมกว่าในช่วงแรก
จนกว่าทุกอย่างจะนิ่ง และชัดเจน เราค่อยเปลี่ยนมาทำ automated test หรือเขียนโค้ดเพื่อเช็คทุกอย่าง ความเสี่ยงของการทำ automated test ตั้งแต่แรก คือมีโอกาสสูงมากที่เราต้องเริ่มทำทุกอย่างใหม่อีกครั้ง (เพราะ change in requirements)
นั่ง recall เนื้อหาที่เรียน แอดจำ test ตัวหลักๆได้ตามนี้
- Functional testing คือการทดสอบฟีเจอร์พื้นฐานของ app ว่าทำงานได้อย่างที่เราต้องการ เช่น users สามารถกดอัปโหลดรูป profile ใหม่ได้ ไม่เจอ bug
- Smoke testing คือการเทสควัน เดี๋ยวๆ 555+ เป็นการ test รูปแบบที่ง่ายสุด แบบเช็คว่า app เราทำงานได้ไหม ไม่ได้ลงลึกมากเมื่อเทียบกับ exhaustive testing
- Regression testing เวลาที่ app มีฟีเจอร์ใหม่ๆออกมา เราควรจะ test ฟีเจอร์เก่าๆด้วย ว่ามันยังใช้งานได้เหมือนเดิมไหม
- Tour testing เป็นรูปแบบหนึ่งของ exploratory testing ที่ทดสอบ product ตาม theme ที่เรากำหนด เช่น feature tour หรือ scenario tour
- Black-Gray-White testing คือระดับของ QA ที่มองเห็น code base ของ app ที่เราสร้างขึ้นมา black ไม่เห็นเลย ไปจนถึง white เห็นทุกอย่าง
แปลว่า QA engineer ที่สามารถเขียน อ่านและเข้าใจ coding ด้วย น่าจะเติบโตไปได้หลายสายเลย ชอบเขียนโค้ดก็พัฒนาไปเป็น software engineer
หรือถ้าชอบสายธุรกิจ ก็พัฒนาตัวเองไปสาย product management
The Project
ทุกๆ sprint จะมีโปรเจ็คให้เราลองทำจริงด้วย ของ sprint แรกเป็นการสร้าง Bug Reports ง่ายๆบน Jira
Jira คือซอฟต์แวร์สำหรับ issue & project tracking ใช้กันเยอะมากในสาย tech
จริงๆแอดว่า Notion ก็ทำได้เหมือนกัน สร้าง template ใน database + kanban แต่ฟีเจอร์ตอนนี้ยังสู้ Jira ตรงๆไม่ได้ เพราะมัน design มากันคนละแบบ

โปรเจ็คนี้แอดเข้าไปหา bugs ใน web-app แผนที่ของ tripleten จะมี test cases ให้เราทำตาม และเขียนรายงานตาม template ที่เค้ามีให้
สิ่งที่ต้องเขียนลงใน bug report ในคอร์สนี้สอนว่ามี 6 หัวข้อ
- Description ของ test ที่เรารัน
- Environment เช่น Windows 11, Chrome Browser เวอร์ชัน 1.0x
- Preconditions สถานะก่อนที่เราจะเริ่ม test เช่น blank form ก่อนเราใส่ข้อมูล
- Steps ขั้นตอนการ test ของเรา เขียนเป็นขั้นตอน 1, 2, 3, …
- Expected result ผลลัพธ์ที่ควรจะเป็น
- Actual result ผลลัพธ์ที่เกิดขึ้นจริง
แอดส่งไปสองรอบ ก็ผ่านแล้ว ไม่ยาก 555+ sprint แรกหลอกเราให้ตายใจก่อน
We only know what we make.
แอบดูเนื้อหา sprint ถัดไป เรื่อง Test Design and Document จะเป็นลม เนื้อหาเกือบสองเท่าของรอบก่อน มีเวลาเรียนประมาณ 2 สัปดาห์ เดี๋ยวแอดไปลุยต่อแป๊บ
Podcast, Maybe?
กำลังคิดว่าแต่ละสัปดาห์ จะอัดเป็น podcast เล่าเนื้อหาใน newsletter ฉบับนั้นๆด้วย เพื่อนๆคิดว่าไงบ้าง อยากอ่าน + ฟังเลยดีไหม
Comment บอกแอดได้ในโพสต์นี้เลยนะครับ รออ่านไอเดียทุกคนแล้ว ✌️💯
เจอกันใหม่ใน newsletter สัปดาห์หน้า ส่งตรงเข้า inbox ทุกวันจันทร์คร้าบ

Leave a Reply to Arnon SudyoddeeCancel reply