自動テストツール⑥ Badboy

Badboyとは

ブラウザでの操作を記録、再現できるテストツール
記録した操作をJMeterのシナリオとして出力できる

設定

ダウンロード

公式サイトからインストーラをダウンロード

インストール

ダウンロードしたインストーラを実行

実行

記録


1) 画面上部のURL入力欄にURLを入力
2) 画面右のブラウザを操作
  記録は始まっている
3) 記録の停止/再開は画面上部のまたは■

再生

Step1を右クリック > Play All

Jmeterシナリオ出力

File > Export to Jmeter

自動テストツール⑤ JMeter

JMeterとは

ブラウザでの操作を記録、再現できるテストツール
複数スレッドから複数回繰り返す事で負荷テストを実施するのに便利

設定

JDK

Java実行環境が必要なのでJDKをインストール
JDK」参照

JMeterダウンロード

JMeterのバイナリファイルをApacheの公式サイトからダウンロード
Windowsの場合
apache-jmeter-X.X.zip

インストール

不要
ダウンロードしたファイルを解凍し、
ApacheJMeter.jar
を実行

実行

スレッドグループ

テスト計画 > 追加 > Threads(Users) > スレッドグループ

設定項目 機能
スレッド数 同時実行数
Ramp-Up期間 スレッド数分の処理を実行する時間
ループ回数 繰り返し回数
記録

Badboyで記録 → Jmeterシナリオを出力
自動テストツール⑥ Badboy」参照

再生

ファイル > 開く > (出力したJmeterシナリオ)


再生結果はリスナーに表示される

リスナー

テスト計画 > スレッドグループ > 追加 > リスナー > 結果をツリーで表示

変数の利用

①変数:testに正規表現で抽出した値を設定

追加 > 後処理 > 正規表現抽出
参照名:test
正規表現:<input type="hidden" name="TOKEN" value="(.*)">
②から取得して編集
テンプレート:$1$
初期値:is_not_Exit

②前ページの応答画面(html)

値が応答されている箇所を抽出

<input type="hidden" name="TOKEN" value="ABCDEFG">

③リクエスト設定

リクエストパラメータ:値欄に変数:testを設定
${test}

自動テストツール④ JUnit

設定

http://www.junit.org/
junit-X.XX.jarをダウンロード

テストクラスのビルドパスに追加
新しいEclipseには最初から追加されている

junit2

junit3

テストクラス作成

※テスト対象クラス
package myPack;
public class MyClass {
 public String outMsg(){
  return "test";
 }
}

※テスト実行クラス
package myPack;
import static org.junit.Assert.*;
import org.junit.Test;
public class DoTest {
 @Test
 public void doTest(){
  String s = new MyClass().outMsg();
  assertEquals("期待値と違う","test", s);
 }
}

実行

junit

前後処理

package myPack;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class DoTest {
 @BeforeClass
 public static void test1(){
  System.out.println("@BeforeClass");
 }
 @Before
 public void test2(){
  System.out.println("@Before");
 }
 @After
 public void test3(){
  System.out.println("@After");
 }
 @AfterClass
 public static void test4(){
  System.out.println("@AfterClass");
 }
 @Test
 public void doTest1(){
  System.out.println("doTest1:@Test");
 }
 @Test
 public void doTest2(){
  System.out.println("doTest2:@Test");
 }
}
※実行結果
@BeforeClass
@Before
doTest1:@Test
@After
@Before
doTest2:@Test
@After
@AfterClass

自動テストツール③ Selenium2 5/5

ブラウザ

Firefox

using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver();
driver.Url = “http://google.com”;

InternetExplorer

using OpenQA.Selenium.IE;

//IE用WebDriver(実行ファイル:IEDriverServer.exe)をダウンロード&パス指定
IWebDriver driver = new InternetExplorerDriver(@”保存パス”);
例:「D:\MyProject\Library」に保存した場合(↓フォルダまで)
IWebDriver driver = new InternetExplorerDriver(@”D:\MyProject\Library\”);
driver.Navigate().GoToUrl(@”http://google.com”);

Firefox

Imports OpenQA.Selenium.Firefox
Dim driver As IWebDriver = New FirefoxDriver
driver.Url = “http://google.com”

Internet

Imports OpenQA.Selenium.IE
Dim driver As IWebDriver = new InternetExplorerDriver(“保存パス”)
例:「D:\MyProject\Library」に保存した場合(↓フォルダまで)
Dim driver As IWebDriver = new InternetExplorerDriver(“D:\MyProject\Library\”)
driver.Url = “http://google.com”


自動テストツール③ Selenium2 4/5

wait処理

wait.Until

//指定のタイトルになるまで10秒待つ。
//ならなかったらNUnitでエラー表示
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10));
wait.Until(ExpectedConditions.TitleIs(“TEST”));

