自動化測試技術工具趨勢

自動化測試技術工具趨勢

 

熱門測試技術主題

從各大測試技術論壇討論的主題有:

  • 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://macacajs.com/

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

另外對於環境的安全配置測試要如何進行呢?

https://www.inspec.io/ 

可以利用 InSpec 來進行驗證

範例程式

# 驗證設定檔案權限是否為0644

describe file(‘/etc/myapp.conf’) do
      it { should exist }
            its(‘mode’) { should cmp 0644 }
end

# 驗證端口是否為 8080

describe myapp.conf do
      its(‘port’) { should cmp 8080 }
end

# 驗證端口是否監聽 8080

describe port(8080) do
       it { should be_listening }
end

單元測試 AssertJ

http://joel-costigliola.github.io/assertj/

Java 的單元測試不是已經有 Junit or TestNG 為什麼還需要一個 AssertJ?

主要是 AssertJ提供許多的驗證函數模版可以使用

在開發環境中可以自動的列舉出來提供參考 如下圖

除此之外還可以依據現有的Junit產生相對應的AssertJ驗證

 

Web端到端測試 – NightWatchJS

 http://nightwatchjs.org/

除了 Selenium 之外的另外一種端到端的Web測試選擇

簡潔的語法透過 JavaScript語法啟動 Selenium Server就可以進行自動化測試

 

範例程式如下:

下列程式主要目的為瀏覽

  1. 瀏覽 www.google.com
  2. 輸入 nightwatch
  3. 點擊確認
  4. 驗證是否結果有 Night Watch
module.exports = {
  'Demo test Google' : function (browser) {
    browser
      .url('http://www.google.com')
      .waitForElementVisible('body', 1000)
      .setValue('input[type=text]', 'nightwatch')
      .waitForElementVisible('button[name=btnG]', 1000)
      .click('button[name=btnG]')
      .pause(1000)
      .assert.containsText('#main', 'Night Watch')
      .end();
  }
};

另外可參考 https://www.cypress.io

 

Web 效能分析測試 – LightHouse

https://github.com/GoogleChrome/lighthouse

https://developers.google.com/web/ilt/pwa/lighthouse-pwa-analysis-tool

 

效能測試

效能測試的開源工具主要有

大部分情況使用Jmeter都可以應用到各種效能測試

但是如果有更細緻的場景需求  希望加工一些程式

筆者建議可以使用 Locust 支援Python

Screenshot of Locust web UI

 

安全測試相關

OWASP ZAP 2.7 Release ZAP 2.7.0

著名的web安全測試工具, 這次的改版提供許多新的 API測試,並且可以直接啟動瀏覽器自動設定proxy測試

 

 

http://arachni-scanner.com

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)

https://github.com/owtf/owt

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 的測試環境平台

File:Shepherd-Injection-Lesson.JPG

File:Shepherd-CTF-Level-One.JPG

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 發佈的這幾篇語言漏洞測試規範也很值得參考

 

Java 語言漏洞測試規範目錄

 

Hash算法漏洞範例

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *