Tag Archives: testing

คำถามจากชั้นเรียน Software Quality Management รุ่น 1

question marks heap

สวัสดีเช้าวันจันทร์ที่ 19 สิงหาคม พ.ศ. 2556 สืบเนื่องจากวันเสาร์และอาทิตย์ที่ผ่านมา ได้มีโอกาสไปแบ่งปัน ความรู้ + ประสบการณ์ + ความเกรียน ในชั้นเรียนชื่อ Thailand SPIN: Software Quality Management 1 โดยมีผู้เรียนทั้งหมด 15 ท่าน ก็จบลงไปอย่างสนุกสนาน (มุมคนสอนนะครับ) และก็มีคำถามที่ผู้เข้าเรียนได้เขียนลง Post-It แปะไว้บนกระดานคำถาม ซึ่งส่วนใหญ่ก็ได้ตอบไปในห้องแล้ว มีคำถามบางส่วนที่ยังตอบไม่ได้ และจะมาหาคำตอบให้ครับ

เช้าวันนี้เลยขอนำคำถามที่ได้จากชั้นเรียนมาแบ่งปันกัน เผื่อเพื่อนพ้องน้องพี่จะช่วยกันตอบ หรือแนะนำแนวทาง จากประสบการณ์ทำงานของตัวเองครับ

Continue reading คำถามจากชั้นเรียน Software Quality Management รุ่น 1

Make A Game For Testing : สร้างเกมให้ทดสอบได้

ผมจะเล่าวิธีการทดสอบเกมที่เราสร้างขึ้น

ปัญหาของเกม คือ เป็นซอฟแวร์ที่ความคงที่ต่ำกว่าซอฟแวร์ประเภทอื่น(dynamic) การเปิดการใช้งานแต่ละครั้งมีการรับส่งข้อมูลที่แตกต่างกัน จีงทำให้ซอฟแวร์ประเภทนี้ แสดงบัคที่ได้รับรายงานมาอีกครั้ง(reproduce bug) ไม่ใช่เรื่องที่ทำได้โดยสะดวก จึงอาศัยการพัฒนาซอฟแวร์เชิงโครงสร้างที่่สามารถบังคับให้ซอฟแวร์เกมแสดงจุดที่เราต้องการได้

กล่าวคือ การสร้างเกมให้ทดสอบได้ในระดับลึกและสะดวกนั้นไม่ใช่เรื่องที่เกิดขึ้นโดยธรรมชาติหรือขาดการวางแผนตั้งแต่แรก แต่ต้องอาศัยการออกแบบเชิงระบบและเข้าใจการควบคุมสิ่งต่างๆภายในก่อนเริ่มสร้างเกมขึ้นมา วันใดวันนึงที่ต้องการใส่ function การทำงานใหม่ๆเข้าไป จึงแน่ใจได้ว่าสิ่งที่เคยทำงานได้อย่างถูกต้อง ยังคงทำงานถูกต้องต่อไป

Game มีลักษณะเป็น Dynamic แต่เวลา Test เราต้องทำให้เป็น Static เพื่อทำให้ Test Case ยังคง Test ในจุดที่เราสนใจอยู่ทุกครั้ง

ยกตัวอย่างเช่น “เมื่อตัวละคร เดินไปถึง สุดฉาก บอสที่เกิดขึ้นมาหากบอสใช้ท่าไม้ตาย เกมจะค้างทันที”  ลองคิดดูว่าหากการทดสอบเกมแต่ละครั้ง ต้องเล่นตั้งแต่ฉากเริ่มไปจนสุดฉากแล้วเจอบอสเลย แล้วให้แสดงบัค แล้วกลับแก้ไขบัค แล้วเล่นอีก กลับไปดูผล ถ้าเป็นแบบนี้กว่าจะพัฒนาเกมนี้เสร็จ คงใช้เวลาและความอดทนสูงมาก เพราะฉะนั้น เราควรสร้างเกมเพื่อให้ทดสอบได้ตั้งแรก

