การทดสอบหน่วยการทดสอบการรวมการทดสอบควันและการทดสอบการถดถอยคืออะไร?


732

การทดสอบหน่วยการทดสอบการรวมการทดสอบควันและการทดสอบการถดถอยคืออะไร? อะไรคือความแตกต่างระหว่างพวกเขาและเครื่องมือใดที่ฉันสามารถใช้สำหรับพวกเขาแต่ละคน

ตัวอย่างเช่นผมใช้JUnitและNUnitสำหรับการทดสอบหน่วยและการทดสอบการรวม มีเครื่องมือสำหรับสองการทดสอบควันหรือการทดสอบการถดถอยหรือไม่


2
เกี่ยวข้อง: stackoverflow.com/questions/437897/…
Bill the Lizard

1
คนอื่นตอบแล้วดี แต่ฉันต้องการเพิ่มว่าโดยส่วนตัวฉันคิดว่าการทดสอบควันและการทดสอบการถดถอยซ้ำซ้อน พวกเขาทำสิ่งเดียวกัน: ทดสอบเพื่อให้แน่ใจว่าการเปลี่ยนแปลงในระบบจะไม่ทำให้อะไรเสียหาย
Randolpho

15
ฉันคิดว่าพวกเขาค่อนข้างแตกต่างจากการทดสอบการถดถอย ฉันคิดว่าพวกเขากำลังทำการทดสอบอย่างรวดเร็ว 'น้ำหนักเบา' ที่เรียกใช้เมื่อเริ่มต้นเพื่อประหยัดเวลาเพราะถ้าสิ่งเหล่านี้ล้มเหลวคุณก็รู้ว่ามันไม่คุ้มค่ากับการทดสอบเพิ่มเติมใด ๆ เช่นไคลเอ็นต์สามารถเชื่อมต่อกับฐานข้อมูลได้หรือไม่คือติดตั้ง. net เป็นรุ่นที่ถูกต้องติดตั้ง ... คุณอาจมีการปรับใช้ล่วงหน้า (เรากำลังอัปเกรดจาก v1 เป็น v1.1 ดังนั้นตรวจสอบว่าติดตั้ง v1) แล้วหรือไม่ การทดสอบการปรับใช้ควัน
AndyM

การทดสอบควันเป็นไปตาม AndyM อธิบาย แต่พวกเขาก็เป็นแบบทดสอบการถดถอย
kevin mcdonnell

2
ที่เกี่ยวข้อง: stackoverflow.com/questions/4904096/…
rogerdpack

คำตอบ:


1044
  • การทดสอบหน่วย : ระบุและทดสอบจุดหนึ่งของสัญญาของวิธีการเดียวในชั้นเรียน สิ่งนี้ควรมีขอบเขตที่แคบและชัดเจน การอ้างอิงที่ซับซ้อนและการมีปฏิสัมพันธ์กับโลกภายนอกจะค้างอยู่หรือเยาะเย้ย

  • การรวมการทดสอบ : ทดสอบการทำงานร่วมกันที่ถูกต้องของระบบย่อยหลายระบบ มีสเปกตรัมทั้งหมดตั้งแต่การทดสอบการรวมระหว่างสองคลาสไปจนถึงการทดสอบการรวมเข้ากับสภาพแวดล้อมการผลิต

  • การทดสอบควัน (aka sanity check) : การทดสอบการรวมง่าย ๆ ที่เราเพิ่งตรวจสอบว่าเมื่อระบบภายใต้การทดสอบถูกเรียกมันกลับมาตามปกติและไม่ระเบิด

    • การทดสอบควันเป็นทั้งการเปรียบเทียบกับอุปกรณ์อิเล็กทรอนิกส์ซึ่งการทดสอบครั้งแรกเกิดขึ้นเมื่อเปิดเครื่องวงจร (ถ้ามันสูบบุหรี่ก็ไม่ดี!) ...
    • ... และเห็นได้ชัดว่ามีการวางท่อประปาที่ซึ่งระบบของท่อถูกเติมเต็มด้วยควันและตรวจสอบด้วยสายตา หากมีสิ่งใดที่สูบบุหรี่ระบบจะรั่ว
  • การทดสอบการถดถอย : การทดสอบที่เขียนขึ้นเมื่อข้อผิดพลาดได้รับการแก้ไข มันช่วยให้มั่นใจว่าข้อผิดพลาดเฉพาะนี้จะไม่เกิดขึ้นอีกครั้ง ชื่อเต็มคือ "การทดสอบการไม่ถดถอย" นอกจากนี้ยังสามารถทำการทดสอบก่อนที่จะเปลี่ยนแอปพลิเคชันเพื่อให้แน่ใจว่าแอปพลิเคชันให้ผลลัพธ์เดียวกัน

