2013年12月16日月曜日

自動テストプロジェクト 1

目指す環境
jenkins+selenium+uiautomaterでスマホの操作とブラウザでの操作を自動化する。

今回はselenium rcでwebの操作を自動化する話。

以下手順
①selenium IDEでシナリオの作成を行い、htmlで書き出す。
②selenium rcで書き出したファイルを実行する。

①をするにあたりツマッたところ。
・最新のselenium rcのjarファイル(selenium-server-standalone-2.38.0.jar)
だとテスト結果を書き出すファイルを作成できない。
下のやり取りもあるし、バグみたい。
https://code.google.com/p/selenium/issues/detail?id=6704
2.38はダメだよ!って書いてる。

したがい一つ前のversion(selenium-server-standalone-2.37.0.jar)を利用する。

②をするにあたりツマッたところ。
selenium IDEからの実行だと実行スピード調整できるからいいけど
rcだと早すぎてボタン見つからない、ってエラーが出る。
表示に時間がかかるところは

コマンド:pause
対象:3000

とか書いてwaitさせるようにする。



---その他---

はじめ、selenium builderを利用しようとしたが、自分の環境(windows 8 + firefox 25.0.1)だと
selenium builderが起動しなかった。
環境要因??
webdriverが使えて便利みたいだから、またしばらくしたら試してみたい。

以上です。

制御文字、ascii文字のテスト

0x00-0x1Fの範囲および0x7Fはutf-8,shift_jis,asciiともに同じ制御文字を表す。
また0x20-0x7Eは同じascii文字を表す。

mysqlで
SHOW VARIABLES LIKE 'character\_set\_%';
した結果は以下。

+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | utf8   |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+

各テーブルのカラムはutf-8であることが分かる。

IFについてはshift_jisだが0x00-0x7Fについては
utf-8、shift_jisともに同じ文字列なので
正常に処理されるかどうかの確認は0x00-0x7Fを直接挿入すればよい。

したがい下記のようなupdate文をmysqlに対して実施後、
IFをたたけばよい。

UPDATE <テーブル名> SET <フィールド名> = CAST(0x<HEXの値> AS BINARY) WHERE ~

以上です。

jenkins(windows8)でhello world!

windows8でjenkins導入の際にハマったのでメモ。


jenkinsの導入はこのあたり参考。
http://appkitbox.com/knowledge/test/2012/11/12/jenkins-first

導入したのはjenkins-1.542

ツマッたところはシェルの実行をするところ。
上記ページ通りに実行すると下記のようなエラーが表示される。

windows環境だから/bin/shってないんだよね。
設定画面の中ほどに[ビルド]という欄の[ビルド手順の追加]ボタンをクリックし、
[シェルの実行]ボタンではなく[Windowsバッチコマンドの実行]
を選択し、コマンド欄に
echo "hellow world"で保存、実行で正常に挙動しました。



以下参考になりそうなサイトの覚書。

http://dev.classmethod.jp/tool/jenkins/jenkins-refactoring-jobs/
http://qiita.com/mechamogera/items/f689b95670127d5bf046

以上です。

2013年11月26日火曜日

eclipseでプロジェクトフォルダに赤いビックリマークが出たときの対処法

eclipseでプロジェクトフォルダに赤いビックリマークが出たときの対処法

※筆者はdropboxでプロジェクト共有を試みた際に当該エラーが出ましたが
単純にプロジェクトのインポートでも同様のエラーが出ることがあると思います。
ソースコードに問題がない場合【対策】で記載している手順を一度確認してみてください。

【目的】
開発用PC:Aと開発用PC:B間でdropboxを用いてプロジェクトの共有を行う

【事象】
開発PC:Aで作成したプロジェクトをdropboxにコピー後
開発PC:Bにて下記手順実施
ファイル -> インポート -> 既存プロジェクトのインポート
上記を実施し、dropbox上のプロジェクトを指定

このときパッケージエクスプローラ上、
インポートしたパッケージに赤のビックリマークが表示される

