SlideShare a Scribd company logo
1 of 28
Magento Test Automation Framework
      紹介&使用感レポート

         株式会社フラッツ
          CTO 天方 貴久
           2012年6月

         Copyright (C) 2012 FLATz Inc. All rights reserved.   1
自己紹介
• 天方 貴久
• 株式会社フラッツ CTO

• 趣味
  – 天体観測
  – SF小説を書くこと


• Magento歴
  – ここ1年はMagentoばかりいじっている




                Copyright (C) 2012 FLATz Inc. All rights reserved.   2
Magento Test Automation Frameworkとは?
• Magento Test Automation Framework(MTAF)
• Magentoの自動テストのためのフレームワーク
   – 機能テスト
   – 実際にブラウザを使ったテスト

   – https://github.com/magento/taf
      • githubでソースコードが公開されています




                        Copyright (C) 2012 FLATz Inc. All rights reserved.   3
Magento の 人力テストの問題点(1)

• テストが大変
  – Magentoは標準でも機能数が非常に多い
    • 人力でのテスト項目は数百から数千項目


  – Magentoの各機能はほかの機能と連携している
    • ある機能の不具合を修正したら、連携している部分もテスト
      しなければならない
    • 影響範囲を検討するのは難しい




             Copyright (C) 2012 FLATz Inc. All rights reserved.   4
人力テストの問題点(2)

• テストを漏れなく遂行できるか

• コストを払って繰り返しテストをするか

• テストを速くできるか




           Copyright (C) 2012 FLATz Inc. All rights reserved.   5
テストの自動化をすると

• テストを漏れなく遂行できるか
  →テストは明確に定義される

• コストを払って繰り返しテストをするか
 →テストは何回でも実施できる
 →人は張り付いている必要はない


• テストを速くできるか
 →人力にくらべて高速にできる。

          Copyright (C) 2012 FLATz Inc. All rights reserved.   6
人力テストのとある方法




                                           HTTP
                                                       Magento CE
         操作・確認
                         ブラウザ



     私




            Copyright (C) 2012 FLATz Inc. All rights reserved.      7
MTAFをつかったテストだとこうなる
   私
       実行




                                                                    HTTP
                                           操作
                                          結果取得

        自動テストプログラム                                      ブラウザ               Magento CE




               Copyright (C) 2012 FLATz Inc. All rights reserved.                       8
MTAFをつかったテストだとこうなる
   私
       実行

                           HTTP
  Test.php     Selenium
               RC Driver
                                                                            HTTP
                                                   操作
                                                  結果取得
                                    Selenium                                       Magento CE
              UIMap.yml             RC Server
           自動テストプログラム                                           ブラウザ
  DataSet.yml


         PHP Unit




                       Copyright (C) 2012 FLATz Inc. All rights reserved.                       9
実際にやってみる




           Copyright (C) 2012 FLATz Inc. All rights reserved.   10
TAFのメリット

• テストの品質が一定になる
• 繰り返しテストができる
• テストを高速に実施できる




           Copyright (C) 2012 FLATz Inc. All rights reserved.   11
TAFのメリット
• ブラウザテストができる
  – JavaScriptとかPHPテンプレートのエラーで動きません(> <)/ みた
    いなことがない
• 最初からテストコードが付いている
  – Magento標準の機能テスト一式が最初からある




              Copyright (C) 2012 FLATz Inc. All rights reserved.   12
TAFの構成の限界
• デザイン崩れはわからない。
 – そこは目視チェックが必要
• 単体テストはできない
 – ライブラリやAPIのバリエーションテストには不向き
• テストを追加するにはプログラムを組む必要がある
 – テスト準備には開発者が必要




            Copyright (C) 2012 FLATz Inc. All rights reserved.   13
MTAFの構成(必要なソフトウェア)
•   PHP 5.2.0以上(PHP UnitとMagentoに必要)
•   JRE1.6以上(Selenium RCに必要)
•   PHPUnit 3.5.13以上
•   Selenium RC 1.0.3以上、または 2.0 rc2
•   Magento Community Edition 1.5以上




                   Copyright (C) 2012 FLATz Inc. All rights reserved.   14
