เมื่อต้องไปสอนนักศึกษาเขียน Robot framework — Day 1 Testing Fundamental (Part 1/2)

Rattananuiiz
Nextzy
Published in
3 min readMar 23, 2020

--

บทความในชุดเดียวกัน

ก่อนที่เราจะเป็น Software tester เราก็ต้องมีทักษะพื้นฐานมาพอสมควรเนาะ ทีนี้เรามาดูกันดีกว่าว่าเราจะต้องรู้หรือมีทักษะอะไรบ้างก่อนจะมาเป็น Software tester

Let’s go!!

Software tester คืออะไร?

Software tester ก็คือ คนที่มีหน้าที่ตรวจสอบคุณภาพของ software ที่ถูกผลิตขึ้นมาโดย Programmer โดยที่ใช้วิธีการ test ต่างๆ เพื่อให้มั่นใจว่า software ที่จะไปถึงมือลูกค้า มีคุณภาพและปราศจากข้อผิดพลาดหรือผิดพลาดน้อยที่สุด (ข้อผิดพลาดที่เรารู้จักกันว่า Bug นั่นเอง)

Goal of testing (เป้าหมายของการทดสอบซอฟต์แวร์)

การทดสอบ : เป็นการประมวลผลโปรแกรมเพื่อค้นหา ข้อบกพร่องและข้อผิดพลาดของโปรแกรม ก่อนส่งมอบ Product ให้ลูกค้า

Software tester ทำอะไรบ้าง

  • วิเคราะห์ความต้องการ (Requirement)
  • วางแผนการทดสอบ (Test planning)
  • คิดและออกแบบการทดสอบ (Test design) ทั้ง Test case, Test scenario, Test data และ Test environment
  • สร้าง Test case และ Test scenarios
  • เตรียม Test data และ Test environment
  • ทำการทดสอบ (Test)
  • บันทึก Bug หรือ Defects ที่พบเจอ แล้วแจ้ง Developer เพื่อทำการแก้ไข
  • สรุปผลการทดสอบ

Testing process

ทีนี้เรามาดูภาพรวมๆกันก่อนนะคะ ว่าการจะสร้างโปรแกรมหรือ Application นึงขึ้นมาเนี้ย มันต้องมีขั้นตอนหรือวิธีการยังไงบ้าง

https://bit.ly/2Tl1yHJ

ในการพัฒนาโปรแกรมหรือ Application จะอยู่ในรูปแบบที่เรียกกันว่า วงจรการพัฒนาระบบสารสนเทศ (Systems development life cycle) ซึ่งประกอบไปด้วยขั้นตอนดังนี้

1. Planning

วางแพลนการทำงาน ว่าเราจะทำอะไร, ยังไง, เวลาไหนบ้าง

2. Analysis : วิเคราะห์โครงการหรือโปรเจคที่เราจะทำ

การ Analysis เป็นการตีความ หรือเป็นการหาปัญหาของการที่เราจะสร้างโปรแกรมหรือ Application หนึ่งขึ้นมาเพื่อแก้ไขปัญหานั้น

3. Design : ออกแบบระบบ

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

4. Implementation : พัฒนาซอฟต์แวร์และติดตั้ง

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

5. Testing & integration : ทดสอบและนำไปใช้งาน

เมื่อทำการ Coding เสร็จแล้วเราต้องทำการทดสอบโปรแกรมว่าสามารถใช้งานได้ตามที่เราออกแบบหรือตามที่ลูกค้าให้ Requirements มาหรือไม่ และเพื่อหาข้อผิดพลาดของโปรแกรมเพื่อจะได้ทำการแก้ไขก่อนที่เราจะส่งมอบให้ลูกค้านำไปใช้งาน

6. Maintenance : บำรุงรักษาซอฟต์แวร์

เมื่อใช้งานไปสักระยะ ลูกค้าหรือผู้ใช้งาน อาจจะพบข้อผิดพลาดของซอฟต์แวร์ (Bug) เพิ่มเติม ก็ต้องให้ Developer ทำการแก้ไข (ถ้ามีการแก้ไขจะต้องไม่มีผลกระทบกับ Product เดิมเด้อ)

Testing Process

ต่อไปเรามาดู Process ในการเทสบ้างนะคะ ว่าเรามีขั้นตอนในการเทสยังไงบ้าง

https://bit.ly/32YYVih

1. Requirement

ทำความเข้าใจ Requirement ก่อน ว่าจะทดสอบอะไร จาก Requirement ที่ได้มา ทำความเข้าใจที่มา เพื่อจะได้วางแผนในการทดสอบ

2. Test condition

เป็นการอธิบายถึงขอบเขต , เงื่อนไข, จุดประสงค์, เป้าหมาย, วิธีการทำงานของ Application หรืองานที่เราต้องการทดสอบ ตามความต้องการของลูกค้า

3. Test design

เป็นการ Design ว่าเราจะมีเทสอะไรบ้าง คล้ายๆการวาง structure โครงสร้างการเทสก่อนว่าเราจะเทสในลักษณะไหน อะไรจะถูกนำมาเทสบ้าง เทสอย่างไร เทสเมื่อไหร่