Continue reading Make A Game For Testing : สร้างเกมให้ทดสอบได้

ระบบที่ดีต้องเทสได้เรื่อย ๆ จริงหรือ ???

 

สวัสดีทุก ๆ คนค่ะ วันนี้ขอมาเปิดประเด็นกันสักนิด เนื่องจากเมื่อประมาณ 1 สัปดาห์ที่ผ่านมา ได้ไปคุยกับเพื่อนคนนึง แล้วเค้าถามว่า

เพื่อน: ทำไงดีอ่ะ พระเจ้า ท่านบอกว่า “ระบบที่ดีต้องเทสได้เรื่อย ๆ สิ” จริงเหรอ????
เรา: (ถามทันควัน)โทษนะ คนที่ถามนี่เค้าทำงานส่วนไหน
เพื่อน: Test … หง่ะ
เรา: (ถามต่อ หลังจากอึ้งงงงงงงงงง) เค้ามี Test plan / Test Schedule / Test Case หรืออะไรให้มั้งมั้ย
เพือน: ไม่มีเล๊ย
เรา: แล้วแต่ละวันเค้าจะทดสอบส่วนไหนบ้าง จะส่งผลการทดสอบอะไรให้บ้างล่ะ ยังไง
เพือน: ที่ถามมา เค้าไม่มีอะไรให้เลย พอถามมาก ๆ เข้า พระเจ้าท่านก็เลยบอกว่า “ระบบที่ดีต้องเทสได้เรื่อย ๆ สิ”

 

Continue reading ระบบที่ดีต้องเทสได้เรื่อย ๆ จริงหรือ ???

Infographic – Education for Testers

สวัสดีค่ะ วันพุธที่ 4 กรกฎาคม พ.ศ. 2555 วันนี้ @iamjaae ระหว่างที่อ่าน ๆ ดู ๆ Timeline ใน Twitter ก็พบกับ Info graphic ตัวนี้ ดูแล้วน่าสนใจดี ๆ เลยหยิบมาฝากให้ดูเพลิน ๆ กันนะค่ะ

Continue reading Infographic – Education for Testers

Comic: มานั่งพักสายตาดูการ์ตูนฮา ๆ แก้เครียดกันดีกว่า

สวัสดีอีกครั้งค่ะ เพื่อนพ้องน้องพี่ชาว WeLoveBug เป็นอย่างไรกันบ้างค่ะ ช่วงวันหยุดยาวววว….ที่ผ่านมา มีใครได้ไปทำบุญ หรือ ไปเที่ยว ที่ไหนกันมาบ้างหรือป่าวค่ะ สำหรับท่านใดที่ได้ไปทำบุญก็ช่างเป็นพุทธศาสนิกชนที่ดีเยี่ยมไปเลยค่ะ ส่วนใครที่ได้ไปเที่ยวมาล่ะก้อ น่าอิจฉาเป็นที่ซู้ดดดดดดดดดด…. ค่ะ

หลังจากที่หาอ่านข้อมูลไปเรื่อย ๆ เปื่อย ค้นนั่นโน่นนี่ จนโดนท่านพี่ Google ท่านถามไปหลายต่อหลายรอบว่า เราเป็นมนุษย์หรือป่าว (ถามอยู่ได้เนอะ ไหนบอกว่า รู้ทุกอย่างไว อิอิ) ก็ไปพบกับภาพการ์ตูนฮา ๆ ค่ะ วันนี้ได้โอกาส แอบว่าง หลบท่านหัวหน้า เอามาแ่บ่งปันให้เพื่อนพ้องน้องพี่ได้ดูกัน ขำ ๆ ฮา ๆ แก้เครียดน่ะค่ะ

อะแฮ่ม แต่ว่า มีเสียงกระซิบมาว่า ช่วยเขียนให้ ฮา ๆ หน่อยนะ  แต่แบบว่าเคยผ่านหูผ่านตาบ้างมั้ยค่ะ กับข้อความที่ว่า

ภาพหนึ่งภาพแทนคำพูดนับล้านคำ :->