ในการนี้ฉันจะเพิ่ม:

  • การทดสอบการยอมรับ : ทดสอบว่ามีการใช้งานคุณสมบัติหรือเคสอย่างถูกต้อง มันคล้ายกับการทดสอบการรวม แต่ให้ความสำคัญกับกรณีการใช้เพื่อให้มากกว่าในส่วนประกอบที่เกี่ยวข้อง

  • การทดสอบระบบ : ทดสอบระบบเป็นกล่องดำ การพึ่งพาระบบอื่น ๆ มักจะถูกล้อเลียนหรือถูกขัดจังหวะในระหว่างการทดสอบ (ไม่เช่นนั้นจะเป็นการทดสอบการรวมระบบมากกว่า)

  • การตรวจสอบก่อนการบิน : การทดสอบที่เกิดขึ้นซ้ำในสภาพแวดล้อมที่คล้ายการผลิตเพื่อบรรเทาอาการ 'สร้างบนเครื่องของฉัน' บ่อยครั้งที่สิ่งนี้เกิดขึ้นได้ด้วยการทำการทดสอบการยอมรับหรือการทดสอบควันในสภาพแวดล้อมเช่นการผลิต


250
การทดสอบควันถือกำเนิดจากอุปกรณ์อิเล็กทรอนิกส์เป็นเวลาหนึ่งศตวรรษและมาจากระบบประปาเมื่อระบบของท่อถูกเติมด้วยควันจริงจากนั้นตรวจสอบด้วยสายตา ถ้ามันรมควันมันก็รั่ว
SnakE

2
การทดสอบการถดถอยใช้สำหรับการเปลี่ยนแปลงคุณสมบัติไม่ใช่เพียงแค่การแก้ไขข้อบกพร่อง คำตอบของ Nikita ด้านล่างเป็นคำจำกัดความที่ครอบคลุมมากขึ้น
BobRodes

25
@AndyM พื้นหลังของ 'การทดสอบควัน' ไม่ถูกต้อง IIRC มาจากระบบประปาที่สูบควันในระบบท่อหลังจากสร้างขึ้น (และก่อนที่จะเชื่อมต่อกับแหล่งจ่ายน้ำ) หากมีควันออกมาแสดงว่าท่อนั้นปิดไม่สนิท สิ่งนี้สร้างความเสียหายได้น้อยกว่าการปล่อยให้น้ำไหลผ่านและดูว่ามีแอ่งน้ำเกิดขึ้นหรือไม่ มันเป็นการประมาณขั้นต้นที่ระบบจะไม่ล้มเหลวอย่างรุนแรง กระบวนการ dev อาจเป็น: "Build" ผ่านไปแล้วหรือ => "ผ่านการทดสอบควัน" แล้วหรือยัง => "การทดสอบการยอมรับ" ผ่านไป => ออกไปยังทีม QA เพื่อทำการทดสอบโดยละเอียด
Cristian Diaconescu

4
ฉันเชื่อว่าคุณทำผิดพลาดในการระบุว่า "การทดสอบการถดถอย" จริง ๆ แล้วย่อมาจาก "การทดสอบการไม่ถดถอย" จริงหรือ ฉันสงสัยส่วนหนึ่งเพราะมันใช้งานง่ายและสับสน (แม้ว่าจะมีเงื่อนไขมากมาย) แต่ Wikipedia มีบทความสองบทความแยกต่างหากเกี่ยวกับการทดสอบการถดถอยและการทดสอบการถดถอย บทความเกี่ยวกับการทดสอบการถดถอยยังบอกว่า: ตรงกันข้ามกับการทดสอบที่ไม่ใช่การถดถอย ... ซึ่งมีวัตถุประสงค์เพื่อตรวจสอบว่าหลังจากแนะนำหรืออัปเดตแอปพลิเคชันซอฟต์แวร์ที่ระบุการเปลี่ยนแปลงนั้นมีผลตามที่ตั้งใจไว้
Brian C

2
การทดสอบ @ddaa สติและการทดสอบควันไม่เหมือนกัน การทดสอบสติจะดำเนินการหลังจากการสร้างได้ชัดเจนการทดสอบควันและได้รับการยอมรับจากทีมงาน QA สำหรับการทดสอบเพิ่มเติมการทดสอบสติตรวจสอบการทำงานที่สำคัญด้วยรายละเอียดปลีกย่อย
Bharat

105
  • การทดสอบหน่วย : การทดสอบอัตโนมัติเพื่อทดสอบการทำงานภายในของชั้นเรียน ควรทดสอบแบบสแตนด์อโลนที่ไม่เกี่ยวข้องกับทรัพยากรอื่น ๆ
  • การรวมการทดสอบ : การทดสอบอัตโนมัติที่ทำในสภาพแวดล้อมคล้ายกับการทดสอบหน่วย แต่มีทรัพยากรภายนอก (db, การเข้าถึงดิสก์)
  • การทดสอบการถดถอย : หลังจากใช้คุณสมบัติใหม่หรือแก้ไขข้อบกพร่องคุณจะทดสอบสถานการณ์อีกครั้งซึ่งทำงานในอดีต ที่นี่คุณครอบคลุมความเป็นไปได้ที่คุณสมบัติใหม่ของคุณจะทำลายคุณสมบัติที่มีอยู่
  • การทดสอบควัน : การทดสอบครั้งแรกที่ผู้ทดสอบสามารถสรุปได้ว่าพวกเขาจะทำการทดสอบต่อไป

2
คำจำกัดความของการทดสอบการถดถอยไม่ได้เป็นอย่างที่มันเป็น @ddaa กำหนดได้อย่างถูกต้อง
Robert Koritnik

