web-dev-qa-db-ja.com

手動テストから自動/プログラミングへの移行を学ぶための言語

私は、会社のソフトウェア/ IT部門で手動テスト担当者およびドキュメント(テスト計画など)の担当者として働いています。私はプログラミングのバックグラウンドがあまりありませんが、プログラミング言語とツールを学びたいと思っています。したがって、私は自動化されたテストツールとプログラミング言語を探しています。これらは私にも産業上の利点をもたらします。

注意すべきいくつかのポイントは次のとおりです。

  1. 業界で最も一般的なツールと、それらのツールに関連する言語を知る必要があります。
  2. たくさんのことを学ぶ時間があまりありません。したがって、私はもっとプログラミングをしたい場合に学ぶのに有益な言語を使用するツールを探しています。
  3. Webベースのアプリテストを希望しますが、それは制約ではありません。
  4. 勝者は1人ではないことを理解しているので、2〜3の言語を指定できます。
  5. VBScriptを使用するQTPを実行しましたが、VBScriptは広く使用されていません。より広い基盤を持つ言語を学びたいです。
  6. この質問に答えるのが本当に難しいように思われる場合でも、あなたの意見やアイデアを提供してください。

前もって感謝します。


編集:これまでのところ、私は次のことを行うことにしました。

  1. QTP
  2. セレン
  3. テスト駆動開発の方法論

プログラマーのエッジを提供し、複数のテストツール(Seleniumを含む)に適した優れたプログラミング言語を理解する必要があります。たぶんPython、RubyまたはJava?

15
SKA

うわー、これはかなり広範囲にわたる質問です。業界が テスト駆動開発 (またはコードの前にテストを書く)モデルに移行するにつれて、あなたは良い立場にあったと思います。

まず最初に、 ユニットテスト継続的インテグレーション およびWeb自動化について知りたいと思うでしょう。

私が知っている分野(.NET、Java、Javascript、ビルド自動化、Selenium)に焦点を当てます。

  1. .NETでは NUnit は、おそらく最も広く使用されている単体テストフレームワークです。これは、Javaの世界のポート(コピー) JUnit です。ほとんどのユニットテストフレームワークは、概念の点でこれらと非常に似ています。他の人を拾うのに長くはかからないでしょう。
  2. 上記のリンクを読んで、これらの概念についてのアイデアを持っていると、あなたはあなたの道に進むと思います。 PythonまたはRubyは、いくつかの簡単なテストで混乱する可能性が低いため、試してみる価値があります。
  3. Webベースのテストの場合、最もよく知られているのはおそらく Selenium および Watin です。これらを使用すると、ブラウザをスクリプト化してアクションを自動的に実行できます。しかし、私はこれらの良い使い方をほとんど見つけたことがなく、セットアップして便利にするのは非常に面倒です(あなたは数日/数週間の努力を話している)。繰り返しますが、これらの背後にある概念は、使用するフレームワークが何であれ似ています。

    私が1,2,3で4,5,6と答えたと思います:-)

HTH

11

「産業上の優位性」に関しては、それが何を意味するかによります。

大企業では、QTPが広く使用されています。 QTPで学ぶことは、実際には言語ではなく、ツールそのものです。私にとって、VBscriptを学ぶよりも、ツールの詳細を克服する方が面倒でした。パフォーマンステストについて考えるなら、PerformanceCenterよりもおそらく選択でしょう。ここでは言語としてCがありますが、ここでも、言語よりもツールの方が苦労しています。一部の企業ではIBMのスタックがあるため、Rationalソフトウェア(FunctionalTester、Robot、PerformanceTester)が登場します。また、ツールが少し複雑になります(IBM Redbobksが役立ちます)。

中小企業では、Java/C#が有益な場合があります。ここでは、junit/nunit/TestNG/MSTestに慣れることができます。 Webアプリの場合、Selenium/Watij/Watin/Fit/Fitness/Concordianのようなものは一見の価値があります。 AutoIT、PowerShell、Python、Fiddler、Jmeter、Abbot、Watir/Cucumber、Sikuliをご覧ください。

