Test plan, Test spec, Test case, คำต่างๆที่ชวนสับสน
วันนี้เราลองมาพูดถึงเรื่องของ Testing Term ที่เรามักจะได้ยินกันบ่อยๆ แต่ชวนให้สับสนเป็นอย่างยิ่งกันนะครับ คำที่เราจะพูดถึงคือ Test Plan, Test Specification รวมถึงคำอื่นๆอย่างเช่น Test case, Test script, Test condition, etc… ว่ามันคืออะไรกันแน่ มาเริ่มกันจาก Test plan เลยดีกว่าครับ
Test plan: คือมุมมองแบบกว้างๆ ( high level ) ที่เอาไว้ใช้บอกเราว่าการทำเทสจะเกิดขึ้นในลักษณะไหน อะไรจะถูกนำมาเทสบ้าง รวมถึง ใครเป็นคนทำ ทำอย่างไร ทำเมื่อไหร่ และ Quality level อยู่ในระดับไหนด้วย โดยใน Test plan จะประกอบไปด้วย element ต่างๆดังนี้ครับ
– S [Scope] : What to test, what not to test
– P [People] : Training, Responsibility, Schedule
– A [Approach] : To testing
– C [Criteria] : Entry / Exit Criteria
– E [Environment] : Environment needs
– D [Deliverables] : Deliverables as part of test process
– I [Incidentals] : Introduction, Identification
– R [Risks] : Risks and Contingencies
– T [Tasks] : Tasks involves in testing
ถ้าจะท่องไปสอบ Certificate เนี่ย ก็ท่องง่ายๆว่า SPACE DIRT ครับ
เรามาต่อกันที่กลุ่มคำถัดไปเลยนะครับ กลุ่มคำเหล่านี้ว่ากันถึงเรื่องของ Specification ครับ
Test Design Specification – ประกอบด้วย รายละเอียดของ Test condition ที่จะนำไปใช้รันเทส รวมถึง expect outcome ในลักษณะที่เป็น general term ด้วยครับ ที่นี้เพื่อไม่ให้งง ขออธิบายคำว่า Test condition ด้วยเลยแล้วกันครับ ปกติแล้วเวลาเราออกแบบเทสเคสโดยใช้ testing technique เนี่ย ผลลัพธ์ที่ได้จาก test technique แต่ละประเภทเช่น Equivalence Partition table หรือ Decision Tree table นั่นแหล่ะครับคือ test condition นั่นคือเป็นสิ่งที่บอกให้เรารู้ว่าเราต้องทำเทสด้วยเงื่อนไขอะไรบ้างแบ่งเป็นหมวดหมู่กว้างๆ หรือบอก set ของ input ที่เป็นไปได้ในแต่ละ condition แต่ไม่ได้ระบุ input ตายตัวในแต่ละข้อนะครับ
Test Case Specification – ตัวนี้หล่ะครับจะเป็นตัวระบุ input ของ test case แต่ละข้อ ว่าในแต่ละ test case เราจะ test ด้วย input อะไร (โดยปกติจะกำหนดinputตายตัวไปเลย ไม่ได้กำหนดเป็น range หรือ set ของ input เพื่อความง่ายในการ reproduce เวลาเจอปัญหาครับ)
Test Procedure Specification (Test script) – เอกสารตัวนี้เอาไว้ใช้อธิบายว่า เวลาtester จะรันเทสต้องทำอะไรบ้างด้วย step/procedure อย่างไร รวมถึงวิธีการ set up ต่างๆเพื่อให้รันเทสได้ด้วยครับ นอกจากนี้ยังระบุ expect outcome จากการรันเทสแต่ละข้ออย่างละเอียดไว้ในนี้ด้วย
เพื่อให้เห็นภาพมากขึ้นขอยกตัวอย่างดังนี้ครับ สมมติว่าเรากำลังจะทำเทสโปรแกรมเครื่องคิดเลข ซึ่งเราได้ test condition ออกมาจากการใช้ Equivalence test technique เรียบร้อยแล้วโดยในข้อแรก จะเป็นการเทสฟังก์ชั่นการบวก แบบ valid
ดังนั้นใน test design specification ก็จะระบุไว้ประมาณว่า
Test condition 1: Test การบวกเลขแบบข้อมูล input เป็นเลขจำนวนเต็มบวกสองตัว (ที่มีค่าอยู่ในขอบเขตที่ interface ของเครื่องบวกเลขรองรับได้)
Expect outcome: โปรแกรมสามารถคำนวณเลขและแสดงผลบนหน้าจอได้ถูกต้อง
หลังจากนั้นเรามาสร้าง Test case specification จาก test condition ข้อที่ 1 ได้ดังนี้
Test case 1: Input1 = 35, Input2 = 20
Expect outcome: = 55
หลังจากได้ test case แล้ว เราก็มาทำในส่วนของ Test procedure specification ต่อประมาณนี้ครับ
Test case1
Step 1: เปิดโปรแกรมเครื่องคิดเลขโดยการ double click บน “My Calculator” icon
Step 1 expect outcome: โปรแกรม My Calculator ปรากฎบนหน้าจอ
Step 2: คลิ๊กเม้าส์บนแผงตัวเลขบนหน้าจอตามลำดับดังนี้ “35 + 20” และคลิ๊กปุ่ม “=”
Step 2 expect outcome: แผงหน้าจอแสดงตัวเลขที่คลิ๊ก และเมื่อคลิ๊กปุ่ม “=” แผงหน้าจอแสดงตัวเลข “35”
ประมาณนี้ครับสำหรับตัวอย่างของคำต่างๆที่พูดถึงไปข้างต้น ส่วนในเรื่องของความละเอียดของ step/procedure เนี่ยก็แล้วแต่ความเหมาะสมของแต่ละบริษัท แต่ละสถานการณ์นะครับ
ถ้าอ่านแล้วไม่เข้าใจหรือยังงงตรงไหนก็ Post ถามได้เลยนะครับ พอเขียนแล้วเพิ่งรู้ว่าเรื่องนี้อธิบายยากเหมือนกันอาจจะเขียนแล้วทำให้สับสนตอนอ่านต้องขออภัยด้วยครับ