//指定の要素があるかチェック
wait.Until(ExpectedConditions.ElementExists(By.Id(“myText”)));

//指定の要素が可視かチェック
wait.Until(ExpectedConditions.ElementIsVisible(By.Id(“myText”)));

メソッド

Clear()

//要素のクリア
IWebElement element = driver.FindElement(By.Id(“myText”));
element.Clear();
//こういう書き方も可(メソッドチェーン)
driver.FindElement(By.Name(“myText”)).Clear();

SendKeys()

//要素への入力(追記)
element.SendKeys(“yahoo”);
//こういう書き方も可(メソッドチェーン)
driver.FindElement(By.Name(“myText”)).SendKeys(“yahoo”);

Submit()

element.Submit();

Click()

//ボタン・リンクのクリック
driver.FindElement(By.Name(“btnK”)).Click();
driver.FindElement(By.LinkText(“Selenium – Web Browser Automation”)).Click();

GetAttribute()

//指定要素のvalue属性値取得
Assert.AreEqual(“aaayahoo”, element.GetAttribute(“value”));

GetCssValue()

GetScreenshot()

//スクリーンショットを保存(bin内)
Screenshot shot = ((ITakesScreenshot)driver).GetScreenshot();
byte[] screenshotAsByteArray = shot.AsByteArray;
shot.SaveAsFile(“firefox.png”, ImageFormat.Png);

プロパティ

Displayed

Enabled

Location

Selected

CheckBox、Select等

Size

TagName

Text

タグ間テキスト

自動テストツール③ Selenium2 3/5

using System.Drawing.Imaging;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace Test
{
 [TestFixture]
  public class clsTest
  {
  
   [Test]
   public void Main()
   {
   
    ’Firefox起動。URLを指定&遷移。
    IWebDriver driver = new FirefoxDriver();
    driver.Url = “http://google.com”;
   
    ’指定のidの要素を取得。入力&Submit。
    IWebElement element =
      driver.FindElement(By.Id(“lst-ib”));
    element.SendKeys(“yahoo”);
    element.Submit();
   
    System.Threading.Thread.Sleep(2000);
   ’タイトルの値をテスト
   (期待値と実測値が違う場合、NUnitでエラーが表示される)
    Assert.AreEqual(“yahoo – Google 検索”, driver.Title);
  
   ‘ウィンドウのキャプチャを取る
    Screenshot shot =
      ((ITakesScreenshot)driver).GetScreenshot();
    shot.SaveAsFile(“firefox.png”, ImageFormat.Png);
  
   }
  }
}

Imports System.Drawing.Imaging
Imports NUnit.Framework
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Firefox

<TestFixture()> _
Public Class clsTest

 <Test()> _
 Public Sub FireFoxTest()

  ’Firefox起動。URLを指定&遷移。
  Dim driver As IWebDriver = New FirefoxDriver
  driver.Url = “http://google.com”

  ’指定のidの要素を取得。入力&Submit。
  Dim element As IWebElement =
    driver.FindElement(By.Id(“lst-ib”))
  element.SendKeys(“yahoo”)
  element.Submit()

  Threading.Thread.Sleep(2000)

  ’タイトルの値をテスト
  (期待値と実測値が違う場合、NUnitでエラーが表示される)
  Assert.AreEqual(expected:=”yahoo – Google 検索”, _
      actual:=driver.Title, _
      message:=”Titleが違います。”)

  ’ウィンドウのキャプチャを取る
  Dim shot As Screenshot =
    DirectCast(driver, ITakesScreenshot).GetScreenshot()
  shot.SaveAsFile(“firefox.png”, ImageFormat.Png)

 End Sub
End Class


自動テストツール③ Selenium2 2/5

設定方法

公式サイトからSelenium2ライブラリをダウンロード
左上の「Search」を「All Downloads」等に変更して、「Selenium-dotnet-~.zip」をダウンドロード。
(※Javaでテストコードを作成する場合は「Selenium-java-~.zip」をダウンドロード)

Selenum2_Download
(後述するIEやChromeをブラウザとして使用する場合は別途ダウンロードが必要)
ダウンロードファイルを解凍し、以下のファイルを特定フォルダに保存。
・WebDriver.dll
・WebDriver.Support.dll
上記に加え、NUnit.framework.dllも参照に追加(「自動テストツール① NUnit 1/3」参照)。
Selenium2Referance
テストコードをC#やVB.NETで書いた後は、ビルドしてDLLを作成し、
NUnitから作成したDLLを実行して環境構築は完了。
(「自動テストツール① NUnit 1/3」参照)。

