SDLC แบบ v-model นั้นดีอย่างไร และ automated testing คืออะไร
SDLC : Software Development Life cycle คือ ระบบการจัดการในการพัฒนา software มี 3 ส่วน คือ ส่วนวิเคราะห์ (analysis), ส่วนออกแบบ (design) และ ส่วนการนำไปใช้ (implementation) มีแบบหลักที่เราจะมาอธิบาย คือ แบบ waterfall และแบบ v-model
แบบ waterfall จะมีลักษณะเหมือนนํ้าตกนี่แหละ ต้องทำทีละขั้นตอน แต่ละขั้นตอนสามารถย้อนกลับได้ ซึ่งไม่ได้ทำแบบ parallel จึงทำให้ใช้เวลานาน กว่า software ของเราจะเสร็จ ซึ่งในเมื่อเราเสียเวลากับการเขียนโปรแกรม จริงๆแต่ละขั้นตอนในโมเดลแบบนี้มีรูปร่างเหมือนกัน แต่ต่างกันที่ขั้นตอนที่ใส่
ref : http://images.slideplayer.in.th/8/2082141/slides/slide_14.jpg |
แบบ V-Model เป็นการตรวจสอบคุณภาพของระบบ ซึ่งจะ test เทียบกับ state ต่างๆในส่วน develop โดยที่ส่วน develop อยู่ด้านซ้าย และส่วน testing อยู่ด้านขวามือ
ref : http://www.testnbug.com/wp-content/uploads/2014/12/v-model.png |
ไล่จากบนมาล่างนะ
1. User Requirement -> Acceptance Test : user การันตีว่าถูกจริง
2. System Requirement -> System Test : มีความ component มากขึ้น
3. Global Design -> Integration Test : ความสัมพันธ์ระหว่างฟังก์ชั่น
4. Detailed Design. -> Unit Test : ทำก้อนเล็กสุด component ส่วนประกอบ มา integrate กัน
5. Coding = Implement
1. BN : flash data ที่ ECU มีหลายวิธี, calib ค่าต่างๆที่ flash ถูกต้องไหม, diagnosisตัวมันเองพร้อมทำงานไหม (ปกติและไม่มี error ใช่ไหม)(ECU ผ่านทาง CAN), functional test เช่น รถวิ่ง ดึงกุญแจออก กับ simulation, buscomm เช่นตัดสายเบรกเกิดอะไรขึ้น
2. Layer : ดู signal เข้าออก (ต่างที่ของ unittest เป็น signal จริง)
3. EE : diagnosis system ความเร็วในการตอบกลับ ส่งdataผิด, diagnosis master ตาม ISO ถ้าเกิดปัญหาจะเป็นอย่างไร, FAT burn หลายวิธี แต่ทำทุกวิธี
4. Safety : performance เช่น overflow จะเกิดอะไรขึ้น
5. Robustness : test แบบละเอียดทุกค่า เช่น variable ค่านี้ มี type เป็น uint8 range เป็น 0-100 ดังนั้นเรา test 0-100, 101, 255
แล้ว white-box กับ black-box หล่ะ
white-box คือ การ test แบบเห็นของทั้งหมด เช่น Unit Test
black-box คือ การ test แบบไม่เห็นของข้างใน เห็นแต่ input กับ output
ทำไมถึงใช้ v-model
เพราะว่าแบบ SDLC ปกติ ไม่ได้ให้ความสำคัญกับการ test เท่าที่ควร เช่น ถ้าเราทำโปรแกรมตัวนึง เราก็ coding ไปเรื่อยๆจน deadline แล้วพอมาทดสอบตอนใกล้ส่ง พบว่าเกิด bug กับ code ที่เราเขียน ดังนั้นทำให้ fixed bug ทั้งหลายไม่ทัน ทำให้โปรแกรมมีปัญหาเมื่อถึงมือลูกค้า หรือไม่ก็เลื่อน deadline ออกไป ทำให้ส่วนงานอื่นๆต้องรวนไปอีก และเมื่อเราให้สำคัญกับการ test มากขึ้น ทำให้งานของเราดีขึ้น ลูกค้า happy กับเรา ทำให้รายได้ของบริษัทมากขึ้น (เพราะไม่มีชื่อเสียออกมา คนก็วางใจซื้อสินค้าต่อไป) เช่น บริษัทรถยนต์ทั้งหลาย ต้องมีการ test ตามแบบใน v-model ซึ่งเน้นความปลอดภัยของผู้ขับขี่ แอปแอนดรอยด์มีการทำ test case แต่ละ function เพื่อให้ developer สามารถทำแอปให้มีประสิทธิภาพดีขึ้น และ UX ดีขึ้นด้วย
automated testing คืออะไร
เครื่องมือที่ช่วยในการทำ testing ที่ทำงานได้ด้วยตัวเอง สามรถสร้าง test case และ/หรือ test step เองได้ และสามารถตรวจสอบความถูกต้องเองได้ เราอาจจะสร้าง automated test ขึ้นมาเอง หรือซื้อ tool มาใช้ก็ได้ การทำ unittest ก็ถือว่าเป็นการ automated testing อีกอย่างหนึ่งเช่นกัน เนื่องจากสามารถ fixed bug และช่วยหา defect ได้ง่ายขึ้น เช่นทำ testcase ใน MATLAB จากโมเดลที่เราสร้างขึ้น หรือการทำ code review เราคงจะเหนื่อยกับการทำ manual test ดังนั้นจึงเขียน tool ขึ้นมาเพื่อช่วยลดเวลาในการทำ manual test ลงไป ทำให้งานเราเสร็จเร็วขึ้น
นอกจาก tester จะจับผิดโค้ดได้แล้ว ยังสามารถแก้ปัญหาว่าจุดนี้ผิดเพราะอะไร ควรจะแก้อย่างไรได้ด้วยการทำ automated test นั่นเอง ซึ่งมีความสามารถในการ testing + developing ได้ด้วย และเราควรให้ความสำคัญต่อการ testing โปรแกรมของเรา ไม่ว่าจะเป็นโปรแกรมบนคอม ในรถ แม้กระทั่งแอปมือถือ ซื่อสาย android มีเครื่องไม้เครื่องมือหลายตัวให้ใช้ ไม่ต้องเขียนมือเองด้วย :)
นอกจาก tester จะจับผิดโค้ดได้แล้ว ยังสามารถแก้ปัญหาว่าจุดนี้ผิดเพราะอะไร ควรจะแก้อย่างไรได้ด้วยการทำ automated test นั่นเอง ซึ่งมีความสามารถในการ testing + developing ได้ด้วย และเราควรให้ความสำคัญต่อการ testing โปรแกรมของเรา ไม่ว่าจะเป็นโปรแกรมบนคอม ในรถ แม้กระทั่งแอปมือถือ ซื่อสาย android มีเครื่องไม้เครื่องมือหลายตัวให้ใช้ ไม่ต้องเขียนมือเองด้วย :)
ป้ายกำกับ: programming
0 ความคิดเห็น:
แสดงความคิดเห็น
สมัครสมาชิก ส่งความคิดเห็น [Atom]
<< หน้าแรก