ความหมายของการทดสอบบูรณาการนั้นคลุมเครืออย่างแน่นอน ยกตัวอย่างเช่นในคำตอบที่นี่stackoverflow.com/a/4904533/32453มันชัดเจนยิ่งขึ้นในขณะที่การทดสอบหลายปฏิสัมพันธ์ของรหัสของคุณไม่จำเป็นต้องจริง DB (ทรัพยากรภายนอก) ... แม้ว่าบางคนกำหนดมันในแบบที่คุณได้อธิบาย ... คำศัพท์อ่า (ผมค่อนข้างชอบความหมายอดีต FWIW ทดสอบปฏิสัมพันธ์หลาย.)
rogerdpack

โปรดดูคำถามของฉัน: stackoverflow.com/questions/61711739/…
milad salimi

ที่ตอบชื่อ แต่ไม่ได้เป็นหนึ่งเกี่ยวกับเครื่องมือสำหรับสองประเภทสุดท้ายของการทดสอบสำหรับการทดสอบควันหรือการทดสอบการถดถอย
Peter Mortensen

90

ทุกคนจะมีคำจำกัดความที่แตกต่างกันเล็กน้อยและมักจะมีพื้นที่สีเทา อย่างไรก็ตาม:

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

คุณวางการทดสอบการรวมเข้ากับการทดสอบหน่วยได้อย่างไร ถ้าmyprj เป็นไดเรกทอรีโครงการหลักและmypkgจะอยู่ภายใต้myprjฉันมีการทดสอบหน่วยที่อยู่ภายใต้และแพคเกจของฉันที่อยู่ภายใต้myprj/tests/test_module1.py myprj/mypkgวิธีนี้ใช้งานได้ดีสำหรับการทดสอบหน่วย แต่ฉันสงสัยว่าจะมีการประชุมใดฉันควรทำตามที่การทดสอบการรวมอยู่ที่ไหน
alpha_989

1
@ alpha_989: ฉันไม่รู้ว่าการประชุมจะเป็นอย่างไรสำหรับ Python ใน. NET ปัจจุบันฉันมีรหัสการผลิตการทดสอบหน่วยและการทดสอบการรวมในโครงการที่แยกกันสามโครงการเพื่อนของกันและกัน - แต่ก็มีทางเลือกมากมายเช่นกัน
Jon Skeet

โอเคขอบคุณ. ฉันสามารถหาคำแนะนำมาตรฐานอื่นนอกเหนือจากการดูโครงการงูหลามอื่น แต่ฉันจะติดตามคุณ ..
alpha_989

โปรดดูคำถามของฉัน: stackoverflow.com/questions/61711739/…
milad salimi

@miladsalimi: โปรดอย่าเพิ่มความคิดเห็นที่ไม่เกี่ยวข้องเพียงเพื่อประโยชน์ในการได้รับความสนใจสำหรับคำถามอื่น ฉันเห็นว่าคุณทำอย่างนั้นในสี่โพสต์อื่น - โปรดอย่า
Jon Skeet

51

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

ตัวอย่างอาจจะ:

  • มีข้อมูลที่ควรจะใช้ได้เฉพาะในการพัฒนา / การปรากฏตัวของการแสดงสดหรือไม่?
  • กระบวนการพื้นหลังไม่สามารถทำงานได้หรือไม่
  • ผู้ใช้สามารถเข้าสู่ระบบได้หรือไม่?

2
สามารถส่ง Ping ไปยังเว็บไซต์ได้หรือไม่ - เพียงพอแล้วมีบริการที่เรียกว่า Binary Canary
Dan Dascalescu

15
ชื่อมาจากการขุดถ่านหิน: พานกขมิ้นกับคุณ "ลงทีพี" เมื่อดักจับมันออกไปอย่างรวดเร็ว หมู่เกาะคานารี่มีความไวต่อก๊าซพิษที่มีความเข้มข้นเพียงเล็กน้อยและจะตายก่อนที่ระดับความเข้มข้นจะกลายเป็นพิษต่อมนุษย์ หากการทดสอบ Canary ล้มเหลวให้แก้ไขอย่างรวดเร็วเพราะจะใช้เวลาไม่นานก่อนที่ LIVE จะล้มเหลว
Robino

1
วิธีที่เราใช้การทดสอบ Canary ที่งานของฉันคือการเปลี่ยนลูกค้าไม่กี่รายเป็นรุ่นใหม่แทนที่จะเป็นลูกค้าทั้งหมดในครั้งเดียว หากลูกค้าสองสามคนแรกอยู่รอดเราสามารถเพิ่มส่วนที่เหลือ สองสามคนแรกคือหมู่เกาะคานารี
00prometheus

2
@ 00prometheus นั่นคือการทดสอบเบต้า
GregNash

1
@HarveyLin แม้ว่าการทดสอบ Canary นั้นจำเป็นต้องมีการทดสอบที่ป้องกันภัยพิบัติ แต่ก็ไม่ได้ใช้วิธีนี้เท่านั้น แต่กฎของหัวแม่มือคือ "การทดสอบนี้ทำงานได้เพราะมันสำคัญ" แน่นอนว่าการทดสอบทุกครั้งมีเป้าหมายเดียวกันเกือบทั้งหมดแต่แนวคิดมีความเฉพาะเจาะจงมาก ในกรณีของคุณฉันจะไม่นับการทดสอบทั้งหมดว่าเป็นนกขมิ้น
Charles Roberto Canato