WebAii、TestComplete、Twistなどの他のツールもたくさんあります。他のいくつかの商用ツールもあります。通常、1〜2週間は試用版を入手できます。

すべては、あなたがどのような種類のプロジェクトにさらされるか、そしてそれがどのような会社になるかによって異なります。

とにかく、私の意見では、Java/C#をある程度学ぶだけで十分です。 C#/ Java忍者である必要はなく、すべてのライブラリを知っていて、与えられた言語を一生懸命勉強する必要はありません。ソフトウェアの開発はプログラミング言語を知ること以上のものであり、テスト自動化はツール/言語を知ること以上のものであることがわかります(M. Fewster&D。Graham)ので、それに執着しないでください。 QTPでスクリプトをプログラムできる場合(レコードではなくプログラム、記述的プログラミングの使用、ライブラリへのロジックの分解、適切なメソッドによるTestResultsの完全な制御など)、他のツールは問題になりません。 。特定の言語の基本を学ぶのに1、2週間かかるかもしれませんが、それはすべてテスト自動化のためです(少なくとも開始するため)。経験、ツール、概念、さまざまなアプローチの長所と短所を知り、頭の中で全体像を把握するには、「その言語でこれをどのように書くか」よりも多くのことが必要です(SO for this:D)。

3
yoosiba

この質問への答えは、実際にはいくつかのことに依存します。まず、どのようなテストを行っていますか? Webベースのアプリケーションをテストしますか?より大きなプログラムのライブラリ/コンポーネントをテストしますか? GUIテスト?コマンドラインアプリをテストしますか?

スクリプト化/自動化されたテスト機能を作成するときに、次のことが役立つことがわかりました。

[〜#〜] tcl [〜#〜] --TCLは、バッチファイルと同じくらい簡単にコマンドラインとインターフェイスできますが、バッチを水から吹き飛ばす強力な言語を備えています(GUI機能を含む) 。 Windowsベースのコンソールアプリをスクリプト化する場合(それらをテストするため、またはそれらを使用して他の何かをテストするため)、時間をかけてTCLを学習することをお勧めします。

AutoIt -このスクリプト言語を使用すると、WindowsアプリとのUI操作をすばやく簡単に自動化できます。学ぶのもかなり簡単です。時間と手間をかけてスクリーンスクレイピングユーティリティを開発したい場合は、AutoItと組み合わせて非常に洗練されたテストシステムを作成できます。

C-コンパイルされたライブラリをテストするとき、私は良い 'ol Cを使用して驚くほどの成功を収めました。テストアプリの基本的なスケルトンを作成し、テストに基づいて残りのコードを動的に生成するスクリプトユーティリティを作成します実行する必要があります(より複雑なタスクに使用できるサンプルCスニペットのライブラリを提供します)。

Ruby -自動テストを実行している場合、堅牢なスクリプト言語は非常に効果的です。テストログの解析、レポートの生成、テストスクリプトの自動生成のいずれが必要な場合でも、よく知っているスクリプト言語を使用すると、時間と頭痛の種を大幅に節約できます。私が選んだ言語はRubyですが、私の会社の他の人はPerlやPythonなどの他の言語を好みます。言語の選択はそれほど重要ではありません。1つ選んでよく学んでください。

テストしている内容によっては、テストしているコードに何らかのテストツールが組み込まれている場合もあります。 JavaコードはJUnitテストで記述されることがあります、RubyコードはTest :: Unitフレームワークなどを使用できます。 ここ はさまざまな言語の単体テストフレームワークのリスト。単体テストを念頭に置いてテストしているコードが作成されている場合は、これらの単体テストを利用できるように、コードが記述されている言語を学習する必要があります。

3
bta

Webベースのテストの場合は、 fitnesse を確認することをお勧めします。また、pythonは ロボットフレームワーク )に基づいて構築された自動テストフレームワークです。