ถ้าง้าน ก็ใ้ช้แต่ภาพไปก่อนแล้วกันนะค่ะ เอางี้ดีกว่า แวะมาอ่านมาดูเล่น ๆ อย่างเดียวได้ไง ใครชอบภาพไหน มาช่วยกันบรรยายกันดีกว่า ว่าแต่ละท่านคิดเห็นเช่นไรกับภาพแต่ละภาพดีหรือป่าวค่ะ พร้อมแล้วก็ไปกันเลยค่ะ …….

Do Loop Until 0

Continue reading Comic: มานั่งพักสายตาดูการ์ตูนฮา ๆ แก้เครียดกันดีกว่า

Testing Doesn’t Finish It’s just STOP Episode 1

ทกสอบการเขียนบทความผ่าน App WordPress บน iPhone ณ ร้านข้าวต้ม ริมถนน ก็เลยประเดิมด้วยประโยคที่ผมชอบมาก

“Testing Doesn’t Finish It’s just STOP”

ผู้คนส่วนใหญ่มักจะพูดกันติดปากอยู่บ่อยๆ ว่า “Test เสร็จ”

แต่เพื่อนพ้องน้องพี่ที่ทำงานทำการเกี่ยวข้องกับ Software Quality จะรู้ดีว่า “มันไม่ใช่นะ มันไม่ใช่”

Testing ไม่มีมีคำว่า “เสร็จ” หรือ “จบ” มีแต่ “หยุด”

พูดกันแบบง่ายๆ เราจะหยุดการ Testing เมื่อตรงตาม Exit Criteria

Software Testing ช่วยลด Defect ให้เหลือน้อยที่สุด และเพิ่มความมั่นใจ

ขอจบตอนที่ 1 ของ Testing Doesn’t Finish It’s just STOP ไว้ ณ ร้านข้าวต้มริมถนนครับ

Programmer can test

programmer ก็ช่วย test ได้ครับ

ผมทำงานในทีมเล็กๆ ไม่มีเงิน หรือคนมากพอที่จะไปจ้าง หรือสร้างทีม tester เพราะฉะนั้น โปรแกรมเมอร์นี่แล จะต้องแบ่งเบาภาระการ test ให้กับทีม

สิ่งที่ programmer ช่วยได้ คือการใช้ Test driven development(TDD) เป็นตัวช่วย

สิ่งที่ผมเคยฟาดฟันมาก่อน คือการใช้ unit test ทำการ test source code ในทุกๆ unit ไม่ว่าจะเป็นตัวแปรเอย method(หรือบางคนจะเรียกว่า function)เอย หรือ integration test ที่เขียนยังไงก็ไม่ครอบคลุม จนมีฝรั่งใจดี สร้างสิ่งที่เรียกว่า Behavior driven development(BDD) นี่แหละ ใช่เลย แทนที่เราจะมองให้เป็น unit ทำไมเราไม่มองให้เป็นพฤติกรรม(behavior) ทดสอบที่พฤติกรรมไปเลย มันก็เลยเป็นการรวมกันของ unit test กับ integration test นี่แหละ ใช่เลย!!

แล้ว programmer จะไปเขียน test ตอนไหน ?? หลายๆ คนที่เคยทำ ก็อาจจะบอกว่า ก็เขียน code ไปก่อน แล้วไปเขียน test ทีหลังไง แต่ผมไม่ได้ทำแบบนั้น ผมใช้แนวคิดเรื่อง test first เป็นแนวทาง ก็คือเขียน test ไปก่อนนั่นแหละ แล้วค่อย implement ทีหลัง จริงๆ ต้องบอกว่า test ไป implement ไป มากกว่า

ตอนที่ใช้ Unit test มันจะทำ test first ยากหน่อย เพราะเวลา test มันจะต้อง test จาก code ที่เรา implement จริงๆ แต่พอได้ BDD มาช่วย การทำ test first ก็ดีขึ้น เพราะมันมีสิ่งที่เรียกว่า Mock/Stub เข้ามาช่วย เราเขียน test ได้นานขึ้น แล้วค่อยไป implement ทีเดียว

