5年前に取得した3つの最も有用なスキル

私はテスト自動化に5年以上携わっています。 何よりも、私はWindowsで働いていました。 Borland SilkTestでスクリプトを作成します。 各製品は、その利点を持っていますが、残念ながら、いくつかの欠点 - 私は、QTPとのTestCompleteなどのテスト自動化された他のIDEに精通しています。 「システムを離れることなく」解決するのが非常に難しい問題があります*





自慢しません。 私はこの惑星で最も賢くて経験豊富な人ではありませんが、私の経験は日常の問題を解決するのに十分です。 5年前でさえ、私は3つのシンプルで基本的なスキルを身につけており、それを使って新しい問題を解決しています。



10年生で、DOSコマンドについて読んだ



これは7年前にも起こりました。 私は、標準のDOSコマンドの動作方法に興味を持っていて、コンソールコマンドの入力および出力ストリームをテキストファイルに出力することができるという。

これはどのように役立ちますか? すべてが非常に簡単です。 以下に例を示します。

仮定し、一つの試験では、あなたがCにあるすべてのファイルのリストを取得する必要があります:テスト対象のアプリケーションをインストールすると、インストール後にファイルのリストとそれらを比較するために、\ドライブ。 したがって、インストールプロセス中にどのファイルが変更/追加されたかを理解できます。



これは、次のcmd.exeコマンドで簡単に実行できます。



dir C:/ B / S> initial_c.txt



dir C:/ B / Sコマンドは、C:ドライブ上のすべてのファイル、フォルダー、およびサブフォルダーを収集し、「>」ストリーミング出力リダイレクト機能を使用してコンテンツをinitial_c.txtファイルに書き込みます。



あごひげを生やしたプログラマーが“然と叫ぶのをすでに感じています。 はい、プログラムを書くために...はい、絶対に! 「。 しかし、すべてを説明させてください。



最初は、SilkTestの(言語4テストスクリプト)で、私は、ディレクトリツリーを旅再帰関数を記述しようとしています。 その結果、次のことが判明しました。

  1. 機能は複雑でした。 ディレクトリでのハンドラ、ディレクトリに関する情報を含む構造、再帰の使用-これはすべて単純なことではありません。
  2. この機能は、一部のシステムの一部のディレクトリへのアクセス権を偶然見つけました。
  3. 後で判明したように、dir C:/ B / Sよりも25倍遅く動作しました


自動テストはプログラミングに似ています。 しかし、全世界で見られる製品を開発する開発者とは異なり、私たちのテストは会社の壁を離れることはありません。 したがって、テストが単純なままであることが可能であり、必要です。



単純なコマンドのdir C上のディレクトリツリーを生成するために、身体の複雑な再帰関数の交換:/ B / Sは - テスターのための効果的な良い習慣です。



また、xcopyコマンドは標準のSilkTest SYS_CopyFile関数よりも安定しており、md dir1 \ dir2 \ dir3コマンドは、存在しないディレクトリdir2に存在しないディレクトリdir3でディレクトリを作成できることがわかりました...



コマンドラインにはさらに多くの利点があります。 systeminfoに言及する価値があります。これは、システムに関する簡潔でありながら非常に有用な情報を提供します。 wmic-システム構成に関する完全な情報を提供できるコマンド。 msiexecの - Windowsのレジストリから情報を取得することが非常に容易になり、別の曲、テスト・システム上でWindowsアプリケーションのインストールを自動化することができ、家族のチームは*をreg; 必要なネットワーク設定に使用されるnet *コマンドのファミリー。



コマンドラインは非常に効果的です。 しかし、私がこれを書いているのは、私の観察によると、80%の人がそれを知らないか、避けているからです。

時間管理を思いついた場合、最初の仮定は次のように書きます。

「コマンドラインを学ぶ。」



純粋なWin 32 APIでメモ帳を書いた



P. V. Rumyantsevの本「 Win 32 APIでのプログラミングABC 」を読んだだけではありません。 私はすぐに読んだものを実装しようとしました。 Win APIでグラフィカルアプリケーションを作成することは、あなたにとって問題ではないとすぐに言います。 ここでは、Win APIでWin 3.11 / Win 95で書いたあごひげを生やしたプログラマーに頭を下げ、この記事の冒頭で私を賭けたいと思いました。