3
Bryan Oakley
  1. Seleniumは、QAレベルでの自動テストで非常に人気があります。
  2. 何をするにしても、ソリューションに関連する学習曲線があります
  3. Seleniumのポイントは、Webアプリケーションのテストフレームワークを提供することです。Seleniumを使用して、アプリケーションの実行バージョンではなく、ブラウザーでDOM要素を操作します。
  4. Seleniumは、さまざまな言語(Java、Rubyなど)でクライアントを提供するクライアント/サーバーモデル(QAアプリインスタンスにアクセスできる場所でサーバーを実行し、クライアントライブラリを使用してテストをコーディングします)です。

  5. このタイプのテストは、コードを記述できる専用のQAリソースがある場合に適しています。それはいくつかの高レベルの回帰テストを提供します。ただし、欠点がないわけではありません。(1)テストの実行に時間がかかる可能性がある、(2)フレームワークを簡単に使用するためにWebアプリケーションのDOM要素に変更を加える必要がある場合がある、(3)Webアプリを変更するにはテストコードを変更することは簡単ではありません。

他のオプションは、アプリケーションコードの単体テストを作成することです。通常、開発者はこれをテスト駆動プロセスの一部として行います。そのため、開発者向けのTDDと、QA向けの自動QAテストがあります。

2
hvgotcodes

小さなコメントも追加します

新しいテスト自動化プラットフォームXML2Seleniumがあります

このプラットフォームは、classis Seleniumフレームワークの上に構築されており、多くの便利な機能を提供します

しかし、それは非常に使いやすいです

JavaまたはRuby-XMLで記述できます

そのようなSMth:

<!-- here we have some imports Frame - is like a class, you can extend it with extends -->
<import resource="Demo.a-server/03Registration/framesRegist.xml" name="frames"/>
<import resource="Demo.a-server/01Action/FramesAction.xml" name="framesAct"/>
<import resource="Demo.a-server/03Registration/FramesLogin.xml" name="framesLog"/>

<property resource="Demo.a-server/LogValue.properties" name="logValue"/>
<test name="creatAction" description="create and check action">

<frame extends="frames:logAdmin"/>
<frame extends="framesAct:createAct"/>

// here we upload the image
<upload id="img_id0" resource="image.jpg"/>

// click save button with id=save
<button id="save" />

// make a screen shot 
<screenshot/>

// sleep for 3 seconds 
<pause time="3000" />

// make a screenshot again
<screenshot/>

// navigate to the given URL:
<navigate to="${logValue.baseUrl}/admin"/> 

<frame extends="framesLog:logOutAdmin"/>
<pause time="1000"/>
</test> 

ここでは、エラーのあるレポートを確認できます: http://xml2Selenium.com/demored/xml2Selenium/

そして、ここで成功した状態のレポートを見ることができます: http://xml2Selenium.com/demogreen/xml2Selenium/

PS:Selenium IDEとしてのFirefoxだけでなく、すべてのブラウザーでのテストをサポートします

1
Alex Grakoff
  • はい、Selenium IDEを学ぶことができます。これは、Firefoxブラウザーのアドオンと同じで、テストを記録し、必要に応じて再生できます。 IDEの制限は、Firefoxでのみ使用できることです。

  • 複数のブラウザでテストする場合は、Javaの知識が必要なSeleniumGridまたはWebDriverが必要です。また、これを行うためにJavaプロである必要はありません。簡単な学習が役立ちます。

  • Youtube.comでSeleniumチュートリアルを検索できます。

セレンの利点:

  1. そのオープンソース!
  2. その習得と含意は簡単です。
  3. 複数のブラウザをサポートします。
  4. 複数のスクリプト/プログラミング言語をサポートします。
  5. 選択に柔軟に対応し、シンプルな記録と再生(IDE)、お気に入りのプログラミング言語を使用してフレームワークの設計を選択できます。
  6. 並列実行をサポートします。

これがお役に立てば幸いです。

0
Sidram Waghmare