手動テストの例は自動化テストスクリプトです.ruby 1.9の新しい特性を使用して自動化スクリプトの作成を行います.

13809 ワード

昨日watir-webdriverを入れるために1年近くruby 1を使いました.8.6は1.9にアップグレードされました.1.9はunicode符号化をサポートしているため、中国語で自動化スクリプトの作成を行うことができます.簡単なパッケージを作成すると、次の自動化テストコードを実現できます.これらのコードは正しく動作し、正式な自動化テストの例として使用できることに注意してください.
1       = Watir::Browser.new :firefox
2 . 'www.google.com'
3 ( . .text_field(:name, "q")). . "qq"
4 . .button(:name, "btnG")
5 ( . .div(:id, "resultStats"))
6 ' ' if . .text. (' QQ')
7

  
これにより,自動化テストスクリプトは手作業でのテスト例と非常に類似しており,類似度は60%に達すると恥じない.
このようにして何のメリットがありますか?
手動テスト用例は「翻訳」がより容易に自動化されているテスト用例:自然の意味に合致する」と「在」関数が加わったため、テスト用例全体の自然度が大幅に向上し、自動化コードに慣れていない人が用例の実際の用例を大まかに推測できるようになった.用例を自分で話させるのは、疑いを解き、惑わすことを繰り返すよりましだ.
手動テスト担当者の作成例の敷居は相対的に低下している:コードの柔軟性と互換性が比較的大きい(ruby言語の特性)とテストapiが比較的簡単である(watirの特性)ため、手動テスト担当者はより便利にコードを理解し、作成することができ、このように使用例の作成の敷居が低下する.
使用例メンテナンスコストの低減:中国文化の使用例コードは簡単にreviewを行うことができる.このような経験があるはずですが、一部のコードには勝手なab、zbなどの理解しにくい変数やメソッド名が現れます.その原因を是正するのは、悪いプログラミング習慣や言葉の乏しい英語の蓄積にほかならない.中国語を使うと、これらの状況は大きく好転します.コードローカライズという仕事は日本ではここ数年ずっとやっていて、成果が豊富です.私たちはrubyを通じてこの点を参考にすることができます.
Webdriverの強力な特性上のテストコードはwatir-webdriverに基づいて作成されています.Webdriverはff,chrome,safiri,ieなど多くのブラウザをサポートしているため,コードの拡張性が非常に強い.合理的な構成とフレームワークのサポートを前提に、スクリプトマルチブラウザの実行を基本的に行うことができ、これは回帰テストにとって良いニュースであるべきである.
もちろん、テストスクリプトの文化、自然化口語化もいくつかの列の問題をもたらしていることを明確に認識しなければなりません.
用例の作成には比較的時間がかかります.中国語と英語の結合符号化は入力速度で確かに純英語に及ばない.
プログラマーにとって上のコードは少し変なものや耐えられないものがあります.完璧主義者にとって、上のコードは「純粋ではない」と少し見苦しい.
まとめてみると、個人的な観点は以下の通りです.
製品コードにとって、中国語と英語の混編のスタイルは現在、時宜に合わないはずだ.しかし、テストスクリプトにとって、中国語が多ければ多いほど、使用例の可読性が高くなり、自動化テストコードが手動使用例に近づくほど、これはかえって良いことであるはずです.これは中でまずレンガを投げて玉を引いて、志を同じくする者が一緒に研究することができることを望んで、自動化のスクリプトをもっと人間性、自然、読むことができて、維持することができます.近い将来、手動例を直接自動化例として実行することも不可能ではないかもしれません.以下は例の完全なコードであり,プレゼンテーションの興味だけであるため,Module層で簡単な可視化パッケージを勝手に行っただけで,あまりにも粗末でdemoであり,レンガ家の手下に情を残すことを望んでいる.
 1 # encoding: utf-8
2 require 'rubygems'
3 require 'watir-webdriver'
4 module CWrap
5 def (obj)
6 obj.click rescue obj.class.to_s + ' '
7 end
8 def ()
9 self
10 end
11 alias : :
12 alias : :
13 alias : :
14 def (obj)
15 obj
16 end
17 def (obj)
18 obj.wait_until_present rescue puts(' ' + obj.class.to_s + ' ')
19 end
20 def (obj)
21 obj.close rescue puts(' ' + obj.class.to_s + ' ')
22 end
23 def (text)
24 self.set text rescue puts(' ' + self.class.to_s + ' ')
25 end
26 def (url)
27 self.goto url rescue puts(self.class.to_s + ' ')
28 end
29 def (text)
30 self.include? text rescue puts self.class.to_s + ' '
31 end
32 def (text)
33 puts text
34 end
35 end
36 include CWrap
37
38 = Watir::Browser.new :firefox
39 . 'www.google.com'
40 ( . .text_field(:name, "q")). . "qq"
41 . .button(:name, "btnG")
42 ( . .div(:id, "resultStats"))
43 ' ' if . .text. (' QQ')
44