【対策】
当該プロジェクトを右クリック -> プロパティ ->javaのビルドパス
上記移動すると外部jarのパスが開発用PC:Aの状態になっていた。
新たに開発用PC:Bのパスを設定することで解決

以上です。

2013年10月30日水曜日

バイト列と文字列の変換

Stringオブジェクトからバイト列に変換するには、getBytesメソッドを利用する
//StringオブジェクトからUTF-8のバイト列に変換
String s = "abc";
byte[] bytes = s.getBytes(”UTF-8”);
for (byte b : bytes){
System.out.println(b);
}

UTF-8のバイト列からStringオブジェクトの生成
//UTF-8のバイト列からStringオブジェクトに変換
byte[] bytes = new byte[]{ (byte)0xe3, (byte)0x81, (byte)0x82, (byte)0xe3, (byte)0x81, (byte)0x84};
try{
String s = new String(bytes, "UTF-8"); //"あい"を出力
System.out.println(s);
}catch (java.io.UnsupportedEncordingException e){}

後者の方はあんまり使わないだろうけど参考までに。
以上です。

2013年10月29日火曜日

文字と文字列の変換

javaでは文字列を文字の集まりとしてとらえず、文字列という一つのオブジェクトとしてとらえることが水晶されているが、内部的には文字列は文字(char型)の配列として実装されている。

Stringオブジェクトの文字列から文字を1文字単位で取り出すにはcharAtメソッド。
Stringオブジェクトの文字列から文字(char)の配列をで取り出すにはtoCharArrayメソッド。
//Stringからcharの配列に変換
String s = "moo";
char[] arr = s.toCharArray();

StringBuilderオブジェクトの文字列を文字の配列に変換するにはgetCharsメソッド。
//StringBuilderからcharの配列に変換
StringBuilder sb =  new StringBuilder("moo");
char result[] = new char[sb.length()];//必要な長さを取得
sb.getChars(0, result.length, result, 0);

文字の配列からStringオブジェクトを生成するには文字の配列を引数に渡してStringオブジェクトを取得
//charの配列からStringオブジェクトを生成
char[] arr = {'m', 'o', 'o'};
String s1 = new String(arr);

文字の配列からStringBuilderオブジェクトを生成するにはappendメソッド。
//charの配列からStringBuilderオブジェクトを生成
char[] arr = {'m', 'o', 'o'};
StringBuilder sb = new StringBuilder;
sb.append(arr);

StringBuilderのは使う気がするね!
以上です。

2013年10月28日月曜日

Stringの比較

stringの比較には”==”を使ってはならない。
”==”で一致するのは文字列リテラルのときのみ。
String s1 = "012";
String s2 = "01";
s2 += "2";
//s1 == s2 は不成立

変数が参照する文字列オブジェクトと文字列リテラルを同値比較するとき、
次の方法は避ける。

s.equals("012");

上記はsがnullのときNullPointerExceptionが発生する。
正しくは以下。
"012".equals(s);

StringBuilderオブジェクトと同値比較をする場合、contentEqualsメソッドを使う。
contentEqualsメソッドはStringオブジェクト同士の比較にも使える。
以下のように比較する。
StringBuilder sb1 = new StringBuilder("012");
StringBuilder sb2 = new StringBuilder("012");
sb1 == sb2; //false
sb1.equals(sb2);//false
sb.toString().contentEquals(sb2);//true


ちょっとややこしいけど、文字列大事。

以上です。


2013年10月25日金曜日

SyntaxHighlighter

ブログを始めるテスト。
コードを掲載する方法も試行。

BloggerにSyntaxHighlighterを導入する方法は
http://moririn-web.blogspot.jp/2010/03/bloggersyntax-hilighter.html
このへんを参照。

背景の色味は
http://3891s.blogspot.jp/2013/02/syntaxhighlighte-code-up.html
このへんを参照。

試しにjavaのコードを載せてみる。

public static void main(String[] args){
System.out.println("Hello World!!")
}

見やすくていい感じ。

以上です。