<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Gadvent2011 on yusuiked&#39;s blog</title>
    <link>https://blog.yusuiked.dev/categories/gadvent2011/</link>
    <description>Recent content in Gadvent2011 on yusuiked&#39;s blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <managingEditor>yusuiked@gmail.com (yusuiked)</managingEditor>
    <webMaster>yusuiked@gmail.com (yusuiked)</webMaster>
    <lastBuildDate>Tue, 27 Dec 2011 03:02:21 +0900</lastBuildDate><atom:link href="https://blog.yusuiked.dev/categories/gadvent2011/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title> Tellurium を試してみた</title>
      <link>https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/</link>
      <pubDate>Tue, 27 Dec 2011 03:02:21 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/</guid>
      
      <description>&lt;p&gt;もう25日は過ぎてしまいましたが、自重せずに &lt;a href=&#34;http://atnd.org/events/22483/&#34;&gt;G* Advent Calendar 2011 : ATND&lt;/a&gt; 27日目の記事行かせていただきたいと思います。&lt;br&gt;
初めまして、&lt;a href=&#34;http://blog.hatena.ne.jp/yukung/&#34;&gt;id:yukung&lt;/a&gt;/@yukung と申します。Groovistな皆様、お手柔らかにお願いいたします。&lt;/p&gt;
&lt;p&gt;最近、ノンブロッキングI/Oな仕事をしているので、当初Grettyについて書こうかなーと思っておりました。そうしたら見事に @toby55kij さんとネタがかぶってしまったので（&lt;a href=&#34;http://d.hatena.ne.jp/toby55kij/20111223/1324568112/&#34;&gt;Grettyで割り勘計算機 #gadvent2011 - Toby55@新潟の日常&lt;/a&gt;）、慌てて&lt;a href=&#34;http://groovy.codehaus.org/Modules/&#34;&gt;ここ&lt;/a&gt;を漁って違うネタを探して若干焦りました＞＜&lt;br&gt;
&lt;a href=&#34;http://groovy.codehaus.org/Modules&#34;&gt;Groovy - Modules&lt;/a&gt; の中で、Telluriumがちょっと面白そうだなーと思ったのと、ググッてもあまり日本語の情報がなかったので&lt;a href=&#34;https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/#f1&#34; title=&#34;というか英語の情報も多くなかった&#34;&gt;*1&lt;/a&gt;、書いてみようと思います。というわけで、急造な記事なのでちょっと浅いかもしれませんが、ご容赦ください。&lt;/p&gt;
&lt;h4 id=&#34;tellurium-って&#34;&gt;Tellurium って？&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/aost/&#34;&gt;Tellurium&lt;/a&gt; は、GroovyとJavaで実装されたWebアプリケーション向けのテスティングフレームワークです。この分野には、Webブラウザの操作をエミュレートしてWebアプリケーションの自動テストを可能にしてくれるSeleniumという有名なツールがありますが、TelluriumはそのSeleniumを基盤にして構築されています。というか私が触ってみた感想は、平たく言ってSeleniumをDSLで書けるようにしたGroovy/Javaラッパーな感じです。&lt;/p&gt;
&lt;h4 id=&#34;selenium-との違い&#34;&gt;Selenium との違い&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/aost/&#34;&gt;公式サイト&lt;/a&gt;によれば、TelluriumはSeleniumとの違いを、テストコンセプトの違いと定義しています。また、Seleniumを「C言語」のようなものであるとすれば、Telluriumは「C++」のようなものだ、とも言っています。なんだかわかったようなわからないような感じですね。&lt;/p&gt;
&lt;h5 id=&#34;ui要素の扱い&#34;&gt;UI要素の扱い&lt;/h5&gt;
&lt;p&gt;Telluriumでは、UI要素の記述を「UI module」として扱えることをSeleniumに対するアドバンテージとして捉えているようです。&lt;br&gt;
RIAやAjaxなど&lt;a href=&#34;https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/#f2&#34; title=&#34;あまり聞かなくなりましたねこの言葉&#34;&gt;*2&lt;/a&gt;、リッチなWebアプリケーションが一般的になってきた昨今、Webのインテグレーションテストも重量級になってきがちなところに対する一つの答えとなるのがTelluriumのゴールのようです。&lt;/p&gt;
&lt;p&gt;主なメリットとしては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript Eventをトリガーにした動作&lt;/li&gt;
&lt;li&gt;Ajaxアプリケーションのサポート&lt;/li&gt;
&lt;li&gt;変更に対する堅牢性と柔軟性&lt;/li&gt;
&lt;li&gt;メンテナンスの容易さ&lt;/li&gt;
&lt;li&gt;UI module の再利用性&lt;/li&gt;
&lt;li&gt;表現力（DSLで書けるなど）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった所が挙げられています。&lt;/p&gt;
&lt;p&gt;私はSeleniumを仕事では使っていませんし、使いたいなーと思って入るものの今のところヘビーユーザーでもないので、相違点について細かいところはあまりわからないのですが、例えばSeleniumでボタンクリックするような挙動を記述したいときは、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   selenium.&lt;span style=&#34;color:#a6e22e&#34;&gt;click&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//div[3]/input[@value=&amp;#39;Create&amp;#39;]&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな風に書くと思いますが、TelluriumではGroovyを使って、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ui&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Form&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Form&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;form&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Div&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[:]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            Selector&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sex&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[:])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            InputBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; type: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; name: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;j_username&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Container&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Finish&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tr&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            SubmitButton&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; type: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; value: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Login&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; name: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな風に、UI要素だけを分離して書くことで、テスト箇所のUI要素と、実際のテストコードを分離することができます。また、UI要素を階層構造で記述するので、モジュールとしての再利用性も期待できます。&lt;br&gt;
UI要素など、変更が頻繁にかかる箇所はGroovyのDSLでライトに書いてカプセル化し、テストコードは使い慣れたJUnitやTestNGなどで書くことによって、UIの変更に大きな影響を受けず、かつUI要素をモジュール化して再利用できる、ということが主なメリットのようです。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