12

คำตอบจากหนึ่งในเว็บไซต์ที่ดีที่สุดสำหรับเทคนิคการทดสอบซอฟต์แวร์:

ประเภทของการทดสอบซอฟต์แวร์ - รายการทั้งหมดคลิกที่นี่

ป้อนคำอธิบายภาพที่นี่

เป็นคำอธิบายที่ค่อนข้างยาวและฉันจะไม่แปะที่นี่: แต่อาจเป็นประโยชน์สำหรับคนที่ต้องการทราบเทคนิคการทดสอบทั้งหมด


10

การทดสอบหน่วย: ตรวจสอบว่าองค์ประกอบเฉพาะ (เช่นคลาส) สร้างหรือแก้ไขฟังก์ชั่นตามที่ออกแบบ การทดสอบนี้อาจเป็นแบบแมนนวลหรือแบบอัตโนมัติ แต่จะไม่เคลื่อนไหวเกินขอบเขตของส่วนประกอบ

การทดสอบการรวมระบบ: ตรวจสอบว่าการทำงานร่วมกันของส่วนประกอบเฉพาะตามที่ออกแบบไว้ การทดสอบการรวมสามารถทำได้ที่ระดับหน่วยหรือระดับระบบ การทดสอบเหล่านี้สามารถทำได้ด้วยตนเองหรือโดยอัตโนมัติ

การทดสอบการถดถอย: การตรวจสอบว่าข้อบกพร่องใหม่ไม่ได้นำมาใช้กับรหัสที่มีอยู่ การทดสอบเหล่านี้สามารถทำได้ด้วยตนเองหรือโดยอัตโนมัติ

ขึ้นอยู่กับSDLCของคุณ( น้ำตก , RUP , เปรียวและอื่น ๆ ) การทดสอบบางอย่างอาจดำเนินการใน 'ขั้นตอน' หรืออาจดำเนินการทั้งหมดไม่มากก็น้อยในเวลาเดียวกัน ตัวอย่างเช่นการทดสอบหน่วยอาจถูก จำกัด ให้กับนักพัฒนาที่เปลี่ยนรหัสไปยังผู้ทดสอบเพื่อทำการทดสอบการรวมและการถดถอย อย่างไรก็ตามวิธีการอื่นอาจมีนักพัฒนาที่ทำการทดสอบหน่วยและระดับของการรวมและการทดสอบการถดถอย (ใช้วิธีTDDพร้อมกับการรวมอย่างต่อเนื่องและการทดสอบหน่วยอัตโนมัติและการถดถอย)

ชุดเครื่องมือจะขึ้นอยู่กับ codebase เป็นส่วนใหญ่ แต่มีเครื่องมือโอเพนซอร์สมากมายสำหรับการทดสอบหน่วย (JUnit) HP (Mercury) QTP หรือSilk Testของ Borland เป็นทั้งเครื่องมือสำหรับการรวมระบบอัตโนมัติและการทดสอบการถดถอย


นี่เป็นหนึ่งในคำตอบไม่กี่ข้อที่มีบางอย่างเกี่ยวกับเครื่องมือ
Peter Mortensen

8

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

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

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

การทดสอบการถดถอยดำเนินการกรณีทดสอบเดียวกันซ้ำ ๆ เพื่อให้แน่ใจว่าโมดูลที่ไม่เปลี่ยนแปลงไม่ทำให้เกิดข้อบกพร่องใด ๆ การทดสอบการถดถอยเกิดขึ้นภายใต้การทดสอบการใช้งาน


นั่นเป็นคำตอบของชื่อเรื่อง แต่ไม่เกี่ยวกับเครื่องมือสำหรับการทดสอบสองประเภทสุดท้ายสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

7

การทดสอบการลงทะเบียน -

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


18
คุณมาจากไหน
Daryl

4
อ้างอิงจากหน้านี้ข้อความอ้างอิงนั้นมาจากบทความ "การทดสอบซอฟต์แวร์" ของ Wikipediaแม้ว่าดูเหมือนว่าข้อความจะเปลี่ยนไปตั้งแต่ปี 2010
Zach Lysobey

อย่างไรก็ตาม WP ไม่ใช่แหล่งที่ถูกต้อง แหล่งอ้างอิงที่อ้างว่าอาจถูกต้อง ไม่มีแหล่งอ้างอิงที่ถูกต้องใน WP ไม่ว่าจะเป็นในบทความหรือในหน้าอภิปรายซึ่งจะสนับสนุนการกล่าวอ้างว่า "ไม่ใช่" สร้างความแตกต่าง ผมเปรียบเทียบตัวอย่างข้อความในรายการผลที่ได้จากการค้นหาใน Google หนังสือสำหรับทั้งสองและ"regression test" "non-regression test"มันเหมือนกัน.
Rainald62

