ฉันควรใช้การทดสอบใดในการทดสอบตัวแยกวิเคราะห์ csv
ฉันมีตัวแยกวิเคราะห์ csv อย่างง่ายใน C # และฉันต้องการให้แน่ใจว่าฉันมีการทดสอบหน่วยครอบคลุมทุกกรณีขอบ (และผิดปกติ) ทั่วไป ฉันควรใช้การทดสอบประเภทใดเพื่อระบุปัญหาที่อาจเกิดขึ้นและคดีเขตแดน
ฉันควรใช้การทดสอบใดในการทดสอบตัวแยกวิเคราะห์ csv
ฉันมีตัวแยกวิเคราะห์ csv อย่างง่ายใน C # และฉันต้องการให้แน่ใจว่าฉันมีการทดสอบหน่วยครอบคลุมทุกกรณีขอบ (และผิดปกติ) ทั่วไป ฉันควรใช้การทดสอบประเภทใดเพื่อระบุปัญหาที่อาจเกิดขึ้นและคดีเขตแดน
คำตอบ:
ฉันเพิ่งพบhttps://github.com/maxogden/csv-spectrum :
กลุ่มของไฟล์ CSV ที่แตกต่างกันเพื่อใช้เป็นทดสอบกรดสำหรับห้องสมุดการแยกวิเคราะห์ CSV นอกจากนี้ยังมีไฟล์ CSV เวอร์ชัน JSON สำหรับการตรวจสอบ
เป้าหมายของพื้นที่เก็บข้อมูลนี้คือการจับกรณีทดสอบเพื่อเป็นตัวแทนของสเปกตรัม CSV ทั้งหมด
ต่อไปนี้เป็นกรณีเขตแดนไม่กี่แห่งที่คุณควรคิดและทำกรณีทดสอบ
,foo,
,"foo",
,"foo\nbar"
,"foo,bar"
,"foo""bar"
,,
ควรเป็นโมฆะและ,"",
ควรให้สตริงว่างไม่มีข้อกำหนดอย่างเป็นทางการสำหรับไฟล์ CSV อย่างไรก็ตามลองดูที่RFC 4180 - รูปแบบทั่วไปและประเภท MIME สำหรับไฟล์ CSV (โดยเฉพาะส่วนที่ 2) ซึ่งเป็นเอกสารรูปแบบที่ดูเหมือนว่าจะตามมาด้วยการใช้งานส่วนใหญ่
ดูเหมือนว่าค่อนข้างตรงไปตรงมาที่จะเริ่มสร้างกรณีทดสอบจากรายการในส่วนที่ 2 โดยเฉพาะ:
แต่ละระเบียนจะอยู่ในบรรทัดที่แยกต่างหากคั่นด้วยตัวแบ่งบรรทัด (CRLF) ตัวอย่างเช่น:
aaa, bbb, ccc CRLF zzz, yyy, xxx CRLF
ระเบียนสุดท้ายในไฟล์อาจมีหรือไม่มีตัวแบ่งบรรทัดสิ้นสุด ตัวอย่างเช่น:
aaa, bbb, ccc CZF zzz, yyy, xxx
อาจมีบรรทัดส่วนหัวเสริมปรากฏเป็นบรรทัดแรกของไฟล์ที่มีรูปแบบเดียวกันกับบรรทัดบันทึกปกติ ส่วนหัวนี้จะมีชื่อที่สอดคล้องกับเขตข้อมูลในไฟล์และควรมีจำนวนเขตข้อมูลเดียวกันกับระเบียนในส่วนที่เหลือของไฟล์ (การมีหรือไม่มีบรรทัดส่วนหัวควรระบุผ่านพารามิเตอร์ "header" ของตัวเลือกนี้ ประเภท MIME) ตัวอย่างเช่น:
field_name, field_name, field_name CRLF aaa, bbb, ccc CRLF zzz, yyy, xxx CRLF
ภายในส่วนหัวและแต่ละระเบียนอาจมีหนึ่งหรือมากกว่าหนึ่งฟิลด์คั่นด้วยเครื่องหมายจุลภาค แต่ละบรรทัดควรมีจำนวนฟิลด์เท่ากันตลอดทั้งไฟล์ ช่องว่างถือเป็นส่วนหนึ่งของเขตข้อมูลและไม่ควรละเว้น ฟิลด์สุดท้ายในระเบียนต้องไม่ตามด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น:
AAA, BBB, CCC
แต่ละเขตข้อมูลอาจมีหรือไม่มีอยู่ในเครื่องหมายคำพูดคู่ (แต่บางโปรแกรมเช่น Microsoft Excel จะไม่ใช้เครื่องหมายคำพูดคู่เลย) หากเขตข้อมูลไม่ได้อยู่ในเครื่องหมายคำพูดคู่การอ้างอิงสองครั้งอาจไม่ปรากฏในเขตข้อมูล ตัวอย่างเช่น:
"aaa", "bbb", "ccc" CRLF zzz, yyy, xxx
ฟิลด์ที่มีตัวแบ่งบรรทัด (CRLF) เครื่องหมายคำพูดคู่และเครื่องหมายจุลภาคควรอยู่ในเครื่องหมายคำพูดคู่ ตัวอย่างเช่น:
"aaa", "b CRLF bb", "ccc" CzzF zzz, yyy, xxx
หากมีการใช้เครื่องหมายอัญประกาศคู่เพื่อใส่เขตข้อมูลดังนั้นเครื่องหมายอัญประกาศคู่ที่ปรากฏภายในเขตข้อมูลจะต้องถูกหลีกเลี่ยงโดยนำหน้าด้วยเครื่องหมายคำพูดคู่อื่น ตัวอย่างเช่น:
"AAA", "B" "บีบี", "CCC"
ข้อมูลการสำรวจสำมะโนประชากรของสหรัฐมีให้ใน CSV
ฉันทำงานกับมันมาระยะหนึ่งแล้ว แน่นอนว่ามันแปลกมากที่จะทำการทดสอบที่ดีและมีตันและตัน
ตรวจสอบไดเรกทอรีนี้และดูรหัสในไฟล์ * .t:
http://cpansearch.perl.org/src/MAKAMAKA/Text-CSV-1.32/t/
(หมายเลขเวอร์ชัน -1.32 อาจเปลี่ยนไปในที่สุดดังนั้นลิงก์อาจกลายเป็น "ตาย" เพิ่มหมายเลขรุ่นด้วยตัวคุณเองโดยการลองผิดลองถูกหรือไปที่ไดเรกทอรีหลักหรือคลิกที่นี่
https://metacpan.org/pod/Text::CSV
และคลิกผ่านทาง "เรียกดู" เพื่อซอร์สโค้ดของรุ่นใหม่ล่าสุด)
ข้อความ :: CSV_XS เป็นโมดูล perl สำหรับการแยกวิเคราะห์ไฟล์ csv ไฟล์ * .t เขียนด้วยภาษา Perl 5 ซึ่งประกอบด้วยไฟล์ทดสอบจำนวนมากสำหรับการทดสอบโมดูลด้วยตนเองโดยจะต้องดำเนินการในเวลาติดตั้งโมดูล