自動化測試技術工具趨勢
熱門測試技術主題
從各大測試技術論壇討論的主題有:
- DevOps + Security 安全測試流水線
- Rest API Automation 接口測試
- Docker for CI 容器化環境部署
- BigData framework 大數據架構
- BDD automation
- Mobile automation 手機測試
- Cloud Testing…雲測試
手機自動化測試
開源 Appium 讓 iOS/Android 測試不需要額外學習兩種不同的語言
測試開發只要使用自己熟悉的語言 Java or Python 就可以進行手機自動化測試
但是 Appium 的安裝複雜 有沒有一鍵式安裝方式?
Appium Studio
Appium Studio 的出現讓整個手機自動化測試的部署變得更容易
https://experitest.com/mobile-test-automation/appium-studio/
Macaca 手機自動化測試
https://github.com/alibaba/macaca
這套跟appium一樣可以用python or Java 測試 ios & Android
同樣也有提供 UI 錄製與定位的工具
由於 appium 支援的android 版本多所以相對比較笨重
這套Macaca只支援 Android API17以上所以相對比較輕便
https://macacajs.com/quick-start
驗證環境配置測試
測試環境的啟動不在只是使用單純的虛擬機環境, 而是廣泛大量的運用 Docker
因此, Infrastructure as Code 的相關技術也被大量的運用在自動化環境配置, 相關的框架如 Ansible, CFEngine, Chef, Otter, Puppet, SaltStack等
那麼要如何驗證環境配置是否正確呢? 有沒有什麼框架?
https://testinfra.readthedocs.io/en/latest/
https://github.com/philpep/testinfra
範例:
# 驗證 /etc/passwd 是否含有root使用者, 檔案權限是否為644 def test_passwd_file(host): passwd = host.file("/etc/passwd") assert passwd.contains("root") assert passwd.user == "root" assert passwd.group == "root" assert passwd.mode == 0o644 # 驗證是否有安裝 nginX 如果有安裝版本是否為1.2以上 def test_nginx_is_installed(host): nginx = host.package("nginx") assert nginx.is_installed assert nginx.version.startswith("1.2") # 驗證 NginX服務是否有啟動 def test_nginx_running_and_enabled(host): nginx = host.service("nginx") assert nginx.is_running assert nginx.is_enabled |
類似的工具可參考 : http://serverspec.org/
安全配置檢查 Inspec
另外對於環境的安全配置測試要如何進行呢?
可以利用 InSpec 來進行驗證
範例程式
# 驗證設定檔案權限是否為0644
describe file(‘/etc/myapp.conf’) do # 驗證端口是否為 8080 describe myapp.conf do # 驗證端口是否監聽 8080 describe port(8080) do |
單元測試 AssertJ
http://joel-costigliola.github.io/assertj/
Java 的單元測試不是已經有 Junit or TestNG 為什麼還需要一個 AssertJ?
主要是 AssertJ提供許多的驗證函數模版可以使用
在開發環境中可以自動的列舉出來提供參考 如下圖
除此之外還可以依據現有的Junit產生相對應的AssertJ驗證
Web端到端測試 – NightWatchJS
除了 Selenium 之外的另外一種端到端的Web測試選擇
簡潔的語法透過 JavaScript語法啟動 Selenium Server就可以進行自動化測試
範例程式如下:
下列程式主要目的為瀏覽
- 瀏覽 www.google.com
- 輸入 nightwatch
- 點擊確認
- 驗證是否結果有 Night Watch
|
另外可參考 https://www.cypress.io
Web 效能分析測試 – LightHouse
https://github.com/GoogleChrome/lighthouse
https://developers.google.com/web/ilt/pwa/lighthouse-pwa-analysis-tool
效能測試
效能測試的開源工具主要有
- Jmeter http://jmeter.apache.org/index.html
- Locust https://locust.io/
- gatling https://gatling.io/
大部分情況使用Jmeter都可以應用到各種效能測試
但是如果有更細緻的場景需求 希望加工一些程式
筆者建議可以使用 Locust 支援Python
安全測試相關
OWASP ZAP 2.7 Release ZAP 2.7.0
著名的web安全測試工具, 這次的改版提供許多新的 API測試,並且可以直接啟動瀏覽器自動設定proxy測試
https://github.com/Arachni/arachni/wiki/REST-API
OWASP JuiceShop Project
這個專案主要提供許多安全測試的練習環境與挑戰題目
https://www.owasp.org/index.php/OWASP_Juice_Shop_Project
電子書提示說明
https://bkimminich.gitbooks.io/pwning-owasp-juice-shop/content
解答
https://bkimminich.gitbooks.io/pwning-owasp-juice-shop/content/appendix/solutions.html
OWASP OWTF (Offensive Web Testing Framework)
OWASP Testing Guide + PTES + NIST
https://owtf.github.io/online-passive-scanner
OWASP Security Shepherd 3.0
web and mobile application security training platform. 這也是一個安全測試的練習平台環境
特別的是他是一個 Web + Mobile 的測試環境平台
DependencyCheck
這工具主要掃描相關依存的模組是否有已知的漏洞
3.0新版修正哪些問題?參考
https://github.com/jeremylong/DependencyCheck/blob/master/RELEASE_NOTES.md
標準規範
ISO發佈軟體品管評估規範
- ISO/IEC TS 25011:2017 Systems and software Quality Requirements and Evaluation (SQuaRE)
- GB/T 25000:12-2017
- GB/T 25000:24-2017
另外針對常見的C, Java 發佈的這幾篇語言漏洞測試規範也很值得參考
- GB/T 34943-2017 C/C++ 漏洞測試規範 http://www.gb688.cn/bzgk/gb/newGbInfo?hcno=00AD3629A2AEC567B8242A234539226D
- GB/T 34944-2017 Java 漏洞測試規範 http://www.gb688.cn/bzgk/gb/newGbInfo?hcno=6B5F14F93B5FEBF63C631A17903EA29D
- GB/T 34946-2017 C# 漏洞測試規範 http://www.gb688.cn/bzgk/gb/newGbInfo?hcno=91A232035C73F7E700A2A3E94782FBCD
Java 語言漏洞測試規範目錄
Hash算法漏洞範例