MTAFがサポートするブラウザ
• Mozilla Firefox 3.x以上
• Google Chrome
• Internet Explorer 6.0以上




                    Copyright (C) 2012 FLATz Inc. All rights reserved.   15
TAFのテストの具体例の紹介:フォルダ構造




          Copyright (C) 2012 FLATz Inc. All rights reserved.   16
TAFのテストの具体例の紹介:テストケース(1)
class Something_Create_Test extends Mage_Selenium_TestCase
{
   // 前提条件設定
  protected function assertPreConditions()
  {
    $this->loginAdminUser(); // 管理者ログイン
    $this->assertTrue($this->checkCurrentPage('dashboard'),
      'Wrong page is opened');
    // 管理メニューのmanage_storesを選択
    $this->navigate(‘manage_stores’); // ①
    // manage_storesが表示されていることを確認
    $this->assertTrue($this->checkCurrentPage(‘manage_stores’), // ②
      'Wrong page is opened');
  }




                            Copyright (C) 2012 FLATz Inc. All rights reserved.   17
TAFのテストの具体例の紹介:テストケース(2)
 // 管理画面ナビゲーション動作
 public function test_Navigation() {
    // 検証
   $this->assertTrue($this->clickButton(‘create_store_view’), // ③
     'There is no "Create Store View" button on the page');
   $this->assertTrue($this->checkCurrentPage('new_store_view'),
     'Wrong page is opened');
   $this->assertTrue($this->controlIsPresent('button', 'back'),
     'There is no "Back" button on the page');
   $this->assertTrue($this->controlIsPresent(‘button’, ‘save_store_view’),
     'There is no "Save" button on the page');
   $this->assertTrue($this->controlIsPresent('button', 'reset'),
     'There is no "Reset" button on the page');
 }




                            Copyright (C) 2012 FLATz Inc. All rights reserved.   18
TAFのテストの具体例の紹介:テストケース(3)
    // 必須フィールドのみのテスト
    public function test_WithRequiredFieldsOnly()
    {
      // フォームにセットするデータ読み込み
      $storeData = $this->loadData(‘generic_store’, Null, ‘store_name’); // A

        // 操作
        $this->clickButton(‘create_store’);
        $this->fillForm($storeData);
        $this->saveForm(‘save_store’);

        // 検証
        $this->assertTrue($this->successMessage(‘success_saved_store’) // ④
          , $this->messages);
        $this->assertTrue($this->checkCurrentPage(‘manage_stores’), // ①
         'After successful creation store should be redirected to Manage Stores page');
    }
}

                                   Copyright (C) 2012 FLATz Inc. All rights reserved.     19
TAFのテストの具体例の紹介:UIMap
manage_stores:
 mca: system_store/ // ②
 click_xpath: //ul[@id=‘nav’]//a[contains(@href, ‘system_store’)] // ①
 title: Stores / System / Magento Admin
 uimap:
  buttons:
    create_store_view: button[span=‘Create Store View’] // ③
  messages:
     success_saved_store: li[normalize-space(@class)=‘success-msg’]// ④




                                  Copyright (C) 2012 FLATz Inc. All rights reserved.   20
TAFのテストの具体例の紹介:DataSet

generic_store: // A
  website: Main Website
  store_name: Generic Store(%randomize%)
  root_category: Default Category

edit_store:
  store_name: Main Website Store
  root_category: Default Category
  default_store_view: Default Store View




                                 Copyright (C) 2012 FLATz Inc. All rights reserved.   21
実際のソースコードめぐり




          Copyright (C) 2012 FLATz Inc. All rights reserved.   22
TAFの使用感(1)
•   Magentoの標準機能の全体的なテストを実施できるのはうれしい
    – すごい量のテストコード
    – 自動化テストに取り組むためのフレームワークを自分で作る必要はない
      • UIMap、データセット、ユーザログインなどのテストの前提となるテスト機能


