ข้อความสองข้อความ "สามารถทำการเชื่อมต่อได้" และ "ฉันสามารถดำเนินการตามที่ฉันตั้งใจจะทำต่อไปได้" นั้นยังห่างไกลจากสิ่งที่เทียบเท่ากัน และการทดสอบการเชื่อมต่อ TCP อย่างง่ายเช่น ทดสอบ-NetConnection
ไม่ได้ทดสอบสิ่งเดียวกับของจริงเลย โคลนคอมไพล์
.
ความสามารถในการเปิดการเชื่อมต่อ TCP กับพอร์ตไม่ได้หมายความถึงการเข้าถึงบริการที่ฟังบนพอร์ตนั้น มีหลายขั้นตอนหลังจากการเชื่อมต่อเริ่มต้นที่อาจล้มเหลว เช่น การเจรจา TLS การรับรองความถูกต้อง การอนุญาต หรือการแลกเปลี่ยนโปรโตคอลระดับแอปพลิเคชัน
นอกจากนี้ ข้อจำกัดของไฟร์วอลล์ไม่ใช่สาเหตุเดียวที่เป็นไปได้ที่ทำให้การเชื่อมต่อ TCP ล้มเหลว และความล้มเหลวของการเชื่อมต่อ TCP ไม่ใช่ผลกระทบที่เป็นไปได้เพียงอย่างเดียวของข้อจำกัดของไฟร์วอลล์ ดังนั้นข้อความของคุณ:
หากฉันไม่สามารถเข้าถึงไซต์บนพอร์ตใดพอร์ตหนึ่งได้ นั่นหมายความว่าฉันจะต้องแก้ไขไฟร์วอลล์ก่อนดำเนินการต่อ
และ
มิฉะนั้น ถ้าฉันสามารถไปถึงไซต์ได้ ฉันก็จะสามารถทำสิ่งที่ฉันตั้งใจจะทำต่อไปได้
ผิดทั้งคู่
ซึ่งหมายความว่าแทนที่จะสงสัยว่าทำไมคุณ ทดสอบ-NetConnection
การทดสอบไม่พบปัญหาที่ทำให้การเข้าถึง GitHub ของคุณล้มเหลวในภายหลัง คุณควรวิเคราะห์ว่าปัญหานั้นคืออะไร แล้วประเมินว่าการตรวจพบปัญหานั้นล่วงหน้าจะให้ประโยชน์หรือไม่ ถ้าคำตอบคือใช่ คุณก็สร้างแบบทดสอบขึ้นมาได้
ในทางปฏิบัติ บ่อยครั้งแนวทางปฏิบัติที่มีประสิทธิภาพที่สุดคือการลองดำเนินการตามที่ตั้งใจไว้โดยไม่มีการทดสอบใด ๆ ก่อนหน้านี้ และจัดการกับข้อผิดพลาดใด ๆ เมื่อเกิดขึ้น การตรวจสอบปัญหาล่วงหน้าส่วนใหญ่จะสมเหตุสมผลก็ต่อเมื่อสามารถแก้ไขได้โดยอัตโนมัติ หรือหากพยายามแล้วล้มเหลวในการดำเนินการจริงจะมีต้นทุนหรือความเสี่ยงสูง
โดยเฉพาะอย่างยิ่ง การดำเนินการ GitHub ล้มเหลวค่อนข้างดีและมีการระบุสาเหตุของความล้มเหลวอย่างชัดเจน ดังนั้นฉันจึงไม่เห็นประโยชน์โดยตรงในการทดสอบการเชื่อมต่อก่อน แทนที่จะลองดำเนินการตามที่ตั้งใจไว้โดยตรง