しかし、それは私にとって非常に興味深いものでした。 Delphiに会った後、このVCLの抽象化から飛び降りることはクールでした。 WindowsはすべてWindowsであることが判明しました。 はい、コントロール、ダイアログ、そしてデスクトップさえもウィンドウです。 ああ、信じてください-それはひらめきでした。 SendMessageを使用することを学び、これらすべてのウィンドウがどのように識別されるかを理解しました...



すぐに、私がSilkTestを使い始めたとき、Win 32 APIの知識は私を大いに助けてくれました。 私は、従来の手段SilkTestのでは解決できないすべての問題に実行すると、 - 私は、エクスポート機能のWin APIを参照してください。



私の練習からの新鮮な例。 次のテストを開始する前に、サードパーティアプリケーションの開いているウィンドウとその子ウィンドウのリストを収集する必要がありました。 SilkTestには、開いているすべてのウィンドウのリストを返すような関数はありませんでした。 そして、開いているウィンドウを収集するための既存のメカニズムは、松葉杖にあり、非常にゆっくりと動作し、しばしばクラッシュしました。 我々はWinAPIの関数を適用した後EnumWindowsEnumChildWindowsを 、すべてのウィンドウを閉じると、1に20分から20回に減少しました。 そして、新しくかつ大幅に簡素化されたアルゴリズムは、以前のようにもはや膨大な数の失敗を与えませんでした。



今日、Windowsでのプログラミングは、.NET Framework WinFormsとWindows Presentation Foundationの抽象化に囲まれていることを理解しています。 しかし、WinAPIのSpartan条件でのプログラミングの経験は、非常に役立ちます。 さらに、ひげを生やしたプログラマーは、同じ.Net Framework 4ではWindows APIが提供するすべての機能を提供できないことを知っています。



したがって、Win32 APIプログラミングスキルを習得するために怠laにならないでください



Perlを学びました



それは5年前であり、その時から多くの水が流れ、多くの見解が変わりました。 今、私はPerlがこの惑星で最高のプログラミング言語であることを激しく保証したくありません。 おそらく、彼は公式の国際プログラミング言語である他の惑星で再び人気を博すでしょう。 しかし、私は1つのアドバイスをしたいです-あなたが好きな動的プログラミング言語を学んでください。 今、Rubyの大きな可能性を感じています。 おそらく、PythonとPearlの爆発的な混合物だからです。 パールで執筆を始める前に、古き良き研究所のパスカルと小さなCを持っていました。 私の脳がどれだけ散らばって爆発したか想像できません。 パールでは、スクリプトを書くのは非常に面白かったです。 教科書の小さなWebスクリプトから始め、1年後、自分の曲がったエンジンで大学のWebサイトを作成しました。 でも、とても面白かったです。 1年後、仕事に就いた後、自動化されたテストプロセスの監視およびレポートシステムを作成しました。 まだ使用しています。



私はそれを使用するのは私だけではなく、チーム全体と上司であると強調します。これはめちゃくちゃ楽しいです。

そしてネガティブなモチベーションのおかげです。 はい、これを行わなかった場合、私はまだ座って、OutlookからExcelにレポートをプルします。 いいえ、おそらくパールのおかげです。 その時点で、メールからテストレポートを取得し、データを解析してMySQLテーブルに入れるのは非常に簡単だったからです。 次に、サーバーを上げて、独自の、しかしあまり湾曲していないエンジンを使用してデータを表示します。



さらに、パールは私に多くの時間を節約し、日常業務からの死から私を救いました。 ミスをしないように非常に注意する必要があったとき、私は新しいものに古い形式からテキストデータの3メガバイトを転送するタスクを与えられた後は。 また、古いデータ形式と新しいデータ形式は非常に簡単でした。 半日、私は次の3秒間で必要なデータをすべて追い抜くスクリプトを作成してテストしました。 次の3日間はもっと面白いことをして、1日前にタスクを顧客に引き渡しました。



私が行っているだろう時間管理の第二公準:「学びのPerl»、うまく、もっと政治的に正しいです。

「動的プログラミング言語を学ぶ」






*問題が発生したのと同じレベルで問題を解決することは不可能です。 次のレベルに上がることで、この問題よりも高くなる必要があります。

アルバート・アインシュタイン



All Articles