•   実は標準のマニュアルの手順だけだとうまく動かない?
    – Magento 1.5用なので1.6だとエラーが出る
    – Windows用のマニュアルなのでLinuxだと戸惑う


•   結構1回のテストに時間がかかる
    – 1回の全テストに10時間以上かかる


•   日本語環境、多言語環境はどうするのか?
    – 日本語用のデータセットの準備や日本語エクステンション用のXpathの書き換えが必要



                  Copyright (C) 2012 FLATz Inc. All rights reserved.   23
TAFの使用感(2)
• Magento TAFはどんなときに使った方がいいか
  – Magento 1.5,1.6,1.7系
      • 継続開発、繰り返し開発の場合
          – 使うことを検討してみるのはあり。
      • 単発の開発の場合
          – 日本では、初期導入コストは高いので要検討


  – Magento 2.0系
      • 試していないが、使えないと思う。
      • Magento 2.0のフレームワークには標準でUnit Testの機能があるので、
        自動化に興味がある場合はそちらを試したほうがいい
          – Magento 2.0 はテスト自動化の本命?
          – TAFは機能テストだが・・・




                           Copyright (C) 2012 FLATz Inc. All rights reserved.   24
TAFのマニュアル
• ユーザマニュアル、インストール手順書 (英語)がTAF本家で公開さ
  れている

 – https://github.com/magento/taf/blob/master/MagentoTestAutomationFram
   eworkUsersGuide.pdf
 – https://github.com/magento/taf/blob/master/MagentoTestAutomationFram
   eworkInstallationGuide.pdf




                     Copyright (C) 2012 FLATz Inc. All rights reserved.   25
おわり
• Magento全体の品質があがり、より安心できるようになることを
  願って




           Copyright (C) 2012 FLATz Inc. All rights reserved.   26
エンジニアを募集
• Magentoの開発に興味のあるエンジニアを募集しています




           Copyright (C) 2012 FLATz Inc. All rights reserved.   27
連絡先
• 株式会社フラッツ(twitter:@flatz)
  – 天方貴久 (twitter: @cmmpower)
  – http://www.flatz.jp/




                   Copyright (C) 2012 FLATz Inc. All rights reserved.   28

More Related Content

What's hot

キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015Toru Koido
 
C++でテスト駆動開発
C++でテスト駆動開発C++でテスト駆動開発
C++でテスト駆動開発Akineko Shimizu
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからKeizo Tatsumi
 
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-Cモックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-CShoichi Matsuda
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章mirer
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストShuji Watanabe
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Kazunori Sakamoto
 
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編なべ
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014Koji Hasegawa
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料Masatoshi Itoh
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプラインkyon mm
 
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章nihon buson
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)masanori kataoka
 

What's hot (14)

キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
 
C++でテスト駆動開発
C++でテスト駆動開発C++でテスト駆動開発
C++でテスト駆動開発
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
 
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-Cモックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
 
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
 
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
 

Viewers also liked

Digital Virgo Corporate Presentation
Digital Virgo Corporate PresentationDigital Virgo Corporate Presentation
Digital Virgo Corporate Presentationsdesferet
 
Study guide pp
Study guide ppStudy guide pp
Study guide pphpinn
 
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)Muhammad Syukhri Shafee
 
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)Đoàn Nguyễn Xuân
 
D2 career development v1
D2 career development v1D2 career development v1
D2 career development v1DS-Egypt
 
Labor docente y actividad del profesor
Labor docente y actividad del profesorLabor docente y actividad del profesor
Labor docente y actividad del profesorEncuentroEducacion
 
Technology, Apps, and Social Media for CTE
Technology, Apps, and Social Media for CTETechnology, Apps, and Social Media for CTE
Technology, Apps, and Social Media for CTERachael Mann
 

Viewers also liked (11)

Digital Virgo Corporate Presentation
Digital Virgo Corporate PresentationDigital Virgo Corporate Presentation
Digital Virgo Corporate Presentation
 
Study guide pp
Study guide ppStudy guide pp
Study guide pp
 
