19
サイボウズがWebアプリ自動テスト に活用しているOSSツールの紹介 2014/11 関西オープンフォーラム2014 サイボウズ株式会社

サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

  • Upload
    -

  • View
    1.227

  • Download
    1

Embed Size (px)

Citation preview

Page 1: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

サイボウズがWebアプリ自動テストに活用しているOSSツールの紹介

2014/11 関西オープンフォーラム2014

サイボウズ株式会社

Page 2: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

ブラウザテスト• Selenium WebDriver

• Appium

• Selenium Grid

Page 3: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Selenium WebDriver• Selenium RC(Selenium 1)の後継

• テストコードを記述してブラウザで実行

• FirefoxアドオンのSelenium IDEとは別物

• 各種ブラウザ用のドライバが提供されている

Page 4: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Selenium WebDriverJava C#

Python Ruby PHP Perl

JavaScript

Selenium WebDriver

API

Firefox Driver Internet Explorer Driver

Chrome Driver Opera Driver

テストコード ドライバ

ブラウザ

Page 5: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Appium

Selenium WebDriver

APIテストコード Appium

iOS, Android

エミュレータ/実機

ブラウザ/ネイティブアプリ

Page 6: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Selenium Grid

Selenium WebDriver

APIテストコード RemoteWebDriver

Selenium Hub

ドライバ

ブラウザ

ドライバ

ブラウザ

ドライバ

ブラウザ

Selenium Grid

Page 7: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

サイボウズでのブラウザテスト• テストケースは約860個

• 並列数は36

• 実行時間は約30分

Page 8: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

ブラウザテスト参考資料• 失敗からはじめるSelenium

http://developer.cybozu.co.jp/tech/?p=5499

• ハイパフォーマンスSeleniumテスト@サイボウズhttp://www.slideshare.net/miyajan/kintone-selenium

Page 9: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

JavaScriptユニットテスト

http://www.slideshare.net/teppeis/javascript-testwhywhathow/33

Page 10: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Karma• 様々なブラウザで実行可能

• プラグインが豊富でCIとの連携が容易

• karma-junit-reporter

• karma-coverage

Page 11: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Mocha• インタフェースを選択可能(BDD, TDDなど)

// BDD interface describe('Array', function() { before(function() { // ... }); ! describe('#indexOf()', function() { it('should return -1 when not present', function() { [1,2,3].indexOf(4).should.equal(-1); }); }); });

Page 12: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Expect.js• BDDスタイルでアサーションを記述可能

expect(window.r).to.be(undefined); expect([]).to.be.an('array'); expect(window).not.to.be.an(Image);

describe('test suite', function () { it('should expose a function', function () { expect(add).to.be.a('function'); }); ! it('should do math', function () { expect(add(1, 3)).to.equal(4); }); });

• MochaのBDDインタフェースとの組み合わせ

Page 13: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

Sinon.JS• テストダブルを扱うライブラリ

// spy var spy = sinon.spy(jQuery, 'ajax'); jQuery.getJSON('/some/resource'); expect(spy.calledOnce).to.be.ok(); !// stub var stub = sinon.stub(jQuery, 'ajax'); stub.yieldsTo('success', [1, 2, 3]); jQuery.ajax({ success: function(data) { expect(data).to.have.length(3); } });

Page 14: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

サイボウズでのJavaScriptユニットテスト

• テストケースは約2,500個

• 実行時間は約10秒

• コードカバレッジ(行)は約64%

• Jenkinsでテスト結果を表示

Page 15: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

JavaScriptユニットテスト参考資料• kintoneのJSユニットテスト最新事情

http://developer.cybozu.co.jp/tech/?p=7089

Page 16: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

継続的インテグレーション(CI)• Jenkins

• Build Pipeline Plugin

• GitHub Plugin

Page 17: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

ビルドパイプライン

Page 18: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

ビルドパイプラインの流れ1. GitHubのマスターブランチにpush

2. コンパイル

3. ユニットテスト

4. アーカイブ作成

5. テスト環境にデプロイ

6. ブラウザテスト

7. ドッグフーディング環境にデプロイ

Page 19: サイボウズがWebアプリ自動テスト に活用しているossツールの紹介

CI参考情報• 超速で開発・リリースするための6つのこと

http://developer.cybozu.co.jp/tech/?p=2386