about 9 months ago
อ่านบทความแล้ว เข้าใจถึงนิยามของประเภทเอกสารต่างๆ ดีขึ้นเลยค่ะ ขอบคุณมากนะคะ
แต่ยังมีคำถามอยู่อีกนิดเดียวค่ะ
โดยปกติแล้ว การเขียน Test Script (ซึ่งเป็นการกำหนดขั้นตอนในการทดสอบ) และ Test Case (ข้อมูลที่จะใช้ Input) ควรอยู่ในเอกสารชุดเยวกันหรือไม่คะ เนื่องจากว่า โดยปกติ Template ของ Test Case (ข้อมูลที่จะใช้ Input) จะเปลี่ยนไปตามแต่ละ Funtction งานที่มีจำนวนข้อมูลที่จะต้อง Input แตกต่างกันออกไป จะมีวิธีในการจัดการกับเจ้าเอกสาร 2 ประเภทนี้อย่างไรให้มีความสัมพันธ์และเชื่อมโยงกันได้ และผู้ที่เข้ามาใช้เอกสารชุดนี้ต่อดูแล้วเข้าใจได้เลยค่ะ
ตัวอย่าง
Test Script
Case 1. ทดสอบการบันทึกข้อมูลลูกค้า บุคคลธรรมดา (Sector=1000)
Case 2. ทดสอบการบันทึกข้อมูลลูกค้า บุคคลธรรมดา (Sector=1200)
Case 3. ทดสอบบันทึกข้อมูลลูกค้า นิติบุคคล (Sector=4000)
และในแต่ละ Case ที่เห็น อาจจะมี Case ย่อยๆ ของ Input Value อีก
Case 1. Sector = 1000 , Name = A , Occupation = 9
Case 1 Sector = 1000 , Name = B , Occupation = null
Case 1 Sector = 1000 , Name = B , Occupation = 99
ขอบคุณค่ะ
about 9 months ago
ก่อนอื่น ต้องขอบคุณม๊ากๆๆ เลยค่ะ ที่สละเวลามาตอบคำถามดีๆ ให้วงการ Test เราได้รับความรู้เพิ่มเติมค่ะ แล้วว่างๆ จะส่งขนมไปขอบคุณจ้า
สำหรับคำว่า Defect กะ Defective นั้นได้ยินมาตอนฟัง Six Sigma ค่ะ ซึ่งเค้าใช้ในมุมของ product อื่นๆ แต่ทีนี้ถ้าเป็นในวงการ Software Testing นั้นจะหมายถึงอะไรค่ะ
Software Defect และ Software Defective อ่ะค่ะ
about 10 months ago
ส่วนคำตอบของข้อที่สองนะครับ คือถ้าจะว่ากันด้วยตัวคำจริงๆแล้วเนี่ย ต่างกันแค่เป็น คำนาม (N) กับ คำ ขยายคำนาม (ADJ) นั่นเองครับ
Defect เป็นคำนาม (N) แปลว่า ข้อบกพร่อง จุดผิดพลาด
Defective เป็นคำขยายคำนาม (ADJ) แปลว่า มีข้อบกพร่อง มีข้อผิดพลาด
บางคนอาจจะไม่คุ้นกับคำว่า Defect นะครับ จริงๆแล้ว Defect นั้นมีความหมายเท่ากับคำว่า BUG (ที่พวกเรารู้จักกันดี) หรือ คำว่า FAULT นั่นเองครับ
ไม่แน่ใจว่าตอบตรงคำถามหรือเปล่านะครับ แฮ่ะๆ ถ้ายังไงลองยกตัวอย่างประโยคหรือเรื่องที่เกี่ยวข้องตอนได้ยินสองคำนี้มาก็ได้ครับ อาจจะทำให้ตอบคำถามได้ตรงขึ้นครับ
about 10 months ago
นอกจากนี้ในบางแง่มุมหรือบางคำนิยาม Verification มักจะถูก handle หรือจัดการ ด้วยการทำ static testing ประเภท review ด้วยครับ ในขณะที่ Validation จะถูกทำให้แน่ใจว่าผ่านด้วยการ execute test
about 10 months ago
ขอตอบคำถามแรกในแง่มุมนึงของการเทสก่อนแล้วกันนะครับ
Product Verification – หมายถึง การตรวจสอบว่า product ที่เรา implement ขึ้นมานั้น เขียนขึ้นมาถูกต้องตามมาตรฐานที่ดี ยกตัวอย่างเช่น ถ้าเราเขียนโปรแกรมเครื่องคิดเลขขึ้นมาซักอันนึงเนี่ย เครื่องคิดเลขของเราเป็นเครื่องคิดเลขที่ได้มาตรฐาน มีลักษณะ interface แบบ friendly มีลักษณะการวางปุ่มตัวเลขและเครื่องหมาย บวกลบคูณหาร ต่างๆตรงตามมาตรฐานของเครื่องคิดเลขที่ดี เขียนโค้ดได้ตรงตาม standard พูดง่ายๆคือ ส่งประกวดที่ไหน ได้รางวัลจากทุกสถาบัน ได้ certificate ตรงตาม ISO standard ประมาณนั้น
Product Validation – หมายถึง การตรวจสอบว่า product ที่เรา implement ขึ้นมานั้น เขียนขึ้นมาถูกต้องตามความต้องการของลูกค้าหรือเปล่านั่นเอง คือ validate เทียบกับ Requirement เป็นหลักครับ
ยกตัวอย่างให้เห็นง่ายๆคือ สมมติว่าเราผลิตเครื่องคิดเลขที่ผ่าน verification มาเป็นอย่างดี ได้รางวัลจากทุกสถาบัน แต่ว่าสิ่งที่ลูกค้าต้องการจริงๆนั้นคือ โทรศัพท์มือถือเนี่ย จะเห็นได้ว่า ผ่าน Verifcation (เขียนเครื่องคิดเลขออกมาตรงตาม standard) แต่ไม่ผ่าน Validation เนื่องจากลูกค้าต้องการโทรศัพท์มือถือ ไม่ใช่เครื่องคิดเลข
ดังนั้นในการทดสอบหรือพัฒนาโปรแกรมต่างๆ ทั้ง programmer และ tester ต้องให้ความสำคัญกับ V&V หรือ Verification และ Validation ควบคู่กันไปครับ
about 10 months ago
ทั้งสองคำถามของคุณ Nong จะรีบหาคำตอบมาจัดการให้ในเร็ววันครับ
about 10 months ago
คำว่า Defect กับ Defective หมายถึงอะไร และแตกต่างกันอย่างไรค่ะ
about 10 months ago
อิอิไปสัมมนา “Win-Win UAT: Experience Sharing” มาค่ะ แล้ว งง กับคำว่า
PVT –>Production Verification Test,Production Validation Test คือไรเอย
กูรูช่วยตอบหน่อยนะคะ เพื่อประโยชน์ของชาว Implementer จ้า
about 10 months ago
อ่า คำถามล่าสุดนี่น่าจะต้องตอบกันยาว ขอเอาไปเป็นหัวข้อในบทความถัดไปแล้วกันนะครับ จะพยายาม list ข้อดี ข้อเสียของ Test technique ยอดนิยมแต่ละประเภทออกมาให้ครับ
about 10 months ago
Tester มีมาตราฐานในการทำ Test Script อย่างไร? พอเจอคำถามนี้เลยนึกถึง Test Technic ที่คุณนัทดนัยเคยสอนไว้ เอ้??!!! แล้วจะเลือกใช้ Technic ไรดีอ่ะ ถึงจะเหมาะสม
กับการทำ test ? รบกวนคุณนัทหน่อยนะคะ ขอบคุณหลายๆ เด้อค่ะ
about 10 months ago
คือว่า ผมบวกเลขผิดเองครับ แฮ่ะๆ จริงๆต้องๆเป็น 55 ครับ (จริงๆแล้วบอกว่าพิมพ์ผิดจะดูดีกว่าบวกเลขผิดหน่อยนึง แฮ่ะๆ)
ขอบคุณสำหรับทุกความคิดเห็น comment และคำถามนะครับ
ยังถามเข้ามาได้เรื่อยๆนะครับ
about 10 months ago
บทความอ่านแล้วมีประโยชน์มากๆ เลยค่ะ แต่มีข้อสงสัยนิดนึงตรงจุดนี้คือ
Step 2: คลิ๊กเม้าส์บนแผงตัวเลขบนหน้าจอตามลำดับดังนี้ “35 + 20” และคลิ๊กปุ่ม “=”
Step 2 expect outcome: แผงหน้าจอแสดงตัวเลขที่คลิ๊ก และเมื่อคลิ๊กปุ่ม “=” แผงหน้าจอแสดงตัวเลข “35”
===> แผงหน้าจอแสดงตัวเลข “35″ หรือ “55″ คะ เพราะจากที่อ่านๆ ดูแล้ว เมื่อคลิกปุ่ม “=” ผลลัพท์น่าจะเป็น 55 ใช่หรือเปล่าคะ หรือเข้าใจผิดเอง – -” ชักไม่แน่ใจ
about 10 months ago
มาต่อกันด้วยข้อที่สองครับ สำหรับในส่วนของ Performance Test นั้นคงต้องดูว่าเรากำลังวัด performace ทางด้านไหน ยกตัวอย่างเช่น ถ้าต้องการดู CPU และ Memory Usage ในขณะที่เครื่อง Server กำลังประมวลผล Load input = 50,000 Transaction/sec เนี่ย ใน expected result ก็อาจจะเขียนประมาณว่า
หน้าจอของเครื่อง Server ต้องแสดงให้เห็นว่า กำลังประมวลผลข้อมูล 50,000 Transaction/sec อยู่ (จึงจะสามารถ เก็บค่าของ CPU usage และ Memory usage ได้)
หรือถ้าเป็นลักษณะการเทสพวก stress ที่จะทำให้มั่นใจว่าเมื่อ server หรือโปรแกรมของเรามีการ handle การใช้งานเกินขอบเขตได้อย่างเหมาะสม ก็อาจจะเขียน expected result ลักษณะประมาณว่า
เมื่อใส่ input เกิน 10,000 server ต้องมีการแจ้ง warning/error message เตือนผู้ใช้ และ Server จะตัดข้อมูลส่วนเกินทิ้ง แต่ยังสามารถใช้งานต่อโดยไม่ปิดตัวเองลง หรือเกิดอาการโปรแกรมค้าง เป็นต้น
ไม่แน่ใจว่าตอบคำถามตรงจุดหรือเปล่านะครับ ถ้ายังไงช่วยยกตัวอย่าง specific มาก็ได้ครับ จะลองพยายามตอบเพิ่มให้ครับ
about 10 months ago
ตอบคำถามแรกก่อนนะครับ ถ้า Business Requirement เนี่ย จริงๆไม่ถือเป็น Test condition ครับ ตัวอย่างเช่น ถ้า Business Requirement ข้อนึงบอกไว้ว่า โปรแกรมต้องสามารถบวกเลขได้ Test condition ของเราแบบคร่าวๆก็น่าจะมีประมาณนี้
Test condition 1 (test valid input)
Input 1 อยู่ในช่วง 0 – 9999 (ตัวเลขสมมติ แล้วแต่ว่าเครื่องคิดเลขของเรารับได้กี่หลัก) Input 2 อยู่ในช่วง 0 – 9999
Operation = “+”
Test condition 2 (test invalid input1)
Input 1 อยู่ในช่วง > 9999
Input 2 อยู่ในช่วง 0 – 9999
Operation = “+”
Test condition 3 (test invalid operation)
Input 1 อยู่ในช่วง 0 – 9999 (ตัวเลขสมมติ แล้วแต่ว่าเครื่องคิดเลขของเรารับได้กี่หลัก) Input 2 อยู่ในช่วง 0 – 9999
Operation = กด “+” มากกว่าหนึ่งครั้ง
จากตัวอย่างจะเห็นว่า Business Requirement หนึ่งข้อ สามารถแตกเป็น Test condition ได้หลายข้อนะครับ
Input 1 อยู่ในช่วง 0 – 9999 (ตัวเลขสมมติ แล้วแต่ว่าเครื่องคิดเลขของเรารับได้กี่หลัก) Input 2 อยู่ในช่วง 0 – 9999
about 10 months ago
ก่อนอื่น ต้องขอขอบคุณกับบทความดี ๆ มีมาให้อ่านแบบเข้าใจง่าย ๆ กันอีกแล้วนะค่ะ
ต่อมา อยากถามเพิ่มเติมค่ะ ดังนี้นะค่ะ
- Test condition ที่บอกว่า “ผลลัพธ์ที่ได้จาก test technique แต่ละประเภทนั่นแหล่ะครับคือ test condition” ในส่วนนี้ สามารถขยายความครอบคลุมถึง Business Requirement ได้ด้วยหรือป่าวค่ะ
- Test Procedure Specification (Test script) จากข้อความ “ระบุ expect outcome จากการรันเทสแต่ละข้ออย่างละเอียด” จากตัวอย่างที่ยกมานั้น จะ focus ในส่วนของ Functional test ถ้าเป็นในส่วนของ Performance test จะมีการกำหนดอย่างไรบ้างค่ะ
about 10 months ago
ขอบคุณสำหรับบทความดีๆค่ะ ชอบบทความที่อาจารย์นัทเขียนค่ะ อ่านแล้วเห็นภาพแล้วก็เข้าใจง่ายมากๆค่ะ จะคอยติดตามผลงานนะคะ
about 10 months ago
ดีครับ ขอให้มีบทความออกมาเรื่อยๆนะครับ
about 10 months ago
มาขอบคุณคุณ Nutdanai ครับ สำหรับบทความดีดีอีกแล้วครับท่าน