Interfreight Presentation
Interfreight PresentationInterfreight Presentation
Interfreight Presentation
 
Microsoft again
Microsoft againMicrosoft again
Microsoft again
 
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)
Nilai nilai dalam islam dalam merapatkan hubungan antara etnik (new)
 
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)
Bản tin Sống độc lập số 42 (Tháng 6 và 7 năm 2013)
 
Rpp
RppRpp
Rpp
 
D2 career development v1
D2 career development v1D2 career development v1
D2 career development v1
 
Labor docente y actividad del profesor
Labor docente y actividad del profesorLabor docente y actividad del profesor
Labor docente y actividad del profesor
 
Technology, Apps, and Social Media for CTE
Technology, Apps, and Social Media for CTETechnology, Apps, and Social Media for CTE
Technology, Apps, and Social Media for CTE
 
L unit 4
L unit 4L unit 4
L unit 4
 

Similar to Magento Test Automation Framework

最新開発支援ツールを使ったデバッグ対応
最新開発支援ツールを使ったデバッグ対応最新開発支援ツールを使ったデバッグ対応
最新開発支援ツールを使ったデバッグ対応Osamu Monoe
 
はじめてのTeam Foundation ServerとVisual Studio Online
はじめてのTeam Foundation ServerとVisual Studio OnlineはじめてのTeam Foundation ServerとVisual Studio Online
はじめてのTeam Foundation ServerとVisual Studio OnlineKazushi Kamegawa
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説Kinji Akemine
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレットTakashi Makino
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門guestd4898b
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
JMeter によるパフォーマンステスト指南
JMeter によるパフォーマンステスト指南JMeter によるパフォーマンステスト指南
JMeter によるパフォーマンステスト指南じゅん なかざ
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本Tsuyoshi Yumoto
 
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法Developers Summit
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 ichikaway
 

Similar to Magento Test Automation Framework (20)

PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
最新開発支援ツールを使ったデバッグ対応
最新開発支援ツールを使ったデバッグ対応最新開発支援ツールを使ったデバッグ対応
最新開発支援ツールを使ったデバッグ対応
 
はじめてのTeam Foundation ServerとVisual Studio Online
はじめてのTeam Foundation ServerとVisual Studio OnlineはじめてのTeam Foundation ServerとVisual Studio Online
はじめてのTeam Foundation ServerとVisual Studio Online
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレット
 
Maven2 プラグイン入門
Maven2 プラグイン入門Maven2 プラグイン入門
Maven2 プラグイン入門
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
JMeter によるパフォーマンステスト指南
JMeter によるパフォーマンステスト指南JMeter によるパフォーマンステスト指南
JMeter によるパフォーマンステスト指南
 
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (10)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