แน่นอนว่า การทำ test first จะช่วยให้การ test ง่ายขึ้น ดัก runtime error หรือ bug ที่เราคาดไม่ถึงมาก่อนได้มากขึ้น ถ้าเราใช้ unit test มันก็คงจะ test ได้แค่ unit นั้นๆ ที่เราพิจารณา ถึงแม้ integration test จะ test โดยรวมได้ แต่ผมก็ยังว่ามันไม่ครอบคลุมอยู่ดี ถ้าใช้ BDD จะช่วยเรื่องนี้ได้เยอะ เพราะเรามองเป็นพฤติกรรม(เดี๋ยวมาลุยกันตอนถัดไปครับ) ถ้าพฤติกรรมที่เรากำลัง test ผ่าน runtime error ก็จะหายไปเยอะเลย

ฟังดูเหมือนว่าการเขียน test จะเป็นสิ่งดี แต่มันไม่ค่อยสนุกเท่าไหร่ ปัญหามันก็มีบ้างครับ ส่วนใหญ่จะเป็นเรื่องของเวลาครับ เพราะเราจะเสียเวลาไปกับการเขียน test เพิ่มขึ้น แล้วเวลา coding เราจะน้อยลง และต้องเสียเวลาในการเรียนรู้อยู่นานครับ แต่ก็ยังพอมีสิ่งที่ผมเห็นว่าเป็นข้อดีในข้อเสียนี้ ก็คือ เราเสียเวลาในการเขียน code ก็จริง แต่ถ้าเขียน test ให้ครบหมดทุกกรณี(โดยเฉพาะ BDD คือ ทุกกรณีของพฤติกรรมของงานของเรา) เราจะมองเห็นทุก requirement และเป็น flow chart แบบคร่าวๆ

โดยส่วนตัวแล้วผมว่าเสียเวลาสักหน่อย กับการเขียน test เพื่อแลกกับความถูกต้องของงาน ผมว่าคุ้มครับ ทั้งนี้ ยังช่วยให้ tester ทำงานได้ง่ายขึ้นด้วย

รับจ้างพัฒนาเว็บไซต์ จะคิดราคาอย่างไรดี?

ประเดิมบล็อกใหม่ ด้วยเรื่องเงินๆ ทองๆ ฉลองศักราชใหม่นี้กันเลยน่ะค่ะเผื่อว่า หลายๆ คนอย่างเปิดธุรกิจส่วนตัว หรือ รับงานนอกในอนาคตจะได้มีสูตรในการคำนวณหารายได้เข้ากระเป๋ากันงัยค่ะ….งั้นถือโอกาสอวยพรปีใหม่ด้วยเลยดีกว่า ขอให้ รวย…ร่วย…ร๊วย ทุกข์หาย…หนี้หด กันทุกคนเลยน่ะค่ะ ในปีนี้ โชคดีค๊าาา

เขียนโดย MacroArt เมื่อ November 5, 2007 – 0:08 น.

หลายคนที่ทำอาชีพรับจ้างพัฒนาเว็บไซต์จะรู้สึกลำบากใจเวลาที่ลูกค้าถามว่า “project นี้ราคาเท่าไหร่?” และจะยิ่งลำบากใจมากขึ้นถ้าคุณบอกตัวเลขไปว่า “หนึ่งแสนบาท” แล้วลูกค้าทำหน้าเรียบเฉย เดาไม่ออกว่าลูกค้ารู้สึกว่าถูกไปหรือแพงไป

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

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

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

ผมมีตัวอย่างตัวเลขจากบริษัทรับพัฒนาเว็บแห่งหนึ่ง เป็นบริษัทอเมริกาที่มีออฟฟิศอยู่ในไทย (outsource งานมาที่ประเทศไทย) แต่รับงานจากลูกค้าในอเมริกา

Continue reading รับจ้างพัฒนาเว็บไซต์ จะคิดราคาอย่างไรดี?