|sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/dev-tools/testing-overviewmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Simplified)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/zh_CN/dev-tools/testing-overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/it_IT/dev-tools/testing-overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ja_JP/dev-tools/testing-overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ko_KR/dev-tools/testing-overviewmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/sp_SP/dev-tools/testing-overviewmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Traditional)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh[/var/lib/git/docbuild/linux/Documentation/translations/zh_TW/dev-tools/testing-overview.rsthKubhwarning)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]h paragraph)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_TW/disclaimer-zh_TW.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubhnote)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h]h)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h](h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<}(hhhhhNhNubh reference)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hhhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhhubh>。}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubh field_body)}(h,Documentation/dev-tools/testing-overview.rsth]h)}(hjh]h,Documentation/dev-tools/testing-overview.rst}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j )}(h Translatorh]h Translator}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:hhhKubj)}(h2胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> h]h)}(h1胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn>h](h胡皓文 Hu Haowen <}(hjOhhhNhNubh)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hjWhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhjOubh>}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]h ]h"]h$]h&]uh1jhhhhhhhKubhsection)}(hhh](htitle)}(h內核測試指南h]h內核測試指南}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK ubh)}(h有許多不同的工具可以用於測試Linux內核,因此瞭解什麼時候使用它們可能 很困難。本文檔粗略概述了它們之間的區別,並闡釋了它們是怎樣糅合在一起 的。h]h有許多不同的工具可以用於測試Linux內核,因此瞭解什麼時候使用它們可能 很困難。本文檔粗略概述了它們之間的區別,並闡釋了它們是怎樣糅合在一起 的。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjhhubj)}(hhh](j)}(h編寫和運行測試h]h編寫和運行測試}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h大多數內核測試都是用kselftest或KUnit框架之一編寫的。它們都讓運行測試 更加簡化,併爲編寫新測試提供幫助。h]h大多數內核測試都是用kselftest或KUnit框架之一編寫的。它們都讓運行測試 更加簡化,併爲編寫新測試提供幫助。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hr如果你想驗證內核的行爲——尤其是內核的特定部分——那你就要使用kUnit或 kselftest。h]hr如果你想驗證內核的行爲——尤其是內核的特定部分——那你就要使用kUnit或 kselftest。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hhh](j)}(hKUnit和kselftest的區別h]hKUnit和kselftest的區別}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(hX.由於本文段中部分術語尚無較好的對應中文釋義,可能導致與原文含義 存在些許差異,因此建議讀者結合原文 (Documentation/dev-tools/testing-overview.rst)輔助閱讀。 如對部分翻譯有異議或有更好的翻譯意見,歡迎聯繫譯者進行修訂。h]h)}(hX.由於本文段中部分術語尚無較好的對應中文釋義,可能導致與原文含義 存在些許差異,因此建議讀者結合原文 (Documentation/dev-tools/testing-overview.rst)輔助閱讀。 如對部分翻譯有異議或有更好的翻譯意見,歡迎聯繫譯者進行修訂。h]hX.由於本文段中部分術語尚無較好的對應中文釋義,可能導致與原文含義 存在些許差異,因此建議讀者結合原文 (Documentation/dev-tools/testing-overview.rst)輔助閱讀。 如對部分翻譯有異議或有更好的翻譯意見,歡迎聯繫譯者進行修訂。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hKUnit(Documentation/dev-tools/kunit/index.rst)是用於“白箱”測 試的一個完整的內核內部系統:因爲測試代碼是內核的一部分,所以它能夠訪 問用戶空間不能訪問到的內部結構和功能。h]hKUnit(Documentation/dev-tools/kunit/index.rst)是用於“白箱”測 試的一個完整的內核內部系統:因爲測試代碼是內核的一部分,所以它能夠訪 問用戶空間不能訪問到的內部結構和功能。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh)}(h因此,KUnit測試最好針對內核中較小的、自包含的部分,以便能夠獨立地測 試。“單元”測試的概念亦是如此。h]h因此,KUnit測試最好針對內核中較小的、自包含的部分,以便能夠獨立地測 試。“單元”測試的概念亦是如此。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(h比如,一個KUnit測試可能測試一個單獨的內核功能(甚至通過一個函數測試 一個單一的代碼路徑,例如一個錯誤處理案例),而不是整個地測試一個特性。h]h比如,一個KUnit測試可能測試一個單獨的內核功能(甚至通過一個函數測試 一個單一的代碼路徑,例如一個錯誤處理案例),而不是整個地測試一個特性。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(hu這也使得KUnit測試構建和運行非常地快,從而能夠作爲開發流程的一部分被 頻繁地運行。h]hu這也使得KUnit測試構建和運行非常地快,從而能夠作爲開發流程的一部分被 頻繁地運行。}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hjhhubh)}(hi有關更詳細的介紹,請參閱KUnit測試代碼風格指南 Documentation/dev-tools/kunit/style.rsth]hi有關更詳細的介紹,請參閱KUnit測試代碼風格指南 Documentation/dev-tools/kunit/style.rst}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjhhubh)}(hkselftest(Documentation/dev-tools/kselftest.rst),相對來說,大量用 於用戶空間,並且通常測試用戶空間的腳本或程序。h]hkselftest(Documentation/dev-tools/kselftest.rst),相對來說,大量用 於用戶空間,並且通常測試用戶空間的腳本或程序。}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubh)}(hX)這使得編寫複雜的測試,或者需要操作更多全局系統狀態的測試更加容易(諸 如生成進程之類)。然而,從kselftest直接調用內核函數是不行的。這也就 意味着只有通過某種方式(如系統調用、驅動設備、文件系統等)導出到了用 戶空間的內核功能才能使用kselftest來測試。爲此,有些測試包含了一個伴 生的內核模塊用於導出更多的信息和功能。不過,對於基本上或者完全在內核 中運行的測試,KUnit可能是更佳工具。h]hX)這使得編寫複雜的測試,或者需要操作更多全局系統狀態的測試更加容易(諸 如生成進程之類)。然而,從kselftest直接調用內核函數是不行的。這也就 意味着只有通過某種方式(如系統調用、驅動設備、文件系統等)導出到了用 戶空間的內核功能才能使用kselftest來測試。爲此,有些測試包含了一個伴 生的內核模塊用於導出更多的信息和功能。不過,對於基本上或者完全在內核 中運行的測試,KUnit可能是更佳工具。}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjhhubh)}(hkselftest也因此非常適合於全部功能的測試,因爲這些功能會將接口暴露到 用戶空間,從而能夠被測試,而不是展現實現細節。“system”測試和 “end-to-end”測試亦是如此。h]hkselftest也因此非常適合於全部功能的測試,因爲這些功能會將接口暴露到 用戶空間,從而能夠被測試,而不是展現實現細節。“system”測試和 “end-to-end”測試亦是如此。}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK