Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,006 views

Published on

2014/11/7,8の関西オープンフォーラム2014のブースでご紹介した資料です。https://k-of.jp/2014/session/587

Published in: Software
  • Be the first to comment

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

  1. 1. サイボウズがWebアプリ自動テスト に活用しているOSSツールの紹介 2014/11 関西オープンフォーラム2014 サイボウズ株式会社
  2. 2. ブラウザテスト • Selenium WebDriver • Appium • Selenium Grid
  3. 3. Selenium WebDriver • Selenium RC(Selenium 1)の後継 • テストコードを記述してブラウザで実行 • FirefoxアドオンのSelenium IDEとは別物 • 各種ブラウザ用のドライバが提供されている
  4. 4. Selenium WebDriver Java C# Python Ruby PHP Perl JavaScript Selenium WebDriver API Firefox Driver Internet Explorer Driver Chrome Driver Opera Driver テストコードドライバ ブラウザ
  5. 5. Appium Selenium WebDriver テストコードAppium API iOS, Android エミュレータ/実機 ブラウザ/ネイティブアプリ
  6. 6. Selenium Grid Selenium WebDriver テストコードRemoteWebDriver API Selenium Hub ドライバ ブラウザ ドライバ ブラウザ Selenium Grid ドライバ ブラウザ
  7. 7. サイボウズでのブラウザテスト • テストケースは約860個 • 並列数は36 • 実行時間は約30分
  8. 8. ブラウザテスト参考資料 • 失敗からはじめるSelenium http://developer.cybozu.co.jp/tech/?p=5499 • ハイパフォーマンスSeleniumテスト@サイボウズ http://www.slideshare.net/miyajan/kintone-selenium
  9. 9. JavaScriptユニットテスト http://www.slideshare.net/teppeis/javascript-testwhywhathow/33
  10. 10. Karma • 様々なブラウザで実行可能 • プラグインが豊富でCIとの連携が容易 • karma-junit-reporter • karma-coverage
  11. 11. 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); }); }); });
  12. 12. Expect.js • BDDスタイルでアサーションを記述可能 expect(window.r).to.be(undefined); expect([]).to.be.an('array'); expect(window).not.to.be.an(Image); • MochaのBDDインタフェースとの組み合わせ 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); }); });
  13. 13. 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); } });
  14. 14. サイボウズでのJavaScriptユニットテスト • テストケースは約2,500個 • 実行時間は約10秒 • コードカバレッジ(行)は約64% • Jenkinsでテスト結果を表示
  15. 15. JavaScriptユニットテスト参考資料 • kintoneのJSユニットテスト最新事情 http://developer.cybozu.co.jp/tech/?p=7089
  16. 16. 継続的インテグレーション(CI) • Jenkins • Build Pipeline Plugin • GitHub Plugin
  17. 17. ビルドパイプライン
  18. 18. ビルドパイプラインの流れ 1. GitHubのマスターブランチにpush 2. コンパイル 3. ユニットテスト 4. アーカイブ作成 5. テスト環境にデプロイ 6. ブラウザテスト 7. ドッグフーディング環境にデプロイ
  19. 19. CI参考情報 • 超速で開発・リリースするための6つのこと http://developer.cybozu.co.jp/tech/?p=2386

×