Magento Test Automation Framework

  • 1. Magento Test Automation Framework 紹介&使用感レポート 株式会社フラッツ CTO 天方 貴久 2012年6月 Copyright (C) 2012 FLATz Inc. All rights reserved. 1
  • 2. 自己紹介 • 天方 貴久 • 株式会社フラッツ CTO • 趣味 – 天体観測 – SF小説を書くこと • Magento歴 – ここ1年はMagentoばかりいじっている Copyright (C) 2012 FLATz Inc. All rights reserved. 2
  • 3. Magento Test Automation Frameworkとは? • Magento Test Automation Framework(MTAF) • Magentoの自動テストのためのフレームワーク – 機能テスト – 実際にブラウザを使ったテスト – https://github.com/magento/taf • githubでソースコードが公開されています Copyright (C) 2012 FLATz Inc. All rights reserved. 3
  • 4. Magento の 人力テストの問題点(1) • テストが大変 – Magentoは標準でも機能数が非常に多い • 人力でのテスト項目は数百から数千項目 – Magentoの各機能はほかの機能と連携している • ある機能の不具合を修正したら、連携している部分もテスト しなければならない • 影響範囲を検討するのは難しい Copyright (C) 2012 FLATz Inc. All rights reserved. 4
  • 6. テストの自動化をすると • テストを漏れなく遂行できるか →テストは明確に定義される • コストを払って繰り返しテストをするか →テストは何回でも実施できる →人は張り付いている必要はない • テストを速くできるか →人力にくらべて高速にできる。 Copyright (C) 2012 FLATz Inc. All rights reserved. 6
  • 7. 人力テストのとある方法 HTTP Magento CE 操作・確認 ブラウザ 私 Copyright (C) 2012 FLATz Inc. All rights reserved. 7
  • 8. MTAFをつかったテストだとこうなる 私 実行 HTTP 操作 結果取得 自動テストプログラム ブラウザ Magento CE Copyright (C) 2012 FLATz Inc. All rights reserved. 8
  • 9. MTAFをつかったテストだとこうなる 私 実行 HTTP Test.php Selenium RC Driver HTTP 操作 結果取得 Selenium Magento CE UIMap.yml RC Server 自動テストプログラム ブラウザ DataSet.yml PHP Unit Copyright (C) 2012 FLATz Inc. All rights reserved. 9
  • 10. 実際にやってみる Copyright (C) 2012 FLATz Inc. All rights reserved. 10
  • 11. TAFのメリット • テストの品質が一定になる • 繰り返しテストができる • テストを高速に実施できる Copyright (C) 2012 FLATz Inc. All rights reserved. 11
  • 12. TAFのメリット • ブラウザテストができる – JavaScriptとかPHPテンプレートのエラーで動きません(> <)/ みた いなことがない • 最初からテストコードが付いている – Magento標準の機能テスト一式が最初からある Copyright (C) 2012 FLATz Inc. All rights reserved. 12
  • 13. TAFの構成の限界 • デザイン崩れはわからない。 – そこは目視チェックが必要 • 単体テストはできない – ライブラリやAPIのバリエーションテストには不向き • テストを追加するにはプログラムを組む必要がある – テスト準備には開発者が必要 Copyright (C) 2012 FLATz Inc. All rights reserved. 13
  • 14. MTAFの構成(必要なソフトウェア) • PHP 5.2.0以上(PHP UnitとMagentoに必要) • JRE1.6以上(Selenium RCに必要) • PHPUnit 3.5.13以上 • Selenium RC 1.0.3以上、または 2.0 rc2 • Magento Community Edition 1.5以上 Copyright (C) 2012 FLATz Inc. All rights reserved. 14
  • 15. MTAFがサポートするブラウザ • Mozilla Firefox 3.x以上 • Google Chrome • Internet Explorer 6.0以上 Copyright (C) 2012 FLATz Inc. All rights reserved. 15
  • 16. TAFのテストの具体例の紹介:フォルダ構造 Copyright (C) 2012 FLATz Inc. All rights reserved. 16
  • 17. TAFのテストの具体例の紹介:テストケース(1) class Something_Create_Test extends Mage_Selenium_TestCase { // 前提条件設定 protected function assertPreConditions() { $this->loginAdminUser(); // 管理者ログイン $this->assertTrue($this->checkCurrentPage('dashboard'), 'Wrong page is opened'); // 管理メニューのmanage_storesを選択 $this->navigate(‘manage_stores’); // ① // manage_storesが表示されていることを確認 $this->assertTrue($this->checkCurrentPage(‘manage_stores’), // ② 'Wrong page is opened'); } Copyright (C) 2012 FLATz Inc. All rights reserved. 17
  • 18. TAFのテストの具体例の紹介:テストケース(2) // 管理画面ナビゲーション動作 public function test_Navigation() { // 検証 $this->assertTrue($this->clickButton(‘create_store_view’), // ③ 'There is no "Create Store View" button on the page'); $this->assertTrue($this->checkCurrentPage('new_store_view'), 'Wrong page is opened'); $this->assertTrue($this->controlIsPresent('button', 'back'), 'There is no "Back" button on the page'); $this->assertTrue($this->controlIsPresent(‘button’, ‘save_store_view’), 'There is no "Save" button on the page'); $this->assertTrue($this->controlIsPresent('button', 'reset'), 'There is no "Reset" button on the page'); } Copyright (C) 2012 FLATz Inc. All rights reserved. 18
  • 19. TAFのテストの具体例の紹介:テストケース(3) // 必須フィールドのみのテスト public function test_WithRequiredFieldsOnly() { // フォームにセットするデータ読み込み $storeData = $this->loadData(‘generic_store’, Null, ‘store_name’); // A // 操作 $this->clickButton(‘create_store’); $this->fillForm($storeData); $this->saveForm(‘save_store’); // 検証 $this->assertTrue($this->successMessage(‘success_saved_store’) // ④ , $this->messages); $this->assertTrue($this->checkCurrentPage(‘manage_stores’), // ① 'After successful creation store should be redirected to Manage Stores page'); } } Copyright (C) 2012 FLATz Inc. All rights reserved. 19
  • 20. TAFのテストの具体例の紹介:UIMap manage_stores: mca: system_store/ // ② click_xpath: //ul[@id=‘nav’]//a[contains(@href, ‘system_store’)] // ① title: Stores / System / Magento Admin uimap: buttons: create_store_view: button[span=‘Create Store View’] // ③ messages: success_saved_store: li[normalize-space(@class)=‘success-msg’]// ④ Copyright (C) 2012 FLATz Inc. All rights reserved. 20
  • 21. TAFのテストの具体例の紹介:DataSet generic_store: // A website: Main Website store_name: Generic Store(%randomize%) root_category: Default Category edit_store: store_name: Main Website Store root_category: Default Category default_store_view: Default Store View Copyright (C) 2012 FLATz Inc. All rights reserved. 21
  • 22. 実際のソースコードめぐり Copyright (C) 2012 FLATz Inc. All rights reserved. 22
  • 23. TAFの使用感(1) • Magentoの標準機能の全体的なテストを実施できるのはうれしい – すごい量のテストコード – 自動化テストに取り組むためのフレームワークを自分で作る必要はない • UIMap、データセット、ユーザログインなどのテストの前提となるテスト機能 • 実は標準のマニュアルの手順だけだとうまく動かない? – Magento 1.5用なので1.6だとエラーが出る – Windows用のマニュアルなのでLinuxだと戸惑う • 結構1回のテストに時間がかかる – 1回の全テストに10時間以上かかる • 日本語環境、多言語環境はどうするのか? – 日本語用のデータセットの準備や日本語エクステンション用のXpathの書き換えが必要 Copyright (C) 2012 FLATz Inc. All rights reserved. 23
  • 24. TAFの使用感(2) • Magento TAFはどんなときに使った方がいいか – Magento 1.5,1.6,1.7系 • 継続開発、繰り返し開発の場合 – 使うことを検討してみるのはあり。 • 単発の開発の場合 – 日本では、初期導入コストは高いので要検討 – Magento 2.0系 • 試していないが、使えないと思う。 • Magento 2.0のフレームワークには標準でUnit Testの機能があるので、 自動化に興味がある場合はそちらを試したほうがいい – Magento 2.0 はテスト自動化の本命? – TAFは機能テストだが・・・ Copyright (C) 2012 FLATz Inc. All rights reserved. 24
  • 25. TAFのマニュアル • ユーザマニュアル、インストール手順書 (英語)がTAF本家で公開さ れている – https://github.com/magento/taf/blob/master/MagentoTestAutomationFram eworkUsersGuide.pdf – https://github.com/magento/taf/blob/master/MagentoTestAutomationFram eworkInstallationGuide.pdf Copyright (C) 2012 FLATz Inc. All rights reserved. 25
  • 26. おわり • Magento全体の品質があがり、より安心できるようになることを 願って Copyright (C) 2012 FLATz Inc. All rights reserved. 26
  • 28. 連絡先 • 株式会社フラッツ(twitter:@flatz) – 天方貴久 (twitter: @cmmpower) – http://www.flatz.jp/ Copyright (C) 2012 FLATz Inc. All rights reserved. 28