คำตอบนั้น (ส่วนหนึ่ง) ชื่อเรื่อง แต่ไม่เกี่ยวกับเครื่องมือสำหรับการทดสอบสองประเภทสุดท้ายสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

7

ฉันแค่ต้องการเพิ่มและให้บริบทเพิ่มเติมเกี่ยวกับสาเหตุที่เรามีระดับการทดสอบเหล่านี้สิ่งที่พวกเขาหมายถึงตัวอย่างจริงๆ

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

การทดสอบหน่วย - การทดสอบ เหล่านี้เป็นส่วนประกอบที่เล็กที่สุดของแอปพลิเคชันซอฟต์แวร์ของคุณ นี่อาจเป็นฟังก์ชันหนึ่งในโค้ดที่คำนวณค่าตามอินพุตบางตัว ฟังก์ชั่นนี้เป็นส่วนหนึ่งของฟังก์ชั่นอื่น ๆ ของรหัสฐานฮาร์ดแวร์ / ซอฟต์แวร์ที่ประกอบขึ้นเป็นแอปพลิเคชัน

ตัวอย่างเช่น - ลองใช้แอปพลิเคชันเครื่องคิดเลขทางเว็บ ส่วนประกอบที่เล็กที่สุดของแอปพลิเคชั่นนี้ที่จำเป็นต้องมีการทดสอบหน่วยอาจเป็นฟังก์ชั่นที่ดำเนินการเพิ่มเติมส่วนอื่นที่ทำการลบและอื่น ๆ ฟังก์ชั่นขนาดเล็กทั้งหมดเหล่านี้ประกอบกันเป็นแอพพลิเคชั่นเครื่องคิดเลข

