การอ้างอิงที่ตีพิมพ์ครั้งแรกในการเขียนโปรแกรมทดสอบครั้งแรกคืออะไร?


11

ฉันกำลังอ่าน Refactoring โดย Martin Fowler ในบทที่ 4 การทดสอบอาคารฉันเจอข้อความต่อไปนี้

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

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

ตามที่ Amazon.com หนังสือเล่มนี้ถูกตีพิมพ์ครั้งแรกเมื่อวันที่ 8 กรกฎาคม 1999 นี่เป็นข้อมูลอ้างอิงที่ตีพิมพ์ครั้งแรกสำหรับการเขียนโปรแกรมทดสอบครั้งแรกหรือมีบางสิ่งที่เร็วกว่านี้หรือไม่


มันไม่ใช่เรื่องส่วนตัว มันเกี่ยวข้องหรือไม่ ฉันไม่คิดอย่างนั้น หากคุณมีแรงจูงใจที่ดีที่จะเปิดคำถามนี้อีกครั้งโพสต์บนmeta.programmers.stackexchange.com
Maniero

@ ใหญ่: ฉันไม่แน่ใจว่าฉันเข้าใจ คุณกำลังบอกว่าคุณปิดคำถามนี้เพราะไม่ใช่อัตนัยหรือไม่ใช่คำถาม?
Eric Weilnau

มันมีวัตถุประสงค์ชัดเจน
Maniero

2
นอกจากนี้ยังมีการเขียนโปรแกรมที่เกี่ยวข้องและน่าสนใจและแม้ว่าอาจมีคำตอบที่แท้จริงเพียงข้อเดียวการพิสูจน์ว่าไม่ใช่เรื่องง่าย ไม่ไปไหนอีกแล้ว? ProgrammingHistory.stackexchange?
AShelly

4
เราสามารถให้คำถามเชิงวัตถุประสงค์ได้ที่นี่ - เราชอบคำถามที่เป็นอัตนัย แต่เช่นเดียวกับ Stack Overflow มีคำถามที่น่าสนใจที่รอดมาได้ไซต์นี้สามารถมีคำถามที่เป็นวัตถุประสงค์ที่อยู่รอด (ฉันจะไม่คาดหวังที่จะเห็นใด ๆ "ฉันจะได้รับรหัสนี้ Perl เพื่อการทำงาน" คำถามที่นี่แม้ว่า)
เจฟฟ์แอด

คำตอบ:


9

การพัฒนาที่ขับเคลื่อนการทดสอบนั้นคล้ายกับการออกแบบโดยสัญญาซึ่งคุณมีเงื่อนไขเบื้องต้นค่าคงที่และ postconditions

คำประกาศเกียรติคุณจากเบอร์ทรานด์เมเยอร์เกี่ยวข้องกับการออกแบบภาษาไอเฟลของเขาและเป็นครั้งแรกที่อธิบายไว้ในบทความต่าง ๆ ที่เริ่มต้นในปี 1986 [Wikipedia]

วิธีการอย่างเป็นทางการจากวันที่อย่างน้อยปี 1983 และถูกนำมาใช้สำหรับระบบที่สำคัญด้านความปลอดภัยเช่นรถไฟใต้ดินปารีสที่ไม่มีคนขับโดยใช้วิธีการ B:

ในรุ่นแรกและรุ่นนามธรรมมากที่สุดซึ่งเรียกว่า Abstract Machine ผู้ออกแบบควรระบุเป้าหมายของการออกแบบ [วิกิพีเดีย]

สิ่งเหล่านี้อาจเป็นสิ่งที่เคนเบ็ค "ช่วยเหลือผู้บุกเบิก ... การค้นพบการเขียนโปรแกรมทดสอบครั้งแรก"

อีกประเด็น: เห็นได้ชัดว่าโครงการ Mercury ช่วงต้นทศวรรษที่ 1960 ของ Nasa นั้นเป็นโครงการซอฟท์แวร์ตัวแรกที่ใช้การพัฒนาที่ขับเคลื่อนด้วยการทดสอบและการปฏิบัติที่คล่องตัวอื่น ๆ ฉันไม่พบเอกสารใด ๆ ในช่วงต้น แต่นี่เป็นรายงานปี 2546ที่อ้างถึงการสื่อสารของสมาชิกโครงการ:

