文章目錄
英文 unit testing,縮寫 UT。測試粒度最小,一般由開發小組采用白盒方式來測試,主要測試單元是否符合“設計”。
單元測試是指對軟件中的最小可測試單元進行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義,如C語言中單元指一個函數,Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等。總的來說,單元就是人為規定的最小的被測功能模塊。單元測試是在軟件開發過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。
英文 System Test,縮寫 SIT。也叫組裝測試、聯合測試等。在單元測試的基礎上,將所有模塊按照設計要求組裝成為子系統或系統,進行集成測試。
集成測試界于單元測試和系統測試之間,起到“橋梁作用”,一般由開發小組采用白盒加黑盒的方式來測試,既驗證“設計”,又驗證“需求”。 主要用來測試模塊與模塊之間的接口,同時還要測試一些主要業務功能。集成測試是單元測試的邏輯擴展。它最簡單的形式是:把兩個已經測試過的單元組合成一個組件,測試它們之間的接口。從這一層意義上講,組件是指多個單元的集成聚合。在現實方案中,許多單元組合成組件,而這些組件又聚合為程序的更大部分。方法是測試片段的組合,并最終擴展成進程,將模塊與其他組的模塊一起測試。最后,將構成進程的所有模塊一起測試。此外,如果程序由多個進程組成,應該成對測試它們,而不是同時測試所有集成測試進程。
集成測試在系統測試之前,單元測試完成之后系統集成的時候進行測試。集成測試主要是針對程序內部結構進行測試,特別是對程序之間的接口進行測試。集成測試對測試人員的編寫腳本能力要求比較高。測試方法一般選用黑盒測試和白盒測試相結合。
集成測試是在軟件系統集成過程中所進行的測試,其主要目的是檢查軟件單元之間的接口是否正確。它根據集成測試計劃 ,一邊將程序單元或模塊組合成越來越大的系統,一邊運行該系統,以分析所組成的系統是否正確,各個組成部分是否交互正常。集成測試的策略主要有自頂向下和自底向上兩種。也可以理解為程序單元或功能模塊組裝、集成為系統時,對應用系統的各個部件(軟件單元、功能模塊接口、鏈接等)進行的聯合測試,以決定他們能否在一起共同工作,部件可以是代碼塊、獨立的應用、網絡上的客戶端或服務器端程序。
完成單元測試后,各模塊聯調測試。集中在各模塊的接口是否一致、各模塊間的數據流和控制流是否按照設計實現其功能、以及結果的正確性驗證等等。
集成測試是在完成單元測試后,將不同的模塊組合起來進行測試。測試的重點在于驗證各個模塊之間的接口和交互是否正常、是否滿足需求規格說明書的要求。集成測試可以幫助發現不同模塊之間的不兼容性、邏輯錯誤和數據錯誤等問題。
系統測試
系統測試是將已經確認的軟件、數據、接口、計算機硬件、外設、網絡等所有與系統有關的元素結合在一起,完整地模擬客戶環境對系統進行的黑盒測試。
系統測試最主要的就是功能測試,測試軟件《需求規格說明書》中提到的功能是否有遺漏,是否正確的實現。做系統測試要嚴格按照《需求規格說明書》,以它為標準。
軟件系統測試的方法很多,主要有功能測試,性能測試,隨機測試等。
系統測試是針對整個產品的全面測試,既包含各模塊的驗證性測試(驗證前兩個階段測試的正確性)和功能性(產品提交個用戶的功能)測試,又包括對整個產品的健壯性、安全性、可維護性及各種性能參數的測試。
用戶驗收測試
英文 User Test,縮寫 UAT,叫用戶接受測試或者用戶驗收測試。
用戶根據用例描述測試每一個場景,反饋系統問題。開發人員基于問題對系統和業務的影響進行判斷,適當的修正系統或記錄業務需求,根據需求優先級,集成進下一個迭代版本中。
里程碑:UAT Sign off。
UAT sign off 意思是用戶驗收測試(UAT)通過并獲得批準,即用戶對軟件系統的測試結果滿意,并同意將其投入使用。
在軟件開發過程中,用戶驗收測試是最后一項測試,目的是驗證軟件是否滿足用戶需求和預期。當用戶完成測試并確認軟件可以投入使用時,他們會簽署 UAT sign off,表示他們滿意軟件的質量和功能,并同意將其交付使用。
黑盒測試
黑盒測試不考慮程序內部結構和邏輯結構,主要是用來測試系統的功能是否滿足需求規格說明書。一般會有輸入值、輸出值、期望值,將輸出值和期望值進行比較。
黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,只檢查程序功能是否按照需求規格說明書的設計正常使用,程序是否能接收輸入數據而產生正確的輸出信息。黑盒測試著眼于程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試。
白盒測試
主要應用在單元測試階段,主要是對代碼級的測試,針對程序內部邏輯構,測試手段有:語句覆蓋、判定覆蓋、條件覆蓋、路徑覆蓋、條件組合覆蓋。白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構測試程序,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。 這一方法是把測試對象看作一個打開的盒子,測試人員依據程序內部邏輯結構相關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試,通過在不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致。
壓力測試 性能測試
系統性能測試是一種測試方法,用于評估系統在特定負載條件下的性能表現。它旨在確定系統在處理高負載、并發用戶或大數據量時的性能指標,例如響應時間、吞吐量、并發連接數和資源利用率等。系統性能測試通常包括負載測試、壓力測試和容量規劃等方面。通過系統性能測試,可以發現系統的性能瓶頸、優化機會和潛在的問題,以便進行性能調優和容量規劃,確保系統能夠滿足用戶需求并具備良好的穩定性和可擴展性。
兼容性測試
系統兼容性測試是一種測試方法,用于評估系統在不同環境、平臺或配置下的兼容性和互操作性。它旨在確保系統能夠在不同的操作系統、瀏覽器、設備或網絡環境中正常運行和交互。系統兼容性測試通常涉及驗證系統在不同硬件和軟件配置上的功能、性能和用戶體驗等方面的表現。通過系統兼容性測試,可以發現和解決與特定環境相關的問題,確保系統在不同的用戶配置和使用場景下都能夠正常運行,并提供一致的用戶體驗。這有助于確保系統的廣泛可用性和用戶滿意度。
容量測試 安全測試
系統安全性測試是一種測試方法,用于評估系統在面對潛在威脅和攻擊時的安全性能。它旨在發現系統中的漏洞、弱點和安全風險,并評估系統的防護措施和安全策略的有效性。系統安全性測試通常包括對系統的認證與授權、數據保護、網絡安全、應用程序安全和物理安全等方面進行測試。通過系統安全性測試,可以發現并修復潛在的安全漏洞,提升系統的安全性,保護敏感數據和用戶隱私,防止未經授權的訪問和惡意攻擊。這有助于確保系統的穩定性、可靠性和受信任性,維護用戶信任和保護組織的利益。
1.滲透測試:模擬黑客攻擊,嘗試發現系統中的漏洞和弱點,并驗證其是否能夠被入侵。
2.身份驗證和訪問控制測試:驗證系統的用戶身份驗證機制和訪問控制策略,確保只有授權用戶能夠訪問敏感數據和功能。
3.輸入驗證測試:測試系統對用戶輸入的數據進行有效性和安全性驗證,防止惡意輸入導致的安全漏洞,如跨站腳本攻擊(XSS)和SQL注入。
4.安全配置測試:檢查系統、應用程序和網絡設備的安全配置,確保安全設置符合最佳實踐,并防止常見的配置錯誤。
5.安全漏洞掃描:使用自動化工具掃描系統,發現已知的安全漏洞,并提供修復建議。
6.數據保護測試:評估數據加密、數據傳輸安全、數據備份和恢復等機制,確保數據在存儲和傳輸過程中得到適當的保護。
7.安全日志和監控測試:驗證系統是否能夠正確記錄和監控安全事件,以及及時發出警報并采取適當的響應措施。
8.安全性能測試:測試系統在面對惡意攻擊或大量請求時的性能表現,確保系統能夠正常運行并保持響應能力。
冒煙測試
百度百科-冒煙測試
聯調測試
聯調測試是在完成集成測試后,針對已經集成好的不同系統之間的交互進行測試。測試的重點在于驗證跨系統接口和通訊協議是否正常、是否滿足需求規格說明書的要求。聯調測試可以幫助發現系統之間的不兼容性、交互協議中的邏輯錯誤和數據格式的問題等。
SIT和UAT的區別
測試內容
集成測試:各個單元模塊之間的接口。
系統測試:整個系統的功能和性能。
測試角度
集成測試:偏于技術角度的驗證。
系統測試:偏于業務角度的驗證。
測試對象
集成測試由通過了單元測試的各個模塊所集成起來的構件。
系統測試除了軟件之外,還包括計算機硬件及相關的外圍設備。
測試時間
集成測試介于單元測試和系統測試之間。
系統測試在集成測試之后。
測試人員
集成測試一般由公司的測試工程師來測試。
系統測試可以由測試工程師來進行,也可以由關鍵用戶(最終用戶)來測試。
測試技術
集成測試一般采用黑盒測試和白盒測試相結合
系統測試則采用黑盒測試
集成測試和聯調測試的區別
1.測試的主體對象不同
集成測試主要是測試系統中各個模塊之間的交互,而聯調測試主要是測試不同系統之間的交互。
2.測試的目標不同
集成測試的目標是確保各個模塊在整個系統的環境下正常運行,而聯調測試的目標是確保不同系統之間的通信和數據交換是完整無誤的。
3.測試的時間不同
在軟件開發周期中,集成測試通常在單元測試之后進行,而聯調測試通常在集成測試之后進行。
4.測試的重點不同
集成測試的重點在于測試各個模塊之間的接口和交互是否正常,而聯調測試的重點是測試跨系統接口和通信是否正常。
總的來說,集成測試主要是為了驗證單元測試過程中未發現的問題,而聯測試則是為了驗證不同系統之間的接口和通信是否正常。
使用Android手機運行.NET
使用我們閑置或者不閑置的 Android 手機安裝.NET
?
都 2024 年了,微軟對.NET 開源已經 9 個年頭了,至今甚至還有不少搞 Java 開發的人說.NET 不開源,不跨平臺.這里我只能建議這些搞 Java 的人多上網看看世界.自從 .NET 6 開始微軟便開始提供基于 ARM64 平臺的.NET SDK.所以我們可以在 Android 平臺上運行 .NET 6.0 及以后的所有 .NET 版本.
?
別的不多說了,進入本文的正題.這個教程適合有一定 Linux 基礎的人.
安裝 Termux
安裝完成后我們先更新一下,執行如下命令.
pkg?upgrade
若是出現訪問速度特別慢的問題,可以更換一下清華源.
sed?-i?'s@^\(deb.*stable?main\)$@#\1\ndeb?https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main?stable?main@'?$PREFIX/etc/apt/sources.list
apt?update?&&?apt?upgrade
由于 Termux 的一些限制,導致我們在其中直接安裝.NET SDK 后會存在一些依賴的包無法安裝的問題,所以不能直接在 Termux 中安裝.因此我們需要安裝一個 Linux 的環境.
安裝 Linux 環境
Termux 上安裝各種 Linux 系統是通過 proot-distro 工具來實現的,所以先安裝一下 proot-distro 工具.
pkg?install?proot-distro
等待安裝完成后,輸入如下命令.查看支持的 Linux 列表
proot-distro?list
會輸出類似如下內容:
Supported distributions:
* Alpine Linux
Alias: alpine
Installed: no
Comment: Rolling release branch (edge).
* Arch Linux
Alias: archlinux
Installed: no
Comment: Currently available only AArch64 and ARM ports.
* Artix Linux
Alias: artix
Installed: no
Comment: Currently available only for AArch64.
* Debian (bookworm)
Alias: debian
Installed: no
Comment: Stable release.
* Debian (bullseye)
Alias: debian-oldstable
Installed: no
Comment: Old stable release.
* deepin
Alias: deepin
Installed: no
Comment: Supports only 64-bit CPUs.
* Fedora
Alias: fedora
Installed: no
Comment: Version 39. Supports only 64-bit CPUs.
* Manjaro
Alias: manjaro
Installed: no
Comment: Currently available only for AArch64.
* OpenKylin
Alias: openkylin
Installed: no
Comment: Version 'yangtze'. Supports only 64-bit CPUs.
* OpenSUSE
Alias: opensuse
Installed: no
Comment: Rolling release (Tumbleweed).
* Pardus
Alias: pardus
Installed: no
Comment: Version 'yirmibir'. Not available for ARM 32 bit.
* Ubuntu (23.10)
Alias: ubuntu
Installed: no
Comment: Regular release (mantic). Not available for x86 32-bit (i686) CPUs.
* Ubuntu (23.04 LTS)
Alias: ubuntu-lts
Installed: no
Comment: LTS release (jammy). Not available for x86 32-bit (i686) CPUs.
* Ubuntu (22.04 LTS)
Alias: ubuntu-oldlts
Installed: no
Comment: Previous LTS release (focal). Not available for x86 32-bit (i686) CPUs.
* Void Linux
Alias: void
Installed: no
Install selected one with: proot-distro install
根據提示信息,我們可以使用如下命令安裝 Linux 環境.
proot-distro?install?debian
由于我個人更喜歡使用 Debian/Ubuntu 系統,所以這里我選擇了 Debian,其他系統可以根據自己的喜好選擇,后面可能會存在一些命令上的差異,請自行調整.
安裝過程會持續一段時間,請耐心等待.等待安裝完成后,即可進入 Linux 環境中進行操作.
prott-distro?login?debian
進入 Linux 系統環境后,我們執行如下一些操作,來安裝一些常用的工具.
apt?update?-y?&&?apt?upgrade?-y
apt?install?-y?nano?wget?screenfetch?tar
screenfetch
會得到類似于如圖內容:
到這里,環境基本上就準備好了.接下來就是安裝 SDK 的環節了.
安裝 .NET SDK
.NET 9 已經發布了 了,這里我們就用 .NET 9 來進行安裝.
wget?https://download.visualstudio.microsoft.com/download/pr/e8743929-2c7b-4410-88f5-5f247040b498/ff454c589dc8d5dd9cb42e0950f34a69/dotnet-sdk-9.0.100-preview.1.24101.2-linux-arm64.tar.gz
mkdir?-p?$HOME/.dotnet?&&?tar?-zxf?dotnet-sdk-9.0.100-preview.1.24101.2-linux-arm64.tar.gz?-C?$HOME/.dotnet
nano?$HOME/.bashrc
export?DOTNET_ROOT=$HOME/.dotnet
export?PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
#?解決錯誤
#?GC?heap?initialization?failed?with?error?0x8007000E
#?Failed?to?create?CoreCLR,?HRESULT:?0x8007000E
export?DOTNET_GCHeapHardLimit=1C0000000
source?$HOME/.bashrc
dotnet?--info
.NET SDK:
Version: 9.0.100-preview.1.24101.2
Commit: 6bbd460f4d
Workload version: 9.0.100-manifests.c840f51f
Runtime Environment:
OS Name: debian
OS Version: 12
OS Platform: Linux
RID: linux-arm64
Base Path: /root/.dotnet/sdk/9.0.100-preview.1.24101.2/
.NET workloads installed:
There are no installed workloads to display.
Host:
Version: 9.0.0-preview.1.24080.9
Architecture: arm64
Commit: 1d1bf92fcf
.NET SDKs installed:
9.0.100-preview.1.24101.2 [/root/.dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 9.0.0-preview.1.24081.5 [/root/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 9.0.0-preview.1.24080.9 [/root/.dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
DOTNET_ROOT [/root/.dotnet]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
創建一個 WebAPI 項目來測試是否能夠正常運行.
我們創建一個文件夾用來存放我們的工程文件.并進入該文件夾.
mkdir?-p?$HOME/project
cd?project
然后我們使用 dotnet CLI 來創建一個默認的 WebAPI 項目
dotnet?new?webapi?-n?HelloWorld
等待創建完成后,進入項目文件夾,并啟動項目.
cd?HelloWorld
dotnet?run
然后等待編譯完成后,查看程序啟動輸出.
可以看到我這里程序運行在 5183 端口.我們就可以在瀏覽器中訪問 :5183/swagger 了,并且測試了請求,可以正常工作.
若是存在 root 權限的手機,我們可以使用 ip a 命令查看本機 IP 地址.或許可以折騰成服務器來運行.NET 項目.
從理論上來說也可以使用 Frpc 來映射本機的端口到公網服務器,這樣我們的 Android 手機也可以當作服務器來運行.到這里我們的教程就結束了,感謝大家的支持.