protractorを使ってみる

はじめに

使ったことないE2Eフレームワークを色々試すの巻。 Angularでないプロダクトでも使えるらしいの挑戦。

Protractor - end-to-end testing for AngularJS

触ってみたメモ

# Global Install
$ npm install -g protractor

$ protractor --version

$ webdriver-manager version

# ProtractorのSetupにはUpdateをしろって書いてあるので試しにやってみる
$ webdriver-manager update

# SleniumServerの起動しておく
$ webdriver-manager start

conf.js

exports.config = {
   // こう書いておくとangular以外でも使用できる
  onPrepare: function () {
    browser.ignoreSynchronization = true;
  },
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['specs/*']
};

spec.js

describe('My First Test', function() {
  it('Search riririusei99', function() {
    browser.get('http://teamspirit.hatenablog.com/');
    
    element(by.css('input[type=text')).sendKeys('riririusei99');
    element(by.css('input[type=submit]')).click();

    // Waits for the title to be 'riririusei99'.
    var EC = protractor.ExpectedConditions;
    browser.wait(EC.titleContains('riririusei99'), 5000);

    expect(browser.getTitle()).toEqual('riririusei99 の検索結果 - TeamSpirit Developer Blog');

  });
});

テスト実行

protractor conf.js

使ってみた感想

  • webdrive-managerが入っているのでドライバの管理が簡単そうに見える
  • 設定が色々できるので拡張性高そう(ブラウザ変えたり、テストフレームワーク変えたり…)

今回触ったもの

github.com

【git】名前・メールをリポジトリ毎に変えたい

リポジトリ毎にコミット名を変えたい。(勉強会用の個人リポジトリにコミットする時とか用)

鍵を作成

$  cd ~/.ssh
$  ssh-keygen -t rsa
# 鍵の内容をクリップボードにコピー
$  pbcopy < ~/.ssh/id_rsa.pub

github上で鍵を登録

clone後にローカルで設定する

$ git config --local user.name "usename99"
$ git config --local user.email "MailAddress@gmail.com"

nodebrewの使い方メモ

リポジトリ毎にnode.jsのバージョンを使い分ける必要が出てきたので個人的な備忘録

# localにインストールされてるリストを確認
$ nodebrew ls

# リモートにあるバージョンの一覧を取得(LTSが何かまでは見れないので別途確認)
$ nodebrew ls-remote

# Installしてバージョン確認(2018/01/10ではv8.9.4)
$ nodebrew install-binary v8.9.4
$ nodebrew use v8.9.4
use v8.9.4
$ node -v
v8.9.4

# デフォルトで使われる設定
$ nodebrew alias default {version}

スクラムマスターになったのでいろいろ本を読み漁った話

この記事はチームスピリットアドベントカレンダーの16日目の記事です。(日付についてはお察しください。)

adventar.org

はじめに

スクラムマスターをやってみてのふりかえりを書いた記事を書いていたのですが…。

思った以上に長くなりまして…。

書くのも辛い、読むのも辛い
文章になるぐらいなら分割しようかと思いまして、、、

オススメ書籍をまずは分割してみました(>人<)

既にアドベントカレンダーも大幅に遅れてしまってるし! …という話です。

では本編。

オススメ書籍

1.アジャイルサムライ
以前に借りて読んだものを改めて、自分で購入して読み直した。
スクラムチームで過ごす中で何を大切にすればいいのかとかこういう時にはどうすればいいんだっけみたいなマインドの部分で非常に参考になる本。
自分の考え方はこの本がベースになっていると思う。

2.SCRUM BOOT CAMP THE BOOK
会社の本棚にあったので、読んだ本。一部内容が漫画になっており、非常に読みやすい本です。
これから勉強する、概要を素早く知りたいという人にはオススメでした。
一冊でざっくり理解したい人はこれがオススメです。

3.エッセンシャルスクラム
スクラムマスターはアジャイルコーチの役割もあるため、ある程度体系的な知識が必要という考えから購入した本。
分厚いだけあってスクラム開発における様々なイベント・問題などに対して網羅的に書いてある。
困った事がある時や、本来あるべき姿はどうなんだっけを知りたい時に辞書みたいな使い方をしている本です。

