背景
最近だけで、その後を引き継ぐことを学び、また、予約ソフトウェアテスト&自動テストのいくつかの理論的な知識を紹介し、その後、appiumを働いていた方法のセレンのフレームワークと、この本を見つけました。だから、このような行為は、ほとんどすべてのフォローアップの練習ならば、私が追加され、概念やツールをマークし、ほとんど内容ではありません。
まず、ソフトウェアのテストカテゴリ
1、プロジェクトのプロセス段階に従って分類
要件分析
デザイン
コーディング
ユニットテスト
統合テスト
システムテスト
受け入れテスト
2、ホワイトボックス、ブラックボックステスト、ボックスグレーテスト
意義のホワイトボックステスト:時々出力は正しいですが、実際には非常に多く、このような状況を内部エラーが発生しました。
グレーボックステストを意味する:ホワイトボックステストによって操作されるたびに、効率が低くなる場合には、ブラックボックスがあまりにも一般的であり、したがって、グレーボックステストがより適している妥協します。
図3に示すように、機能テストとパフォーマンステスト
功能测试
主な機能は、ユーザーの実際のニーズかどうかをチェックします。
論理機能テスト、インターフェースのテスト、ユーザビリティテスト、インストールテスト、互換性テスト:機能テストは、多くの種類に細分化することができます。
性能测试
ある時のパフォーマンスとのスペース性能 2種類。
タイム・パフォーマンス:主にソフトウェアの特定の応答時間を指します。
パフォーマンススペースは:主に消費するシステムリソースを実行しているソフトウェアを指します。
4、手動テストと自動テスト
自動テストは完全に手動テストを置き換えることはできません、自動テストの目的は、単にテスターが退屈な反復テストプロセスからそれらを解放させ、より価値のあるテスト、に多くの時間とエネルギーを置くことである、そのような探索的テストなど。より多くの自動テストは、喫煙や回帰テストするために使用されます。
自動テストは、探検するには、この記事の焦点です。
5、煙テスト、回帰テスト、ランダム試験、探索的試験及び安全性試験
冒烟测试
:ソフトウェアテストの概要は、新しいバージョンのテストを正式前に、テストチームを意味し、最初のソフトウェアを確認するために少ない労力と時間を投資した主な機能を、渡された場合の主な機能は実行されません、再開発する開発チームに反撃しました。この方法の利点は、あなたが検出不可能なプロジェクトに時間と労力を節約することができるということです。
回归测试
:回帰テストは、古いコード変更、新しいバグを導入、または他のコードが変更後のエラーを発生させない確認するために再テストを指します。
随机测试
探索性测试
安全测试
図6に示すように、順方向および逆試験試験
フォワードテスト(陽性テストケース)および逆試験(Negtiveテストケース)がテストケースの分類です。
たとえば、次の入力のみデジタル入力0-9を受け入れることができ、その後、ユースケースは、正であってもよい:0,1,2,3,4,5,6,7,8,9、実施形態は、逆に使用してもよい。他の値。
一般逆試験を指す、入力または状態をサポートしていないシステムでは、そのような実施形態は、堅牢性と信頼性の検査システムのフォールトトレランス、であってもよいです。
第二に、何が自動化されたテスト
自动化测试
コンセプトは、広いと狭い意味を持っています:大まかに言えば、ソフトウェアのテストツールの援助を支援するために、すべての方法は、自動テストと呼ばれることができ、主に、機能テスト自動化ベースのUI層に言及、狭い用語。
注:本明細書において特に指定がない場合は、「自動テスト」は「UIベースの機能テストの自動化」を意味します。
第三に、自動テストと階層モデル
1、試験ピラミッド
異なるテストフェーズ投資した自動テストの割合:ユニット>サービス> UI。
2、単位層
ユニットテスト:テスト中の最小の機能モジュール部は、人工的に予め定められています。標準化されたユニットテストpytest、例えばJUnitのJava言語、TestNGの、NUnitのC#言語、およびPythonの言語ユニットテストなどのユニットテストフレームワークを使用する必要があり、現時点では、ほとんどすべての主流の言語は、対応するユニットテストフレームワークを有しています。
コードレビュー:コードレビュー関連のプラグインやツールは、主にようにPython言語審査委員会とするための、Java言語、Eclipseベースのレビューザ・クリプスと木星のように、多くのがあります。
今、なぜなら人気のgithubの/ gitlabで、以前のツールは非常に小さいです。一部のメーカーは、より専門的なツールを使用して排除していません。
拡張:コードレビュー
目的:
図1は、コードの品質を向上させるため
それを解決するために何かをeslintするために、インデントのスペースか何かのように、いくつかの非常に基本的な。
チームコードの仕様を確保するために2、
図3に示すように、コードのパフォーマンスを向上させます
4、バグ防止
5、大気の技術を作成するには、通信する技術チームのメンバーを深めます
6、古いものと新しい相互成長
プラクティスの推奨事項:
1.レビューすべてのコードをマージするために通過しなければなりません。
批判は最善の解決策を与えながら2、
3、各レビューは、少なくとも互いの信頼性を向上させるために肯定的な評価を与えます
4のレビューで要件を議論しないでください。
5、レビューであまりにも多くの建築やデザインパターンを議論していない、これは物事の設計の早い段階で対処すべき
例人気:
コードレビューは比較的小さく、より一般的な部分の技術チーム、技術チームと部分的事業の一部でよくやります。
当社は、実際に行うことは非常に少しを持っています。
3、サービス層
インタフェース試験:例HttpUnitは、HTTPのポストマン他の試験のための対応するライブラリまたはツールがあります。
4、UI 层
UIテスト自動化:ように主流のテストツールUFT、ワチール、ロボットフレームワーク、セレンと。
JS自動テスト:Qunit JavascriptがjQueryのチームメンバーによって開発された強力なユニットテストフレームワーク、反対している、とjQuery、jQueryのUI、jQueryのモバイルおよび他のプロジェクトで使用されています。
実際には、これはユニットテストですが、それは、フロントエンドであるので、そのUI側に行きます。
自動テストに適したプロジェクトの第四に、どのような
(1)ソフトウェア要件は頻繁に変更します
または第1のアプローチは、システムの妥協は、自動テストのために比較的安定して機能モジュールであり、手による試験の大部分の変化です。
(2)プロジェクトサイクルが長いです
(3)自動テスト・スクリプトを再使用することができます
(4)その他
第五に、自動テストパターン
1、線形試験
テストケースの間、最も原始的な方法は、存在する可能性が繰り返し操作はコストが高く、開発と保守につながります。
2、モジュラーテストドライブ
重複したスクリプトの問題に良い解決策。
図3に示すように、データ駆動テスト
ので入力は、様々な異なる出力データを生じさせます。データとスクリプトの分離を達成するために。
4、キーワード駆動型テスト
データ駆動型を理解した後、それは「キーワード」と「データ」、ということです結果は、キーワードを変更することで変化させます。
利点:
現在、市場で一般的なキーワード駆動型のツールのQTP(今改名さUFT-統合機能テスト)、ロボットフレームワーク (RIDE) ベースのツール。このようなツールは、基礎となるコードをカプセル化コードを書くの免除テスター恐怖「をフォームに記入」の形で、ユーザーが独立したグラフィカルなインターフェイスが利用できるが、我々は単に提供するキーワードツールを使用することにより、スクリプトを書くことの難しさを減らし、実施形態の「プロセス」タイプのように書くことができます。
短所:
キーワード・ドライブは、プログラミングの世界では、何も行うことはできません、同じユースケースのようなコードを書くことを書くことができますが、これは、同じユースケースがあり、高い学習コストを必要とし、ほぼ同等のプログラミング言語を学びます。信頼性が低下する、後者にもっとこのようなフレームワークより困難なメンテナンスは、あなた自身の枠組みの範囲内でのキーワードと経験の使用は、あなたは他の場所で再利用することは困難である学びました。だから、テスターの経験と技術積算値が懸念している、私は直接プログラムで自動化スクリプトを開発することを好みます。
第六に、自動テストツール - セレン2(UI層)
省略章実用的な操作部、その後の練習では、添加することが適切となる場合。
:一部の人々はとても言語を選択する必要が自動テスト、当社はソフトウェア言語の開発であると言う事実で、ソフトウェアの開発言語やソフトウェアテスト自動化言語は必ずしもリンクされていません。言い換えれば、いずれかのテストJavaベースのWeb開発プロジェクトに書かれたPython(+セレン)、自動テストスクリプトに基づいて、あなたは、PHPベースのWeb開発プロジェクトをテストすることができます。そのため、言語セレン自動テストの選択は、言語の発達との整合性を考慮する必要はありません。
1.セレン2とは何ですか
selenium 2
これは、Webブラウザのテスト自動化フレームワークです。
以下のすべてのデフォルトのセレンセレン2を参照します。
セレンサポートAndroidの自動テストが、それ以上が推奨されますがAppium
、Appiumは基本的に「とみなすことができ、セレンの延長であるAppsのセレンそれはまた、セレンwebdriverを技術開発に基づいているため、」。
2、セレンの歴史
セレンとwebdriverををマージするとき、セレン(セレン1)とwebdriverを、すなわち、二つの異なるオープンソースプロジェクトであることが判明したが、セレン2:
selenium 2 = webdriver + selenium 1
だから、セレン2がwebdriverをと同等であることができ、セレン2研究のために、実際には、webdriverをAPIのを学ぶことです。
3、セレンサポートモデル
セレンのサポートHtmlUnit
とPhantomJS
二つのモード。
ファントムJSでは、JavaScript APIの持っていないです何のインタフェース似ていますが、それのいくつかよりも、より高度なHtmlunitで、Webkitのコアを。
自動で行われ、テストの実行やファントムJS HtmlUnitは本当に、ブラウザを開いていない、必要なときに我々の見解では、我々は、それが本当だと思いますかを見ることができ、呼び出すことができますショットを APIで。
4、セレンをインストール
pip3 install selenium
5、一般的な機能
ブラウザをコントロール:ウィンドウのサイズが変更された場合
検索要素(位置決め)
操作エレメント
マウスイベント
キーボードイベント
待機中の要素を設定します
マルチフレーム、IFRAMEスイッチング/マルチウィンドウスイッチ
コール
switch_to.frame()
とswitch_to.window()
警告ボックスを処理する
場所警告ボックスの受信者:driver.switch_to_alert().accept()
アップロード/ダウンロードファイルには、
より複雑なアップロード/ダウンロードスクリプトがAutoItのを記述する必要があります操作クッキー
JSコール
コールexecute_script()
6、セレンIDE
ブラウザプラグインの形で提供します。
ファンクションポイントNOTE:
1、アサーションと検証との差:断言
比較、実行验证
コマンドの失敗がテストを終了しません。
図2に示すように、一時停止とWAITFOR差:休眠休止一定時間を設定し、一定時間内に表示されるWAITFOR素子を待ちます。
図3に示すように、コードにコンテンツのエクスポートを記録するための支持体は、支持体の種類は、次のように
ルビー/ RSpecの/ webdriverを
ルビー/ RSpecの/リモートコントロール
ルビー/テスト:ユニット/ webdriverを
ルビー/テスト:ユニット/リモートコントロール
パイソン/ユニットテスト/ webdriverを
パイソン/ユニットテスト/リモートコントロール
Javaの/ Junit4 / webdriverを
Javaの/ Junit4 / webdriverを担保
Javaの/ Junit4 /リモートコントロール
Javaの/ Junit3 /リモートコントロール
Javaの/ TestNGの/リモートコントロール
C#/ NUnitの/ webdriverを
C#の/ NUnitの/リモートコントロール
7、セレングリッド2
(1)はじめに
セレングリッド2を使用することができ、異なるホストとブランチノード(ノード)上のマスタノード(ハブ)を確立するために、テストは、異なるブランチノードで実行されているプライマリノードとすることができます。テストの結果は、異なる環境で実装されるように、異なるノード上では、さまざまなテスト環境(オペレーティングシステム、ブラウザ)を設定することができます。
(2)インストール
もはや別のパッケージを提供しますが、その機能がされたセレングリッド2 セレンサーバーに統合されますが、機能バイオグリッド2のを使用することができますダウンロードして、Seleniumサーバーを実行する必要があるので、インチ
セレングリッド2以下セレングリッドと呼ばれます。
(3)改善デメリット
セレングリッドのみセレングリッド、マルチシステム、マルチブラウザの実行環境を提供し、それ自体がテストケースの並列実行を提供しません。セレングリッドと組み合わせたマルチスレッド技術の使用は、テストケースの分散並列実行を実装することが推奨されます。
七つの自動テストツール - ユニットテスト(Pythonのユニットテストフレームワーク)
そのようなdoctestを、ユニットテスト、pytest、鼻など、のようなPython言語における多くのユニットテストフレームワークがあるunittest
のフレーム(以前PyUnitではフレーム)Python言語は、ユニットテストフレームワーク来る、Pythonの2.1以降のバージョンでは、ユニットテストのように持っていますPythonのに標準的な開発キットモジュール。
1、の概念
单元测试
それ自体でコードの別の部分を確認するためのコードの一部です。
(1)テストケース
例では、テストケースaは测试用例
。
ユースケースは、完全なシーンユーザーからの最終の出口にログインし、ブラウザを閉じ、。
ユースケースのみファンクションポイントの検証は、すべてのシステム機能を再度確認するために、ユーザがログインした後にしようとしないでください。
例の間の可能なユースケースとの依存を避けるために。
試験後のシナリオは完全なテストケースである必要が削減他のユースケースの実行に影響を与えないように、。
(2)テストスイート
検証機能は、多くの場合、複数のテストケースを必要とし、あなたが置くことができ、複数のテストケースのセットををもたらした、実行するために一緒に测试套件
テストスイートの概念。
(3)テストランナー
これは、実装戦略と実行の結果が含まれています。
(4)テストフィクスチャ
テスト環境のために構築し、破壊する、それが治具です。
使用して2、
書き込まれます
3、HTMLのテストレポートを生成します
HTMLTestRunner
それは、使いやすいHTML形式のテストレポートを生成し、ユニットテストの拡張機能です。
書き込まれます
4、欠点
セレンは上記とGird unittestのユニットテストフレームワーク自体はない、のように、前記マルチスレッド技術をサポートしていない、それはテストケースを実行するマルチスレッド技術を使用する簡単な構成によってTestNGのJavaフレームワークのようにすることはできません。
八、高度な自動テストアプリケーション
1、自動メール機能
SMTP(簡易メール転送プロトコル)は、簡易メール転送プロトコルです。
Pythonのsmtplib
モジュールは、電子メールを送信するための便利な方法を提供します。
試験結果を通知するために使用されてもよいです。
2、ページオブジェクトデザインパターン
Page 对象(Page Object)
親指の基本的なルールは次のとおりです。人々が行うことができます何でも、ソフトウェアクライアントによるページオブジェクトを行うことができます。これにより、簡単なプログラミングインターフェイスを提供し、下にある窓部材を非表示にすべきです。そうテキストボックスに文字列のリターンを得るために、アクセス方式(アクセサメソッド)を介して達成されなければならないアクセス、ブール値のチェックボックスを使用する必要があり、ボタンは、行動指向メソッド名として表現されなければなりません。ページオブジェクトは、GUIコントロールのデータカプセル化方式として、すべてのクエリや操作を行うものとします。親指の良いルールは変更されません特定のコントロール、コネクターのPAEEオブジェクトが発生した場合でも変更することです。
他のページには、それを継承するように、また、Pageオブジェクトのベースを作成することができます。
以下のような顔で、オブジェクト指向プログラミングのアイデアのインタフェースと実装。
九、自動テストプロジェクトの戦闘
書き込まれます