พอเราทำ Test design เสร็จ ก็มาเขียน Test case ต่อ

  • Test case เอกสารที่บ่งบอกขั้นตอนหรือเงื่อนไขหรือตัวแปรต่างๆ ของ Application ภายใต้ระบบที่เราจะใช้ทดสอบ เพื่อให้ทราบว่า Application หรือ Software ที่เราทดสอบนั้นๆ ตรงตามความต้องการของลูกค้าและ test case จะเป็นตัวระบุ input ของ test case แต่ละข้อ ว่าในแต่ละ test case เราจะ test ด้วย input อะไร แล้ว out put ที่ออกมาเนี้ย คืออะไร เป็นแบบไหน ถูกต้องรึป่าว

4. Test Execution

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

  • ในการเทสถ้าเราเจอ Bug ก็จะต้องมีการแจ้ง Defects ให้ Requirement ด้วยเน้อ ก็คือเหมือนว่าเราต้องทำให้ application สมบูรณ์ที่สุดก่อนจะส่งให้ลูกค้านั่นเอง

การเปิด issue ของแต่ละที่ไม่เหมือนกัน บางที่อาจจะเปิดแบบ ให้เทสเสร็จทีเดียวแล้วค่อยเปิด issue มา หรือบางที่อาจจะให้เทสไปเปิดไปไรงี้ ก็แล้วแต่การทำงานของแต่ละที่ หรือแล้วแต่สถานการณ์อีกนั่นแหละ เอาเป็นว่าเดี๋ยวเราจะรู้ตอนทำงานจริง 55555

5. Test Report

คือเอกสารสรุปผลการทดสอบ Software หลังจากที่เราทำการทดสอบเสร็จ เช่น Test case, Test Scenario,Test script

เดี๋ยวเรื่องรายละเอียดต่างๆว่าไอ้พวก Test case, Test Scenario,Test script มันคืออะไรยังไง เดี๋ยวเราจะมาพูดถึงอีกทีน๊า

ขั้นตอนของการทำ Test (Test Pyramid)

1. Unit Test (Developer เป็นคนทำ)

Unit test คือการทำ Unit tests นั้นเป็นการ Test function ของการทำงานในระดับ Unit หรือ คือ Test การทำงานในหน่วยเล็กที่สุด เห็นได้ไวที่สุดว่าตรงไหนทำงานผิดพลาด แต่ไม่การันตีนะ เพราะการทำ Unit Tests มันไม่ได้ทำงานร่วมกับจุดอื่นๆ แต่ถ้ามันทำงานได้ได้ตามที่ควรก็จะมีประโยชน์กับเรานะ เพราะจะทำให้เราเจอบั๊กน้อยลง 555555

2. Integration Test

การเทสภาพรวมของระบบ ก็คือจะเป็นการ Test ระดับของ Service ของเราเป็นส่วนที่ไม่ใช่การทำ Test function เล็ก ๆ แล้ว แต่เป็นการ Test function ทั้ง function เพื่อเทสว่าทั้งระบบสามารถทำงานร่วมกันได้อย่างถูกต้อง เช่น

  • ถ้ามีการทำงานร่วมกับ Database ก็จะเชื่อมต่อกับ Database จริงๆ
  • และต้องมีการเชื่อมต่อ Service โดยใช้ Service จริงด้วย (ก่อนหน้านี้อาจจะ mock Data)

เป้าหมายของ Integration Test คือ ให้คนที่ไม่ใช่ Developer เข้าใจภาพรวมการทำงานนั่นเองจ้า

3. UAT (User Acceptance Test)

คือการทดสอบระบบขั้นสุดท้ายก่อนใช้งานจริง เพื่อตรวจสอบให้แน่ใจว่าระบบที่พัฒนาพร้อมที่จะใช้งานได้จริง ตรงตามความต้องการของลูกค้า (Requirement) และตรงตาม Business Flow จริงๆของลูกค้า ซึ่งขั้นตอนนี้เป็นการทดสอบที่ใกล้เคียงกับ Production มากที่สุด

ช่วง UAT เป็นช่วงที่ Defect จะเยอะมากกกกกก สาเหตุหลักๆน่าจะเกิดจาก User, BA, SA และ Developer มีความเข้าใจที่ไม่ตรงกัน อันนี้เจอบ่อย 555555 เพราะฉะนั้นต้องคุยกันให้ดีก่อนเด้อ

Black box testing & White box testing

Black box testing

เป็นการทดสอบที่ไม่สนใจว่าการทำงานภายในระบบเป็นอย่างไร สนใจแค่ Output ให้มองภาพเหมือนกล่องทึบ 1 ใบ เราจะมองแค่ภายนอกของกล่อง ไม่สนใจว่าข้างในกล่องมีอะไร

White box testing

เป็นการทดสอบที่ต้องรู้การทำงานภายในของระบบว่าประกอบไปด้วยอะไรบ้าง มีขั้นตอนหรือ Flow การทำงานของระบบอย่างไร

ยกตัวอย่างเช่น ถ้าเราทำการเทสเรื่อง login ก็จะต้องรู้ Flow ว่าถ้าใส่แบบนี้จะเป็นยังไง เช่น User ผิด ระบบจะแสดง error แบบไหน แสดงเป็น pop up หรือ required field

ถ้าเทียบกับกล่องแล้ว ให้มองภาพเป็นกล่องใส 1 ใบ เราจะเห็นภายในกล่องว่าประกอบด้วยอะไรบ้าง

ส่วนบทความหน้า

จะนำเอาเรื่องเกี่ยวกับ Test case,Test Scenario, วิธีการเทสมีแบบไหนบ้าง มาอธิบายกันอีกที เดี๋ยวเรามาดูต่อกันใน Part 2/2 นะคะ (โปรดติดตามตอนต่อไป อิอิ)

--

--