4.実践アジャイルテスト
新しいチームに入ってみて、文化が違うのでどういった関わり方をすれば良いか悩んだので改めて読み直した。
アジャイルテスターとしてチームにジョインする時についてのテストの考え方、スクラムチームに貢献するにはどういうことをすればいいのかが書かれている。
こちらはアジャイルテスターとして困った事がある時にどうするっだっけみたいな時に辞書代わりに使っている本です。

5.アジャイルコーチング
アジャイルコーチする上でどうやって改善を進めれば良いのかという進め方、考え方・スタンスについて知りたくて購入した本。
正直さっと読んだ感じでは上手く実践できていないので、もう一回読んだら何か摑める気がする。

6.スクラム実践入門
アジャイルコーチングとどちらを買うか迷った挙句、買わなかったんだけど、会社の本棚にあった。
前半はスクラム開発の概要を説明しているので他の本と情報がかぶるが、6章〜8章について事例が書いてあるので他のチームがどんな事に困って解決しようとしてるのか知りたい時にはいいと思います。

タイプ別オススメ

これまで読んだものをタイプ別にオススメすると、こんな感じでしょうか!

スクラムって何ー?」って人

「SCRUM BOOT CAMP THE BOOK」をまず読む。

スクラムチームにこれから入るぜ!」って人

「SCRUM BOOT CAMP THE BOOK」&「アジャイルサムライ」を読む。
※QAなら「実践アジャイルテスト」も読む

「記憶を消して、もう一度スクラムマスターをやる世界線にタイムリープしたriririusei99」って人

「エッセンシャルスクラム」&「アジャイルサムライ」&「実践アジャイルテスト」を読む。
※基本が分かったタイミングでお師さんを探す&書籍に限らず情報収集。

まとめ

上記の本を一通り読んでみて、全部わかってるかと思うとそうじゃないのでなかなか難しいなぁとか思っています。
その他、オススメ書籍があればぜひ教えて欲しいです!

冬休み初日の現場からは以上です!

おわり

WebDriver始めました

Slenium WebDriver始めました。 完全に自分向け

要素を取得する(cssSelector)

WebDriver.findElement(By.cssSelector("body"));
WebDriver.findElements(By.cssSelector("li"));

特定番目を取得する

WebDriver.findElements(By.cssSelector("li")).get(0);

数を取得する

WebDriver.findElements(By.cssSelector("li")).getSize();

クリック

WebElement button = WebDriver.findElements(By.cssSelector("button")).get(0);
click(button);

セレクトボックス

Select selectBox = new Select(WebElement);
selectBox.selectByValue(String);
selectBox.selectByIndex(int);

チェックボックス

public void setCheckBox(WebElement checkBox, Boolean check) {
  if (checkBox.isSelected() != check) {
    click(checkBox);
  }
}
WebElement checkBox = WebDriver.findElement(By.cssSeletor("#agree"));
setCheckBox(checkBox, true);

文字を入力

WebElement input = WebDriver.findElement(By.cssSeletor("input#sample"));
input.sendKeys("hogehoge");

//BackSpace
input.sendKeys(Keys.BACK_SPACE);
//ENTER
input.sendKeys(Keys.ENTER);

// 削除する
input.clear();

待つ

// 押せるようになるまで待つ
WebElement button = WebDriver.findElement(By.cssSelector("button"));
wait.until(ExpectedConditions.elementToBeClickable(button));

// 見えるまで待つ
WebElement header = WebDriver.findElement(By.cssSelector("header"));
wait.until(ExpectedConditions.visibilityOf(header));

// 見えなくなるまで待つ
WebEkenebt indicator = WebDriver.findElement(By.cssSelector(".indicator"));
wait.until(ExpectedConditions.invisibilityOf(indicator));

// 消えるまで待つ
WebEkenebt indicator = WebDriver.findElement(By.cssSelector(".indicator"));
wait.until(ExpectedConditions.stalenessOf(indicator));

// テキストの文字列になるまで待つ
WebElement h1 = WebDriver.findElement(By.cssSelector("h1"));
wait.until(ExpectedConditions.textToBePresentInElement(h1, "riririusei99"));

Cookieの操作

// 追加
WebDriver.manage().add_cookie({'name': 'foo', 'value': 'bar'});
// 名前で削除
WebDriver.manage().deleteCookieNamed("foo");
// 全削除
WebDriver.manage().deleteAllCookies();

【Bot】Wikipediaを調べてくれるようにする