自動テストツール③ Selenium2 1/5

Selenium2概要

NUnit等のテストツールを利用してブラウザのテストを行えるツール。
正確にはSelenium2のWebDriverが各ブラウザの仕様を吸収してくれて、
NUnit等のテストツール(「自動テストツール① NUnit 1/3」参照)からは共通のテストコードが実行できる。

ローカルPCでテストを実行する場合

ブラウザ(Chrome、IE、Firefox等)
↑ ↓
Selenium2(WebDriver)
↑ ↓
Javaや.NET(他も可)のテストコード
↑ ↓
NUnit(他も可)

別マシンでテストを実行する場合

別のマシン
↑ ↓
Selenium2(RemoteWebDriver)
↑ ↓
Selenium2(WebDriver)
↑ ↓
Javaや.NET(他も可)のテストコード
↑ ↓
NUnit(他も可)

SeleniumIDE(参考)

・テスターがブラウザを操作
・SeleniumIDEが操作を記録(テストもここに作成)。
・テスト実行&結果をSeleniumIDEが表示
SeleniumIDE」参照

NUnit(参考)

・.NETでテストコードを作成(別プログラムに対するテスト)。
・NUnitから↑テストコードを実行&結果を表示
NUnit」参照

自動テストツール② Selenium IDE2

Verify系

verifyTitle

※titleを確認
コマンド:verifyTitle
対象:jQuery-ui
値:

verifyText

※要素の文字列を確認
コマンド:verifyText
対象:id=moved
値:1

verifyValue

※フォーム要素の内容を確認。
(Value属性を持つ要素に対して。text、select等)
コマンド:verifyValue
対象:id=text
値:1

verifyElementPresent

※要素が存在することを確認
コマンド:verifyElementPresent
対象:id=text
値:

verifyElementNotPresent

※要素が存在しないことを確認
コマンド:verifyElementNotPresent
対象:id=xxx
値:

verifyVisible

※要素が存在して見えることを確認
コマンド:verifyVisible
対象:id=text
値:

verifyNotVisible

※要素が見えないことを確認
コマンド:verifyVisible
対象:id=hidetext
値:

verifyEditable

※要素が編集可能であることを確認
コマンド:verifyEditable
対象:id=text
値:

verifyNotEditable

※要素が編集不可能であることを確認
コマンド:verifyNotEditable
対象:id=rdo3
値:

verifyLocation

※urlを確認
コマンド:verifyLocation
対象:https://office-yone.com/ProProgramer/test_slider/index.html
値:

verifyAttribute

※要素の属性を確認
コマンド:verifyAttribute
対象:id=moved@id
値:moved

verifyTable

※テーブル内のテキストを確認
使い方分からず・・・

Assert系

assertTitle

※titleを確認。違えば停止。
コマンド:assertTitle
対象:jQuery-ui
値:

assertText

※要素の文字列を確認。違えば停止。
コマンド:assertText
対象:id=moved
値:1

assertValue

※フォーム要素の内容を確認。違えば停止。
コマンド:assertValue
対象:id=text
値:1

入力系

open

※urlを開く
コマンド:open
対象:https://office-yone.com/ProProgramer/test_slider/index.html
値:

submitAndWait

※送信して結果を待つ

click

※リンクやボタンをクリック
コマンド:click
対象:id=go
値:

clickAndWait

※リンクやボタンをクリックして,画面遷移を待つ
コマンド:clickAndWait
対象:id=go
値:

type

※input要素に書き込み
コマンド:type
対象:id=text
値:1

check

※チェックボックスやラジオボタンにチェックを付ける
コマンド:check
対象:id=rdo1
値:1

uncheck

※チェックボックスやラジオボタンのチェックを外す
コマンド:uncheck
対象:id=rdo1
値:1

自動テストツール② Selenium IDE1

Selenium IDEとは

ブラウザ用テストツール
Seleniumの中でもブラウザ操作を記録&実行するマクロ的機能を持つ。

事前準備

インストール

①ブラウザ「FireFox」のインストール
FireFoxのアドオン「Firebug」「FirePath」のインストール
③「Selenium」インストール

①省略
アドオンマネージャ/検索/インストール
Firefox_adon

Seleniumのサイトからバージョンをクリックしてインストール。
Firefox_selenium

実行方法

起動

SeleniumIDEのアイコンをクリック
またはツール > SeleniumIDE
Firefox_selenium_start

Selenium起動結果
selenium

操作の記録

右上の赤丸(記録開始)ボタン押下
再押下で記録中止

保存

テストケース
テストケースとして保存
テストスイート
複数のテストケースをまとめて実行できる。
テストスイートの保存、呼び出しで複数の保存済みテストケースを再度実行できる。