邊緣案例
邊緣案例(edge case)是指其中一個運作參數是在極值(最大值或最小值)下的狀態,系統可能會有些特殊的情形。例如,喇叭運作在最大音量下,就算其他設定沒有變化,也可能會有明顯的音質扭曲。
有些邊緣案例可能會被忽略。在工程学中,若要針對邊緣案例進行規劃,並且作優雅的處理,這類工作的工作量很大,常常會被忽略或是低估。
以下是一些常見邊緣案例的原因[1]:
以下是一些簡單邊緣案例的例子:
- 應用程式中的過長用戶名造成應用程式緩衝區溢位,顯示異常
- 訂位系統在閏年的2月29日時無法正常運作。
一些不明顯的邊緣案例可能會造成其系統的失效。可能是在設計階段沒有預先考量到,也沒有想到在正常使用時可能會有此情形。因此,若要建立好的工程標準,需要包括相關的邊緣案例。
軟體工程
[编辑]程式設計裡的邊緣案例會和演算法中需特別處理的輸入值有關。若要確認程式在這些情形下的行為,需要建立单元测试:一般會測試演算法、子程序、和方法在這些邉界條件下的行為。會針對這些邊界建立許多的邊緣案例,以達成足夠的代碼覆蓋率,其中的假設是程式若在這些極端情形下可以正常運作,在其他條件下應該也可以正常運作[2]。
例如,有一個將二個數字相除的函式,在測試時需包括這二個數字為很大數字和很小數字的案例,若程式在這些極端條件下可以運作,在中間條件下也可以運作[3]。
程式設計者也會建立集成测试,處理一些單元測試沒有考慮到的邊緣案例[4]。這些測試包括一些整體系統才會出現的案例。單元測試要確保函式可以有正確的輸出,而整合測試要確保系統和資料庫或外部应用程序接口整合時可以有正常輸出。系統使用分布式计算、微服務或物联网都會增加其複雜度,這些系統下的整合測試也就格外重要。特別是微服務,整合測試可能無法覆蓋所有微服務的端口,因此會有沒有覆蓋到的邊緣案例,這也帶來測試上的挑戰[5]。
其他和邊緣案例有關的測試有負載測試和負面測試,這些測試的目的在擴展系統的覆蓋率,減少沒有考慮到邊緣案例的比率。
在测试驱动开发的模式中,邊緣案例可以用由系統需求來確認,並且可以對應測試,這些都是在撰寫程式之前就可以進行的。團隊在和持份者和其成員討論後,即可產出這些文件,放在产品需求文档中。
相關條目
[编辑]參考資料
[编辑]- ^ Beram, Shehab. What is an edge case? Meaning, examples in software development. LogRocket Blog. 2023-08-03 [2023-10-24]. (原始内容存档于2025-01-15) (美国英语).
- ^ Zimmerman, Josh. Unit Testing (PDF). Principles of Imperative Computation. cs.cmu.edu. 2012 [2014-01-16]. (原始内容存档 (PDF)于2024-12-09).
- ^ Cho, Shinil, The Fourier transform, Fourier Transform and Its Applications Using Microsoft EXCEL® (IOP Publishing), October 2018 [2022-02-17], ISBN 978-1-64327-286-3, S2CID 210754571, doi:10.1088/978-1-64327-286-3ch2
- ^ Khorikov, Vladimir. Unit Testing: Principles, Practices, and Patterns. Manning Publications. 2019: 188–190. ISBN 978-1617296277 (英语).
- ^ Hossain, Md. Delowar; Sultana, Tangina; Akhter, Sharmen; Hossain, Md Imtiaz; Thu, Ngo Thien; Huynh, Luan N. T.; Lee, Ga-Won; Huh, Eui-Nam. The role of microservice approach in edge computing: Opportunities, challenges, and research directions. ICT Express. 2023-06-23, 9 (6): 1162–1182. ISSN 2405-9595. doi:10.1016/j.icte.2023.06.006
.