ほろよいてっく向け。
ネタバレが過ぎたので拡張しておく。

今回使う技術

github.com

では開始

いつもの通りインストール

pip3 install wikipedia

responce.pyの修正

下記を追加

import wikipedia

…略…

@respond_to('(.*)について知りたい件')
def searchWiki(message, something):
    response_string = ''
    wikipedia.set_lang('ja')
    try:
        wiki_page = wikipedia.page(something)
        message.reply('なるほど、{0}についてですね。'.format(something))
        message.reply(wiki_page.url)
    except wikipedia.exceptions.DisambiguationError  as e:
        message.reply('エラー、wikiの結果が上手く返ってきませんでした。')

完成!

github.com

話しかけてみる

f:id:riririusei99:20171219033404p:plain

まとめ

テストしていた「ガンダムについて教えて」という問い合わせは曖昧さ回避のページに飛んでしまっていたため、いきなり例外処理を実施する必要があったのだが通常のレスポンスが来てるのかと勘違いしてしばらくハマってしまった。
A3RTの時もそうだったがガンダムは意外とテストしやすいワードなのかもしれないw

おわり

検証端末を管理した時の小ネタ

この投稿はソフトウェアテストの小ネタ Advent Calendar 2017 - Qiitaの13日目の記事です。

qiita.com

はじめに

スマホなどの検証端末ってたくさんありすぎていざ操作する時に操作性が違ったり、思った操作ができなくて困る事ありますよね。
今回はそんな端末管理の時に少しでも便利になるように取り組んだ小ネタみたいなのをQ&Aで紹介したいと思います。

記号が打てない問題

Q.端末のキーボードが揃ってなくて記号などを入力するときの操作が困ってます…

A.端末導入時のインストールマニュアルを用意しましょう!

端末導入時に開発チームで共通の入力アプリを用意しておくことが有効です。
Android系とiOS系の2種類ぐらいだったらなんとか覚えられます。

その他下記も決まってると便利です

  • インストールしておくアプリ(QRコードリーダとか)
  • 共有で使用するgoogleアカウント、iCloudアカウント(ブックマークの共有のため)
  • 接続先Wifi設定

似たような端末多すぎ問題 & 起動するまでOSバージョンわからない問題

Q.OSのバージョン依存のテストをするとき、目当ての端末を探すのに困っています…

A.ひと目で分かるような工夫をしましょう!

管理番号のシールが貼られたりすることはよくあると思いますが、思い切ってテプラで色々貼っちゃうのがおすすめです。

www.kingjim.co.jp

  • 端末名(わかりやすい名前とか)
  • バージョン情報
  • 特別なアプリを入れてる端末
  • 特殊な設定をしている端末

端末コンシェルジュ問題

Q.要望に合う端末を教えてほしいとお願いされるよ!

A.みんなが見れる場所に端末一覧を用意しましょう!

「横幅が小さい時に体裁が崩れないことを確認したい! 」
「このバージョン以前でバグが起きてるらしいのだけど…」

なるべく本人が欲しい端末をみつけられるように端末一覧を用意しましょう。
同時に選定する際のチェックポイントになりそうな項目(バージョン、サイズなど)も同時に見れると便利かと思います。

これと同時に新しい端末を何を買うか聞かれる場合もあるかと思いますので、ブラウザシェアと一覧を比較したりして今足りない端末をすぐに伝えられると便利かと思います。

端末が行方不明になる問題

Q.あれっ!あの端末どこに言ったっけ…。

A.事前に共通アカウントの設定をしておけば探しやすくなります!

端末の導入時に共通のアカウントを設定しておけば、端末がなくなったときに探すことができます。(電源が入っているのが前提ですが…)

Androidoの場合
Android 搭載端末を紛失したときに見つけられるように準備しておく - Google アカウント ヘルプ
iOSの場合
すべてのデバイスで「iPhone を探す」を設定する - Apple サポート

遠隔で画面ロックができてメッセージを出せる他、遠隔で音を出すことも可能です。(オフィスでやると目立ちますが…。)
ブックマークも共有できるのでアカウントを統一しておくと便利です。

まとめ

いかがでしたでしょうか。
その他、会議室管理システムを端末管理システムに作り変えたりとかしたのですがこれは意外と流行らず…だったり、 場所場所によって最適な方法はそれぞれあるとおもいますのでなにかの参考になればと思います。

おわり

riririusei99