Project Mercury ทำงานด้วยการทำซ้ำสั้น ๆ (ครึ่งวัน) ที่บรรจุอยู่ในกล่องเวลา ทีมพัฒนาทำการตรวจสอบทางเทคนิคของการเปลี่ยนแปลงทั้งหมดและน่าสนใจใช้การฝึกเขียนโปรแกรม Extreme ของการพัฒนาแบบทดสอบครั้งแรกการวางแผนและการเขียนการทดสอบก่อนการเพิ่มไมโครแต่ละครั้ง

ส่วนที่เหลือของรายงานก็น่าสนใจเช่นกัน

การอ้างอิงที่เร็วที่สุดที่เราพบว่าเน้นไปที่การอธิบายและแนะนำการพัฒนาซ้ำ ๆ เป็นรายงานปี 1968 จาก Brian Randell และ FW Zurcher จาก IBM TJ Watson Research

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

ก. การออกแบบรายละเอียดการเข้ารหัสและเอกสารของแต่ละโปรแกรมบล็อก
ชั่วโมง ออกแบบและจัดทำเอกสารของวิธีทดสอบสำหรับแต่ละบล็อกโปรแกรมพร้อมกับขั้นตอน (g)


4

Jon Bently ในการเขียนโปรแกรม Pearls (ต้นฉบับดั้งเดิมตีพิมพ์เมื่อปี 1986) ไม่ได้ระบุถึงการเขียนโปรแกรมทดสอบครั้งแรกโดยเฉพาะ แต่ในบท "การเขียนโปรแกรมที่ถูกต้อง" เขาอธิบายการเขียนอัลกอริทึมโดยการกำหนดเงื่อนไขเบื้องต้นค่าคงที่และ postconditions และในบทต่อไปจะอธิบายถึงกรอบการทดสอบอัตโนมัติ

มันไม่ใช่การทดสอบครั้งแรก แต่เขาวางรากฐานบางอย่างแน่นอน

นอกจากนี้

CIO Magazine, มีนาคม 1993, Bug Busters , โดย Lucie Juneau, pg 84 :

กรณีทดสอบ ... สามารถพัฒนาได้ก่อนที่จะมีการเขียนโค้ดใด ๆ กรณีเหล่านี้จะเป็นการดีเลิศตามข้อกำหนดของแอปพลิเคชัน ... หากนักพัฒนาได้รับการทดสอบตามข้อกำหนดก่อนที่พวกเขาจะเริ่มเขียนโค้ดพวกเขาจะออกแบบผลิตภัณฑ์ที่สามารถผ่านการทดสอบเหล่านั้น ... "


ฉบับที่ 2 เผยแพร่เมื่อวันที่ 7 ต.ค. 2542 อ้างอิงจาก Amazon.com รุ่นที่ 1 ได้รับการตีพิมพ์ในปี 1986 การอ้างอิงนี้ในรุ่นที่ 1 หรือไม่
Eric Weilnau

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

3

ที่เคนท์เบ็คในหนังสือของเขาเขียนโปรแกรมมากนอกจากนี้ยังมีการตีพิมพ์ใน1999

ข้อความแสดงแทน


ตาม Amazon.com หนังสือเล่มนี้ตีพิมพ์ครั้งแรกเมื่อวันที่ 5 ต.ค. 1999 เกือบ 3 เดือนหลังจากการตีพิมพ์ซ้ำของ Refactoring ฉันได้แก้ไขคำถามของฉันเพื่อรวมวันที่แน่นอนของการเผยแพร่ตาม Amazon.com ฉันไม่ได้อ่านหนังสือของ Kent แต่คิดว่ามันให้ข้อมูลเพิ่มเติมเกี่ยวกับการเขียนโปรแกรมทดสอบครั้งแรก
Eric Weilnau

3
มันน่าสนใจที่ปกหลังของหนังสือเล่มนี้บอกว่า Kent Beck "ช่วยผู้บุกเบิก .. การค้นพบการเขียนโปรแกรมทดสอบครั้งแรกอีกครั้ง" เขาค้นพบมันจากที่ไหน
AShelly

การค้นพบที่น่าสนใจ AShelly!

1
@AShelly: สองสามปีที่ผ่านมา Kent Beck กล่าวปาฐกถาพิเศษที่ RailsConf ในนั้นเขาอธิบายว่าเขามากับ TDD และเขากล่าวว่าเขาอ่านเกี่ยวกับเรื่องนี้ในบทความเก่าจากยุค 60
Jörg W Mittag
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.