37
JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 義和

JBoss とArquillian で実現する 究極のテスト環境jp-redhat.com/forum/2012/pdf/5-E.pdf · JavaEE JAX RS JSF EJB JPA JMS library#A library#B library#C ApplicationArchive

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • JBoss  と  Arquillian  で実現する究極のテスト環境

    レッドハット株式会社JBoss  サービス事業部コンサルタント⼭山⽥田  義和

  • Who  am  I  ?

    Copyright  ©  2012  Red  Hat,  Inc.   2

    Hi,  I’m  glad  to  see  you  !

  • Copyright  ©  2012  Red  Hat,  Inc.   3

    インテグレーションテストのためのテスティングプラットフォーム

    http://www.jboss.org/arquillian.html

    Arquillian  ???

  • クールなシステムのためのクールなテストを実現するためのツールです。

    詳しくはこのセッションで解説します。

    テスティングプラットフォーム?

    Copyright  ©  2012  Red  Hat,  Inc.   4

  • Copyright  ©  2012  Red  Hat,  Inc.   5

    JBoss  Enterprise  Application  Platform  のサブスクリプションで

    Red  Hat  からのサポートを受けられます。※  使い⽅方に困ったら  Red  Hat  の親切切なサポートに聞きましょう!

    サポートは?

  • Agenda

    Copyright  ©  2012  Red  Hat,  Inc.   6

    l  クールなシステムとは何か?l  クールなシステムをどのように作り込む

    か?l  開発サイクルとテストの⾃自動化l  コンポーネントマップとテストl  インテグレーションテスト⾃自動化の課題l  Arquillian  のコンセプトと仕組み

  • クールなシステムの定義

    Copyright  ©  2012  Red  Hat,  Inc.   7

    使う側の要求に対して機敏に継続的に適切切なコストで正確に

    対応

  • 開発サイクル

    Copyright  ©  2012  Red  Hat,  Inc.   8

    テスト 設計

    実装

    新規開発、機能修正・追加、バグ

    要求(要件)を設計・実装が正確に満たしているかの評価・検証

    テストの⽬目的

  • テストを⾃自動化すると

    Copyright  ©  2012  Red  Hat,  Inc.   9

    テスト設計実装

    l テスト⼿手順を継続的に正確に再実⾏行行可能になります。

    l ⼿手動テストに⽐比べテストの実⾏行行に必要なコストが圧倒的に⼩小さくなります。

    l 機敏に設計・実装の評価・検証を⾏行行うことが可能になります。

    クールなシステムの定義に完全にマッチ

  • Copyright  ©  2012  Red  Hat,  Inc.   10

    クールなシステムは⾃自動化されたクールなテスト

    で作り込む!※  もちろん良良い設計・実装もと〜~っても⼤大事です。            

    クールなシステムを  どのように作り込む?

  • Copyright  ©  2012  Red  Hat,  Inc.   11

    クールなテストとは何か?それをどのように実現するか?

    ※  JBoss、Java  EE  6  に関する設計・実装のお話も良良いシステムの構築に深く関係しますが別の機会に。。。ごめんなさい。

    本セッションのテーマ

  • コンポーネントマップ

    Copyright  ©  2012  Red  Hat,  Inc.   12

    Red  Hat  Enterprise  LinuxKernel

    package  #A package  #BJava  VM

    JBoss  Enterprise  Application  PlatformWeb  Container Transaction DataSource messaging

    Java  EEJAX-‐‑‒RS JSF JPA JMSEJB

    library  #A library  #B library  #CApplication  Archive

    component  #D

    H/W,  N/W

    CDI

    component  #Bcomponent  #A component  #C

    package  #C

  • コンポーネントマップとテスト

    Copyright  ©  2012  Red  Hat,  Inc.   13

    Red  Hat  Enterprise  LinuxKernel

    package  #A package  #BJava  VM

    JBoss  Enterprise  Application  PlatformWeb  Container Transaction DataSource messaging

    Java  EEJAX-‐‑‒RS JSF JPA JMSEJB

    library  #A library  #B library  #CApplication  Archive

    component  #D

    H/W,  N/W

    CDI

    component  #Bcomponent  #A component  #C

    package  #C

    単体テスト

    単体テスト

    単体テスト

    単体テスト

    単体テストインテグレー

    ションテスト

    インテグレーションテスト

    インテグレーションテスト

    単体テストインテグレーションテスト

    システムテスト

    システムテスト

    ※  通常のシステムテストでは  DB  等の他システムとの連携のテストも⾏行行います。

  • テストの性質とコスト

    Copyright  ©  2012  Red  Hat,  Inc.   14

    単体テスト

    インテグレーションテスト

    システムテスト※1  影響範囲は主にテストが対象とするコンポーネントの範囲やテストエラーが発⽣生した際の⼿手戻りの範囲を想定しています。

    ※2  コストは主にテストの実施やテスト結果のフィードバックに必要な⼈人的リソースや時間的なコストを想定しています。

    影響範囲コスト

  • テスト⾃自動化の現状

    Copyright  ©  2012  Red  Hat,  Inc.   15

  • Copyright  ©  2012  Red  Hat,  Inc.   16

    今よりテストが⾃自動化できたら

    Cooool  !

  • テスト⾃自動化の問題点あるインテグレーションテストの場合

    Copyright  ©  2012  Red  Hat,  Inc.   17

    JBoss  Enterprise  Application  PlatformWeb  Container Transaction DataSource messaging

    Java  EEJAX-‐‑‒RS JSF JPA JMSEJB

    library  #A library  #B library  #CApplication  Archive

    component  #D

    CDI

    component  #Bcomponent  #A component  #C

    テスト対象 テスト対象が依存するコンポーネント

  • テストの⾃自動化の問題点

    Copyright  ©  2012  Red  Hat,  Inc.   18

    JBoss  Enterprise  Application  PlatformWeb  Container Transaction DataSource messaging

    Java  EEJAX-‐‑‒RS JSF JPA JMSEJB

    library  #A library  #B library  #CApplication  Archive

    component  #D

    CDI

    component  #Bcomponent  #A component  #C

    ※  テストコードのコールスタック

    コンポーネント間の依存

    コンテナ依存

  • テスト⾃自動化の課題

    Copyright  ©  2012  Red  Hat,  Inc.   19

    ü  依存するコンポーネントをどうするか?ü  依存するコンテナのサービスをどうするか?

    ü  モック地獄!ü  コンテナのサービスの制御には、かなりの⼯工夫が必要ü  軽量量テストコンテナ等を使⽤用する場合本番環境との違いに注意する必要あり。

    何とか解決しようとすると

  • Copyright  ©  2012  Red  Hat,  Inc.   20

    ○*×%^@△!!+_^$

    課題だらけ。。。

  • Arquillian  のコンセプト

    Copyright  ©  2012  Red  Hat,  Inc.   21

    稼働するコンテナでテストを実⾏行行する。

  • 以下の範囲をテストのプロセスに組込む

    Copyright  ©  2012  Red  Hat,  Inc.   22

    JBoss  Enterprise  Application  PlatformWeb  Container Transaction DataSource messaging

    Java  EEJAX-‐‑‒RS JSF JPA JMSEJB

    library  #A library  #B library  #CApplication  Archive

    component  #D

    CDI

    component  #Bcomponent  #A component  #C

    テスト実⾏行行時に制御

    テスト実⾏行行時に⽣生成テストプロセスにデプロイと

    コンテナの制御を組込む

  • Arquillian  がテスト実⾏行行時に⾏行行うこと

    Copyright  ©  2012  Red  Hat,  Inc.   23

    1.  パッケージング(war,  ear)2.  コンテナの起動・停⽌止3.  デプロイ・アンデプロイ4.  コンテナ上でのコンポーネントのテスト

  • Arquillian  の仕組みパッケージング

    Copyright  ©  2012  Red  Hat,  Inc.   24

    test.war,  test.ear

    xx.class yy.class

    beans.xml persistence.xml

    1.テストに必要なクラスや  DD  の収集

    2.  パッケージングテスト実行に必要なテスト制御コンポーネントもパッケージングします。

    〜~.class 〜~.xml Control  component

  • Arquillian  の仕組みコンテナの起動とデプロイ

    Copyright  ©  2012  Red  Hat,  Inc.   25

    JBoss  (Container)

    3.  コンテナの起動

    test.war,  test.ear〜~.class 〜~.xml Control  componenttest.war,  test.ear

    4.  デプロイ

  • Arquillian  の仕組みテストの実⾏行行

    Copyright  ©  2012  Red  Hat,  Inc.   26

    JBoss  (Container)

    4.  テストの実⾏行行

    test.war,  test.ear〜~.class 〜~.xml Control  component

  • Arquillian  の仕組みコンテナの停⽌止とアンデプロイ

    Copyright  ©  2012  Red  Hat,  Inc.   27

    JBoss  (Container)

    5.  アンデプロイ&停⽌止

  • Arquillian  が実現可能にするテスト

    Copyright  ©  2012  Red  Hat,  Inc.   28

    1.  Java  EE  に依存するテストDI,  JPA,  EJB,  …  etc  

    2.  コンテナのサービスに依存するテストmessaging,  DataSource,  …  etc

  • Arquillian  では実現できないテスト

    Copyright  ©  2012  Red  Hat,  Inc.   29

    1.  コンテナより低レイヤのテストJVM,  OS,  …  etc

    2.  ビューレイヤのテストJavaScript,  CSS,  …  etc

    3.  パフォーマンス・障害テスト

    だけ

  • Demo  1

    Copyright  ©  2012  Red  Hat,  Inc.   30

    Eclipse  から  Remote  モードで  Arquillian  によるテス

    トを実⾏行行する。

  • Demo  2

    Copyright  ©  2012  Red  Hat,  Inc.   31

    Jenkins  から  Managed  モードで  Arquillian  による

    テストを実⾏行行する。

  • さらなるテストの⾃自動化へ!

    Copyright  ©  2012  Red  Hat,  Inc.   32

    ご来場頂いた⽅方々にだけ

    そっと紹介します。

  • まとめ

    Copyright  ©  2012  Red  Hat,  Inc.   33

    l クールなシステムとは使う側の要求に対して機敏に継続的に適切切なコストで正確に対応可能なシステムである。

    l クールなシステムの開発には⾃自動化されたクールなテストが実施可能な環境が必要である。

    l Arquillian  によりこれまで実現の難しかった真のインテグレーションテストが可能になる。

  • まとめ  +  α

    Copyright  ©  2012  Red  Hat,  Inc.   34

    Arquillian  によりクールなテストを実現できるようになりました。ただし、クールな(必要⼗十分で意味のある)テストを設計することは⾃自動化できません。クールなテストを設計してクールなエンジニアになりましょう!

  • What  a  cool  we  are!

    Copyright  ©  2012  Red  Hat,  Inc.   35

  • To  be  continued

    Copyright  ©  2012  Red  Hat,  Inc.   36

    次回  JJBug  で  Arquillian  の技術的な詳細を紹介します。

    https://community.jboss.org/groups/japan-‐‑‒jbug?view=overview#/?tagSet=undefined

  • ご清聴ありがとうございました。

    ⼭山⽥田  義和:[email protected]

    See  you  later  !