นักพัฒนาในอดีตเขียนการทดสอบเหล่านี้โดยปกติแล้วพวกเขาจะเขียนในภาษาโปรแกรมเดียวกับแอปพลิเคชันซอฟต์แวร์ กรอบการทดสอบหน่วยเช่น JUnit และ NUnit (สำหรับ java), MSTest (สำหรับ C # และ. NET) และ Jasmine / Mocha (สำหรับ JavaScript) ใช้สำหรับวัตถุประสงค์นี้

ข้อได้เปรียบที่ใหญ่ที่สุดของการทดสอบหน่วยคือพวกเขาทำงานได้อย่างรวดเร็วภายใต้ UI และเราสามารถรับข้อเสนอแนะอย่างรวดเร็วเกี่ยวกับแอปพลิเคชัน สิ่งนี้ควรประกอบด้วยมากกว่า 50% ของการทดสอบอัตโนมัติของคุณ

API / Integration Tests - เป็นการทดสอบส่วนประกอบต่าง ๆ ของระบบซอฟต์แวร์ด้วยกัน ส่วนประกอบอาจรวมถึงฐานข้อมูลการทดสอบ API ของ (Application Programming Interface) เครื่องมือของบุคคลที่สามและบริการพร้อมกับแอปพลิเคชัน

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

ในอดีตนักพัฒนาซอฟต์แวร์หรือ QA ทางเทคนิคจะเขียนการทดสอบเหล่านี้โดยใช้เครื่องมือต่าง ๆ เช่นบุรุษไปรษณีย์, SoapUI, JMeter และเครื่องมืออื่น ๆ เช่น Testim

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

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

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

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

ข้อ จำกัด ที่ใหญ่ที่สุดของการทดสอบ UI คือพวกเขาค่อนข้างช้าเมื่อเทียบกับการทดสอบระดับหน่วยและ API ดังนั้นควรมีเพียง 10-20% ของการทดสอบอัตโนมัติทั้งหมด

การทดสอบสองประเภทถัดไปอาจแตกต่างกันไปขึ้นอยู่กับโครงการของคุณ แต่ความคิดคือ -

การทดสอบควัน

นี่อาจเป็นการรวมกันของการทดสอบ 3 ระดับข้างต้น แนวคิดคือการเรียกใช้ในระหว่างการตรวจสอบรหัสทุกครั้งและให้ฟังก์ชันการทำงานที่สำคัญของระบบยังคงทำงานตามที่คาดไว้ หลังจากการเปลี่ยนแปลงรหัสใหม่ถูกผสาน โดยทั่วไปแล้วพวกเขาต้องทำงานด้วย 5 - 10 นาทีเพื่อรับข้อเสนอแนะที่เร็วขึ้นเกี่ยวกับความล้มเหลว

การทดสอบการถดถอย

พวกเขามักจะทำงานวันละครั้งอย่างน้อยและครอบคลุมฟังก์ชั่นต่างๆของระบบ พวกเขามั่นใจว่าแอปพลิเคชันยังคงทำงานตามที่คาดไว้ พวกเขามีรายละเอียดมากกว่าการทดสอบควันและครอบคลุมสถานการณ์เพิ่มเติมของแอปพลิเคชันรวมถึงสิ่งที่ไม่สำคัญ


คำตอบนี้อาจจะทำให้ดีขึ้นโดยการตอบคำถามเกี่ยวกับเครื่องมือสำหรับการทดสอบควันหรือการทดสอบการถดถอย
Peter Mortensen

5

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

เมื่อการทดสอบของคุณเรียกมากกว่าหนึ่งคลาสจะเป็นการทดสอบการรวมเข้าด้วยกัน

ชุดทดสอบเต็มรูปแบบอาจใช้เวลานานในการรันดังนั้นหลังจากที่มีการเปลี่ยนแปลงหลายทีมดำเนินการทดสอบอย่างรวดเร็วเพื่อให้เสร็จสมบูรณ์เพื่อตรวจสอบการแตกหักที่สำคัญ ตัวอย่างเช่นคุณแบ่ง URIs เป็นทรัพยากรที่สำคัญแล้ว เหล่านี้คือการทดสอบควัน

การทดสอบการถดถอยรันบนทุกบิลด์และอนุญาตให้คุณปรับโครงสร้างได้อย่างมีประสิทธิภาพโดยการจับสิ่งที่คุณแตกหัก การทดสอบประเภทใดก็ได้สามารถทดสอบการถดถอยได้ แต่ฉันพบว่าการทดสอบหน่วยเป็นประโยชน์อย่างมากในการค้นหาแหล่งที่มาของความผิด


นั่นเป็นคำตอบของชื่อเรื่อง แต่ไม่เกี่ยวกับเครื่องมือสำหรับการทดสอบสองประเภทสุดท้ายสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

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

นั่นเป็นคำตอบของชื่อเรื่อง แต่ไม่เกี่ยวกับเครื่องมือสำหรับการทดสอบสองประเภทสุดท้ายสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

3

การทดสอบหน่วย: ตรวจสอบว่าองค์ประกอบเฉพาะ (เช่นคลาส) สร้างหรือแก้ไขฟังก์ชั่นตามที่ออกแบบ การทดสอบนี้อาจเป็นแบบแมนนวลหรือแบบอัตโนมัติ แต่ไม่ได้เคลื่อนไหวเกินขอบเขตของส่วนประกอบ

การทดสอบการรวมระบบ: ตรวจสอบว่าการทำงานร่วมกันของส่วนประกอบเฉพาะตามที่ออกแบบไว้ การทดสอบการรวมสามารถทำได้ที่ระดับหน่วยหรือระดับระบบ การทดสอบเหล่านี้สามารถทำได้ด้วยตนเองหรือโดยอัตโนมัติ

การทดสอบการถดถอย: การตรวจสอบว่าข้อบกพร่องใหม่ไม่ได้นำมาใช้กับรหัสที่มีอยู่ การทดสอบเหล่านี้สามารถทำได้ด้วยตนเองหรือโดยอัตโนมัติ

ขึ้นอยู่กับ SDLC ของคุณ (Waterfall, Rup, Agile, ฯลฯ ) การทดสอบบางอย่างอาจดำเนินการใน 'phases' หรืออาจจะทำการทั้งหมดไม่มากก็น้อยในเวลาเดียวกัน ตัวอย่างเช่นการทดสอบหน่วยอาจถูก จำกัด ให้กับนักพัฒนาที่เปลี่ยนรหัสไปยังผู้ทดสอบเพื่อทำการทดสอบการรวมและการถดถอย อย่างไรก็ตามวิธีการอื่นอาจมีนักพัฒนาที่ทำการทดสอบหน่วยและระดับการรวมและการทดสอบการถดถอย (ใช้วิธี TDD พร้อมกับการรวมอย่างต่อเนื่องและการทดสอบหน่วยอัตโนมัติและการถดถอย)


นี่คือการลอกเลียนแบบขายส่งจากคำตอบอื่นสำหรับคำถาม Stack Overflow เดียวกัน (คำตอบที่โพสต์เมื่อสี่ปีก่อน)
Peter Mortensen

3

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

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

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

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

การทดสอบแบบ end-to-end การทดสอบแบบ end-to-end เป็นการจำลองพฤติกรรมของผู้ใช้กับซอฟต์แวร์ในสภาพแวดล้อมแอปพลิเคชันที่สมบูรณ์ ตรวจสอบว่าผู้ใช้หลายคนทำงานตามที่คาดไว้และสามารถทำได้ง่ายเพียงแค่โหลดหน้าเว็บหรือเข้าสู่ระบบหรือสถานการณ์ที่ซับซ้อนมากขึ้นในการตรวจสอบการแจ้งเตือนอีเมลการชำระเงินออนไลน์ ฯลฯ ...

การทดสอบจากต้นทางถึงปลายทางมีประโยชน์มาก แต่มีค่าใช้จ่ายสูงในการดำเนินการและยากต่อการบำรุงรักษาเมื่อทำการทดสอบอัตโนมัติ แนะนำให้มีการทดสอบแบบ end-to-end ที่สำคัญสองสามตัวและใช้การทดสอบระดับต่ำกว่ามากขึ้น (การทดสอบหน่วยและการรวม) เพื่อให้สามารถระบุการเปลี่ยนแปลงที่เกิดขึ้นอย่างรวดเร็ว

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

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

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

การทดสอบควันการทดสอบควันเป็นการทดสอบพื้นฐานที่ตรวจสอบฟังก์ชันการทำงานพื้นฐานของแอปพลิเคชัน พวกเขาตั้งใจที่จะดำเนินการอย่างรวดเร็วและเป้าหมายของพวกเขาคือให้ความมั่นใจว่าคุณสมบัติที่สำคัญของระบบของคุณทำงานได้ตามที่คาดไว้

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

ที่มา: https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing


คำจำกัดความของการทดสอบควันที่นี่ค่อนข้างแย่ การทดสอบระดับต่ำใด ๆ สามารถเป็น 'การทดสอบพื้นฐานที่ตรวจสอบการทำงานขั้นพื้นฐานของแอปพลิเคชัน' ตัวเลือกที่ดีที่สุดสำหรับคำจำกัดความนี้คือการทดสอบหน่วย การทดสอบหน่วยทดสอบหน่วยของแอปพลิเคชัน (ตามชื่อที่มีความหมาย) และหน่วยเป็นฟังก์ชั่นพื้นฐานที่แท้จริง (ขึ้นอยู่กับคำจำกัดความของการใช้งาน) คำจำกัดความที่ดีที่สุดน่าจะเป็นสิ่งที่จัดทำโดย @ddaa
yerlilbilgin

2

การทดสอบหน่วย: มักจะดำเนินการโดยนักพัฒนาหลังจากการพัฒนาของพวกเขาทำเพื่อหาปัญหาจากด้านการทดสอบของพวกเขาก่อนที่พวกเขาต้องการใด ๆ พร้อมสำหรับ QA

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

การทดสอบควัน: เครื่องทดสอบทำเพื่อตรวจสอบระบบสำหรับการทดสอบระดับสูงและพยายามหาข้อบกพร่องของการแสดงจุกก่อนที่การเปลี่ยนแปลงหรือรหัสจะทำงาน

การทดสอบการถดถอย: ผู้ทดสอบดำเนินการถดถอยเพื่อตรวจสอบการทำงานที่มีอยู่เนื่องจากการเปลี่ยนแปลงที่นำมาใช้ในระบบเพื่อการปรับปรุงใหม่หรือการเปลี่ยนแปลงในระบบ


เราไม่ต้องสร้างแบบทดสอบก่อนที่จะทำการพัฒนาจริงหรือ
Vin Shahrdar

@VinShahrdar คุณกำลังพูดถึงการทดสอบหน่วย?
Krunal

ใช่. ฉันมักจะสร้างการทดสอบหน่วยของฉันก่อนที่จะเขียนรหัสการผลิต นั่นเป็นวิธีที่คุณควรจะทำถูกต้อง?
Vin Shahrdar

1
ใช่ .. แต่การทดสอบหน่วยยังดำเนินการก่อนที่ QA จะต้องเผชิญกับนักพัฒนา ก่อนการปรับใช้รหัสบนเซิร์ฟเวอร์ QA dev ทำการทดสอบหน่วยเสมอ
Krunal

2

การทดสอบหน่วย

การทดสอบหน่วยมักจะทำโดยนักพัฒนาด้านในขณะที่ผู้ทดสอบมีการพัฒนาส่วนหนึ่งในการทดสอบประเภทนี้ที่การทดสอบจะทำทีละหน่วย ในกรณีทดสอบJava JUnitสามารถเป็นไปได้ที่จะทดสอบว่าโค้ดที่เขียนนั้นได้รับการออกแบบอย่างสมบูรณ์หรือไม่

การทดสอบบูรณาการ:

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

การทดสอบควัน

การทดสอบประเภทนี้จะเกิดขึ้นในที่สุดเมื่อระบบรวมเข้าด้วยกันสำเร็จและพร้อมที่จะไปยังเซิร์ฟเวอร์ที่ใช้งานจริง

การทดสอบประเภทนี้จะทำให้แน่ใจว่าทุกฟังก์ชั่นที่สำคัญตั้งแต่ต้นจนจบทำงานได้ดีและระบบพร้อมใช้งานบนเซิร์ฟเวอร์ที่ใช้งานจริง

การทดสอบการถดถอย

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


นั่นเป็นคำตอบของชื่อเรื่อง แต่ไม่เกี่ยวกับเครื่องมือสำหรับการทดสอบสองประเภทสุดท้ายสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

2

การทดสอบควันและสติจะดำเนินการหลังจากซอฟต์แวร์สร้างเพื่อระบุว่าจะเริ่มการทดสอบ สติอาจหรือไม่อาจดำเนินการหลังจากการทดสอบควัน พวกเขาสามารถดำเนินการแยกต่างหากหรือในเวลาเดียวกัน - มีสติทันทีหลังจากควัน

เนื่องจากการทดสอบสตินั้นมีความลึกและใช้เวลามากขึ้นในกรณีส่วนใหญ่มันก็คุ้มค่าที่จะเป็นแบบอัตโนมัติ

การทดสอบควันมักใช้เวลาดำเนินการไม่เกิน 5-30 นาที เป็นเรื่องทั่วไปมากขึ้น: ตรวจสอบฟังก์ชันการทำงานหลักของระบบทั้งหมดเล็กน้อยเพื่อตรวจสอบว่าเสถียรภาพของซอฟต์แวร์ดีพอสำหรับการทดสอบเพิ่มเติมและไม่มีปัญหาบล็อกการรันของกรณีทดสอบที่วางแผนไว้

การทดสอบสตินั้นละเอียดกว่าควันและอาจใช้เวลาตั้งแต่ 15 นาทีถึงทั้งวันขึ้นอยู่กับขนาดของสิ่งก่อสร้างใหม่ มันเป็นประเภทพิเศษของการทดสอบการยอมรับดำเนินการหลังจากความก้าวหน้าหรือการทดสอบอีกครั้ง มันตรวจสอบคุณสมบัติหลักของฟังก์ชันใหม่และ / หรือการแก้ไขข้อบกพร่องพร้อมกับคุณสมบัติบางอย่างที่เกี่ยวข้องอย่างใกล้ชิดเพื่อตรวจสอบว่าพวกเขาทำงานตามตรรกะการปฏิบัติงานที่จำเป็นก่อนที่จะทำการทดสอบการถดถอยขนาดใหญ่


นี้ elaborates บ้าง แต่ไม่ได้เกี่ยวกับเครื่องมือสำหรับสองประเภทสุดท้ายของการทดสอบสำหรับการทดสอบควันหรือการทดสอบการถดถอย มันอาจทำให้เป็นเอกลักษณ์โดยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

1

มีคำตอบที่ดีอยู่แล้ว แต่ฉันต้องการปรับแต่งเพิ่มเติม:

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

การทดสอบหน่วยอย่างชัดเจนจึงเป็นการทดสอบกล่องสีขาวเพียงตัวเดียวที่นี่

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

5
การทดสอบหน่วยไม่จำเป็นต้องเป็นกล่องสีขาว การทดสอบหน่วยที่ดีที่สุดที่ฉันเคยเห็นเป็นตัวอย่างที่ดึงมาจากข้อกำหนดระบุผลลัพธ์ที่คาดหวังอย่างเป็นอิสระจากแนวคิดการใช้งานใด ๆ
joel.neely

1
เพิ่มไปที่การทดสอบหน่วยของคุณจะรวมอยู่ในการทดสอบการถดถอยของคุณดังนั้นการทดสอบการถดถอยจะไม่ทดสอบกล่องสีขาวหรือสีดำ ฉันบอกได้เลยว่าแม้แต่การทดสอบการรวมและการทดสอบควันก็สามารถทดสอบได้ทั้งแบบขาวและดำ
Lieven Keersmaekers

1
ฉันจะต้องไม่เห็นด้วยกับเรื่องนี้ การทดสอบการใช้รูปแบบการออกแบบเป็นรูปแบบหนึ่งของการทดสอบการรวมและเป็นการทดสอบกล่องสีขาว
Hazok

ที่ตอบชื่อ แต่ไม่ได้เป็นหนึ่งเกี่ยวกับเครื่องมือสำหรับสองประเภทสุดท้ายของการทดสอบสำหรับการทดสอบควันหรือการทดสอบการถดถอย นอกจากนี้ยังทำซ้ำคำตอบก่อนหน้านี้ - มันสามารถสร้างความแปลกใหม่ได้ด้วยการตอบคำถามเกี่ยวกับเครื่องมือ
Peter Mortensen

1

มีการอธิบายการทดสอบควันที่นี่แล้วและเรียบง่าย การทดสอบการถดถอยมาภายใต้การทดสอบการรวม

การทดสอบอัตโนมัติสามารถแบ่งออกเป็นสอง

การทดสอบหน่วยและการทดสอบการรวม (นี่คือทั้งหมดที่สำคัญ)

ฉันจะเรียกใช้วลี "การทดสอบแบบยาว" (LT) สำหรับการทดสอบทั้งหมดเช่นการทดสอบการรวมการทดสอบการทำงานการทดสอบการถดถอยการทดสอบ UI ฯลฯ และการทดสอบหน่วยเป็น "การทดสอบแบบสั้น"

ตัวอย่าง LT สามารถโหลดหน้าเว็บโดยอัตโนมัติเข้าสู่บัญชีและซื้อหนังสือ หากการทดสอบผ่านมีโอกาสมากขึ้นที่จะทำงานบนไซต์จริงด้วยวิธีเดียวกัน (ดังนั้นการอ้างอิง 'การนอนหลับที่ดีขึ้น') ยาว = ระยะห่างระหว่างหน้าเว็บ (เริ่ม) และฐานข้อมูล (สิ้นสุด)

และนี่คือบทความดีดีถกประโยชน์ของการทดสอบการรวม (ทดสอบยาว) มากกว่าการทดสอบหน่วย


1

การทดสอบการถดถอย - เป็นประเภทของการทดสอบซอฟต์แวร์ที่เราพยายามที่จะปกหรือตรวจสอบรอบข้อผิดพลาดการแก้ไข ฟังก์ชั่นรอบการแก้ไขข้อผิดพลาดไม่ควรเปลี่ยนแปลงหรือเปลี่ยนแปลงเนื่องจากการแก้ไขที่ให้ไว้ ปัญหาที่พบในกระบวนการดังกล่าวจะเรียกว่าเป็นปัญหาการถดถอย

การทดสอบควัน: เป็นการทดสอบเพื่อตัดสินใจว่าจะยอมรับการสร้าง / ซอฟต์แวร์สำหรับการทดสอบ QA เพิ่มเติมหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.