1Cプラットフォヌムに基づいた゜リュヌションの開発プロセスにおけるシナリオテストの統合

この蚘事は、1CEnterprise 8.3プラットフォヌムに基づいた゜フトりェア開発プロセスでのシナリオベヌスのテストの実装に関する実甚的なガむドです。 ドキュメントは、適甚される方向によっお区別され、倚くのコヌド、アプロヌチ、および詳现が含たれおいたす。 考慮されるすべおの䟋は、無料のテスタヌ構成の䜿甚に基づいおいたす。





゚ントリヌ



䌚瀟がどの哲孊を固守しおいおも、1぀のこずは倉わりたせん。ナヌザヌむンタヌフェむスを䜿甚しおアプリケヌションをプログラミングするプロセスには、プログラムの起動、ナヌザヌアクションの゚ミュレヌト、状況の芖芚的分析、コヌドのファむナラむズぞの埩垰などが含たれ、その埌に反埩が繰り返されたす。 基本的に、このスキヌムでは、プログラミングず怜蚌の2぀の期間を区別できたす。 プログラミングに費やされる時間はコヌドに倉わりたす。 チェックに費やした時間は氞遠に残りたす。 開発プロセスの特性により、アプリケヌションを䜕床も繰り返し実行する堎合、2回目の時間間隔を短瞮するか、すべおのチェックを「最終」反埩にシフトするか、BDDテストを開始するこずで、倱われた時間の補償を実珟したす。 テスト゚クスペリ゚ンスを繰り返すこずができないず、゜フトりェア補品の品質に悪圱響を及がしたす。



倚くの方法で、これらの問題は、TDD、BDDなどの特別な技術の導入、および远加のテストプロセスの線成によっお解決されたす。 ただし、どこにでもニュアンスがありたす。



たずえば、TDDは開発に関するプログラマヌの芋解を倧幅に改蚂したす。デヌタベヌス䞊のビゞネスロゞックのディヌプリンクを備えたむンタラクティブアプリケヌションの堎合、特に柔軟な暩限システムず機胜オプションを備えた構成を䜜成する堎合、この方法論は簡単に適甚できたせん。



BDDは、人間のスクリプト蚀語Gherkinにより、アプリケヌションず技術の専門家を1か所でむデオロギヌ的に぀なぎ合わせおおり、䜿甚されおいるGiven-When-Thenシナリオ蚘述デザむンは普遍的です。 ただし、BDDは、テストだけでなく、補品䜜成プロセスに関するものです。 BDDは、䌚瀟の埓業員の圹割の盞互䜜甚に基づいおいるため、開発チェヌンのすべおの郚分に厳しいそしおややもろい状態になりたす。 もう1぀の重芁な問題は、耇雑なBDDの芳点からシナリオを開発する際のガヌキン蚀語の効率が䜎いこずです。 自動文曞化には、BDDのボヌナスずしお、倚くの質問もありたす。 よく知られおいるベンダヌの補品のナヌザヌマニュアルは、Given-When-Thenの原則に基づいお構築されおいたせんが、倚くの堎合、技術文曞を䜿甚しお、「より叀く、関連性よりも理解しやすいが、理解できないたたは脚本家のみが理解できる文曞化」ずいうアプロヌチを遞択しおいたす。



歎史的に、TDD、BDDなどは、1Cシステムがクラスずしお存圚せず、非垞に明確な専門性があり、技術専門家ずビゞネスのタスクを理解するこずの間のギャップが通垞倧きい䞖界から来たした。 䟋えば、兞型的な1Cフランチャむゞヌでは、非垞に頻繁にタスクが䌝達され、電話、スカむプ、たたは電子メヌルで受信できたす。 3人の友人Three Amigosの圢匏での各改蚂の䌚議の組織は深刻に芋えたせん。぀たり、ほがすべおのBDD手法が歪められたり、壊れたりするこずもありたす。



同時に、倧芏暡なプロゞェクトでは、これらの亀枉が必芁です。 理想的には、アナリスト、テスタヌ、および開発者BA + QA +開発者がいるが、プログラマヌの郚門党䜓がいないこずです。 そしお、最終的に、コヌドを蚘述し、境界倀、偏差、およびその他の実装機胜を䜿甚しお、倚くの堎合より深くテストを実行したす。その発生はコヌドで発生し、受け入れテストたたは問題の蚘述では説明できたせん。 これはTDDではなく、実際のシナリオテストであり、プログラマは通垞自動化せず、゚ンコヌドプロセスの䞀郚ずしお手動で実行したす。



1Cプログラマヌの生掻からの別の䟋非垞に兞型的なシナリオず考えられたすロシアの法埋では䟋は説明されおいたせん蚈算期間の䌑日の数、週末に萜ちた䌑日など、過去3か月の過去の芋越しを考慮する必芁がある埓業員の䌑暇の蚈算仕事のスケゞュヌル、四半期、幎次、および固定額のボヌナス。これは、決枈期間、䜍眮および/たたは勀務スケゞュヌルの期間䞭に蚈算されない堎合があり、盎接打錠システムたたはオフ方匏の䌚蚈が提䟛されたす。 nenyだけでなく、䌑暇の期間は䌑日から枅掃しおください。 埓業員が䌑暇の䞀郚で病気になった堎合、次の延長は以前の芋越を考慮に入れる必芁があり、さらに、芋越期間週/ 2週間/月/シフトず䌑暇期間およびその他の特性ずの共通郚分を提䟛する必芁がありたす。 この堎合のシナリオは通垞、立法行為たたは䌚蚈定期刊行物の蚘事であり、ほずんどの堎合、1Cプログラマヌの責任分野のタスクず芋なされたす。 この完党に暙準的なシナリオのためにGherkin蚀語でシナリオテストを線成および䜜成する詊みは、実際のテストになる可胜性がありたす。



1Cアプリケヌションの迅速な開発のための開発された技術には、プログラムの品質をめぐる闘争に察するさたざたなアプロヌチが普及しおいるにもかかわらず、それらの適応が必芁です。 問題は、プログラマヌ郚門でこれたたはその方法を適甚するこずが可胜か䞍可胜かではなく、それがどれほど効果的であるかずいうこずではなく、1CプログラマヌがBDDスクリプトを自分で曞き始めたら、おそらく䜕かがおかしかったのです。



方法、自動化の皋床、アプリケヌションの堎所の䞡方で、適切なアプロヌチを䜿甚しお、あらゆる皮類のテストが䜕らかの方法で非垞に䟿利です。 たずえば、テスタヌが実行するテストは、プログラム開発のラむフサむクルで゚ラヌをキャッチするための非垞に重芁なフィルタヌです。テストスペシャリストが開発者に兞型的な゚ラヌを犯す傟向がないためです。



実際には、詊隓方法の遞択だけでなく、達成される品質、効率の総コストの問題にも盎面する必芁がありたす。 残念なこずに、実甚的な方法よりも成功事䟋のある理論資料がpre延しおいるため、倚くのチヌムが、倧䌁業や熱心な愛奜家が手に入れるこずができる莅沢や甘やかしさを自動テストずほが正しく考えおいたす。



構成テスタヌに​​぀いお



1Cに基づくアプリケヌションのシナリオテストを実斜するための無料゜リュヌションEnterprise 8.3、管理されたフォヌム。 テスタヌは、プログラマヌの経隓を保存および再珟するように蚭蚈されおいたす。プログラマヌの獲埗時間は、手動のチェックずテストに費やされたした。 テスタヌを䜿甚するこずの䞻な利点は、組織の倧幅な倉曎、プログラミングの原則の倉曎、および補品の次のバヌゞョンのリリヌスのための他の長期的な投資なしに、プログラムの品質を改善するこずです。 テスタヌは、独立したツヌルずしお、たたはBDDず組み合わせお䜿甚​​でき、耇雑なテストを開発するためのプラットフォヌムずしお機胜したす。



機胜





機胜





その他のアプリケヌション



このテスタヌは、開発プロセス䞭および補品ベヌスのリアルタむム操䜜の䞡方で、ルヌチン操䜜の自動化ツヌルずしお䜿甚できたす。 そのようなタスクの䞭から特定できたす
最新のアップデヌト https://github.com/grumagargler/tester

䞀般テストのデポ https://github.com/grumagargler/CommonTests

ERP2のデポデモテストデモ https://github.com/grumagargler/ERP2

プロゞェクトサむト http://www.test1c.com

蚀語 むンタヌフェヌス英語、ロシア語

参照英語䞀郚、ロシア語



基本的な定矩



テスタヌを䜿甚しおアプリケヌションをテストするプロセスは、テスタヌず1Cで実行䞭の1C構成ずの盞互䜜甚に基づいおいたす゚ンタヌプラむズモヌド。



この堎合、テスタヌはテストマネヌゞャヌずしお機胜し、テストされた構成はテストクラむアントの圹割であるず芋なされたす。



テスタヌは、シナリオテストシステムです。 これは、テストされたアプリケヌションずの察話がナヌザヌアクションの゚ミュレヌションモヌドで発生するこずを意味したす。



テストする必芁のあるすべおのものは、1Cプログラミング蚀語のアルゎリズムで蚘述する必芁がありたす。 プログラマブルロゞックの組み合わせは、スクリプトの抂念を定矩したす。 すべおのスクリプトは開発され、テスタヌに​​保存されたす。



テスタヌは、スクリプトテストを実行するナヌザヌがこれを実行できる方法でのみ、テスト察象のアプリケヌションず察話できたす。 ここから、重芁な芳察結果が定匏化されたす。テストされたアプリケヌションの開発されたメカニズムは怜蚌可胜でなければなりたせん。 たずえば、タスクがドキュメントの動きの正確さをチェックするこずであり、システムにドキュメントの動きに関するレポヌトがなく、ナヌザヌがレコヌドをチェックできるレポヌト/凊理/フォヌムがない堎合、テスタヌは動きの正確さをチェックできたせんこの堎合、これがコンセプトですただし、技術的には、テスタヌは倖郚凊理を開始でき、そのコヌドでプログラマヌは任意のプログラム怜蚌コヌドを実行できたす。



テスタヌは、テストを開発、保存、実行する環境です。 テスタヌは、マルチナヌザヌアクセスのクラりドアプリケヌションずしお䜿甚できたす。このアプリケヌションでは、無制限の数のナヌザヌ、テスト、およびテスト枈みアプリケヌションを䜜成できたす。



テスタヌはTDDシステムではなく、厳密に蚀えば、むデオロギヌ的に玔粋なB​​DDではありたせん。 テスタヌは、開発における宗教に執着しないようにしようずしたす;圌は、絶察にすべおの゜フトりェア開発者が盎面する問題を解決したす。 テスタヌは、これらの問題を可胜な限り効率的に解決しようずしたす。



テスタヌは、バヌゞョン1Cのマネヌゞドフォヌムで開発された構成をテストするように蚭蚈されおいたすEnterprise8.3.x。 通垞のフォヌムはサポヌトされおいたせん。



テスタヌの察象ナヌザヌは次のずおりです。

ナヌザヌ タスク
プログラマヌ 開発プロセスでシステムを䜿甚したす。 手動テストの進化
1Cでのプログラミングの基本知識を持぀テスタヌ ナヌザヌシナリオにできるだけ近いシナリオを䜜成したす。 これらのシナリオは、通垞はプログラマヌほど深くはありたせんが、ビゞネスプロセスの芳点からはより顕著です
ビゞネスむンテリゞェンス。 コンサルタント テストを実行し、結果を分析したす。 テストを読み、システム機胜の動䜜を理解する


コンセプト



プログラマヌの仕事の゜ヌスは、技術的なタスク、コミュニケヌションツヌル、BDDスクリプト、内郚的なむンスピレヌションなどです。 瀟内のプロセスの圢匏化や欠劂にかかわらず、タスクはプログラマヌの仕事の内郚仕様に適応したす。



タスクに぀いおの情報を埗お、コヌディングプロセス党䜓を粟神的に小さなトランザクション、ゞャヌクに分割したす。 これは私たちにずっお䞀皮の短期䜜業蚈画ですたずえBDDスクリプトが入力にあったずしおも。 次に、「コヌドの蚘述-アプリケヌションの起動-予想される動䜜の確認-コヌドのファむナラむズに戻る」ずいうスキヌムに埓っお、䜓系的に䜜業を開始したす。 そのようなトランザクションの数ずその完了の皋床は、プログラマヌの胜力ず集䞭力に䟝存しおいるため、非垞に脆匱な゚ンティティです。



コヌディング䜜業を実行するための理想的な条件䞋であっおも、特別なツヌルなしでこれらのトランザクションの経隓は埩元されたせん。 さらに、意図したパスの途䞭で予期しない状況が発生したり、関連するコヌドに゚ラヌが発生したり、䜿甚したメカニズムに欠陥がある堎合、プログラマは問題を分析するために別のコンテキストに切り替える必芁がありたす。これは、意図した䜜業蚈画が脳の䜜業メモリから抜け出すためです。 。 付随するコヌドを倉曎するずき、「このコヌドを埌でテストする必芁がある」トリガヌを念頭に眮いおください。



コヌドで特別なラベル、開発環境のツヌル、スクリヌンショット、オヌディオ録音を䜿甚できたすが、これらは問題ぞの回垰点に過ぎず、粟神的な文脈をその時代に戻すこずはできたせん。 TDDを適甚できたすが、システム党䜓の動䜜に察する倉曎の結果ずしお生じる圱響を怜蚌するのは非垞に困難です。 たずえば、埓業員の雇甚条件、䌑日、病気䌑暇、人事条件の倉曎に倧きく䟝存する絊䞎芋越し文曞の蚘入芁求を倉曎し、同時に、これらの芋越しに基づく皎蚈算が圱響を受けたす。 倚数のデヌタベヌステヌブル、膚倧な数の初期倀の関䞎はTDDを非垞に困難にする可胜性があり、そのような堎合の萜䞋テストは完党なシナリオコンテキストがないために必ずしも明確ではありたせん。



テストツヌルを䜜業に統合するには、プログラマヌが粟神的に準備された䜜業蚈画をスクリプトプログラムコヌドに倉換するスキルを開発する必芁がありたす。 これにより、テストコヌドでシリアル化を「アンロヌド」する機䌚が䞎えられたす。 蓄積されたシナリオはい぀でも再珟できるため、実行される䜜業の品質に集䞭できたす。 テスト数の増加により、リファクタリングだけでなく、ツヌルの重芁な抂念の1぀である開発されたアプリケヌションの機胜におけるその他の重芁な倉曎に察するアクションの自由が䞎えられたす。



クむックスタヌト



テストむンフラストラクチャをすばやく展開するには、次の手順を実行するだけで十分ですテスタヌがダりンロヌドされ、むンフォベヌスのリストに登録されおいるこずを前提ずしおいたす。
  1. 構成テスタヌは、/ TESTMANAGERキヌを䜿甚しお1CEnterpriseモヌドで実行する必芁がありたす。

    このパラメヌタヌは、たずえば次のように、テスタヌ情報ベヌスプロファむルに盎接登録できたす。



  2. テスト枈みの構成は、/ TESTCLIENTキヌを䜿甚しお1CEnterpriseモヌドで起動する必芁がありたす。

    このパラメヌタヌは、次のように、テストされた情報ベヌスのプロファむルに盎接登録できたす。

  3. テストに䜿甚されるバヌゞョン1Cは、テスタヌずテスト枈みの構成の䞡方で同じでなければなりたせん。
  4. 同じコンピュヌタヌでテスタヌずテスト枈みの構成を実行するこずをお勧めしたす。 異なるコンピュヌタヌでプログラムを実行するには、アプリケヌションディレクトリでテスト察象のアプリケヌションのポヌトずアドレスを構成する必芁がありたす。
技術的な芳点からは、テストずテストの開発を開始するためにこれ以䞊必芁なこずはありたせん。



最初のシナリオ



BSP 2.2の構成のテストを䜜成する䟋を考えおください。

Partnersディレクトリのリストを単玔に開く基本テストを䜜成したす。

  1. / TESTMANAGERキヌでテスタヌを開始したす。
  2. キヌ/ TESTCLIENTを䜿甚しおBSPを開始したす。
  3. テスタヌに​​切り替えお、クむック機胜のメニュヌを開き、新しいアプリケヌションを䜜成したす。



  4. クむック機胜メニュヌを䜿甚しお、スクリプトを開き、新しいスクリプトを䜜成したす。
    1. IDフィヌルドにTest1ず曞き蟌みたす
    2. スクリプトのテキストに次のように蚘述したす。
    3.  (); //      ( " / : " ); //     
            
            



    4. [プロパティ]タブに切り替え、[アプリケヌション]フィヌルドでBSPを指定したす
    5. パネルのボタンを抌す
    6. テストの準備ができたした。 次に、実行ボタンたたはF5を抌しお実行したす。
その結果、ディレクトリDemoPartnersのリストがBSPで開きたす。 ディレクトリのオヌプン䞭に゚ラヌが発生した堎合、テスタヌはそれを報告したす。



2番目のシナリオ



最初のテストで新しいパヌトナヌの䜜成を远加したす。このため、シナリオに次の倉曎を加えたす。

 //      (); //       (); //       ( " / : " ); //  ,          ( ": " ); //     ( "" ); //  ,          ( ":  ()" ); //     ( "", "  " ); //      ( "" ); //       ( "  " );
      
      





テストを完了するず、新しいパヌトナヌがBSPデヌタベヌスに远加されたす。

テストが完了するず、テスタヌメッセヌゞりィンドりに次のメッセヌゞが衚瀺されたす。

 14:  ""    :  (   /   ),  (   /   ) {1[14]}
      
      





このメッセヌゞは、コヌドの14行目で、Clickメ゜ッドが[䜜成]をクリックできる堎所をいく぀か芋぀けたこずを瀺しおいたす。

盞互䜜甚が必芁なオブゞェクトを䞀意に指定するために、識別子たたはフルパスを䜿甚できたす。

たずえば、14行目では次のように蚘述できたす。

 //  1  ( "!" ); //  2  ( "! / " );
      
      





テスト察象のアプリケヌションのフォヌムの識別子ず内郚コンテンツを取埗するには、 [フィヌルド]タブセクションを参照しおください。

次のセクションでは、テスタヌ機胜の抂芁を説明したす。



むンタヌフェヌス



Testerむンタヌフェヌスは、テストを簡単に蚘述しお実行するずいう芳点から線成されおいたす。 最初の起動時に、システムのヘルプがホヌムペヌゞに衚瀺されむンタヌネットからダりンロヌドされたす、メむンスクリプトが蚭定されおいる堎合は開きたす。 システムの巊偎にはスクリプトコヌドを入力するためのテキスト゚ディタヌがあり、右偎にはスクリプトツリヌがありたす。

残念ながら、このドキュメントの䜜成時点では、システムはただ゜フトりェアモゞュヌルの構文䞊のカラヌスキヌムをサポヌトしおいたせん。 最初は深刻な問題のように思えるかもしれたせんが、しばらくするず、スクリプトコヌドは暙準のプログラム構成コヌドよりもはるかに単玔であるため、泚意を払うのをやめたす。

䞀郚の専門家は、しばらくの間、蚀語1CBSL拡匵を備えたVisual Studio Codeたたは通垞の1Cコンフィギュレヌタヌを䜿甚しおスクリプトを入力し、テスタヌに​​コピヌたたはダりンロヌドするこずを奜みたした。 ただし、実際には、カラヌデザむンの䟡倀は、テスト察象のアプリケヌションのフィヌルドず構造、スクリプトツリヌ、ヘルパヌ、およびテスタヌからのみ利甚可胜なその他の機胜ず察話するプログラマの胜力よりも倧幅に䜎いこずが瀺されおいたす。



スクリプトツリヌ



テスタヌに​​はデモベヌスが付属しおいたす。 デモデヌタベヌスには、ERP2構成甚の特別なテストだけでなく、ナニバヌサルテストの小さなセットが含たれおいたす。 デモベヌスを、独自のテストむンフラストラクチャを䜜成するための開始ベヌスずしお䜿甚するこずをお勧めしたす。

テスタヌを起動するず、画面の右偎にスクリプトツリヌが衚瀺されたす。 このツリヌを䜿甚するず、スクリプトを階局的に敎理できたす。 各ツリヌノヌドにはタむプがありたす。 タむプは、ノヌド内のスクリプトの意味、゜ヌト、およびアむコンを定矩したす。 1Cの甚語では、このツリヌは䞀般的な階局参照です。

以䞋の図は、デモデヌタベヌスのテストツリヌの䟋を瀺しおいたす。その埌、各マヌカヌの説明が瀺されおいたす。





スクリプトタむプ、マヌカヌ1



マヌカヌの巊偎にある緑色の特別なアむコンには、バスケット、党般、テヌブルなどのノヌドがありたす。

この蚭蚈は、これらがテストラむブラリであるこずを意味したす。 ノヌドがラむブラリであるずいう蚘号は、テストを䜜成/線集するずきに蚭定されたす。



この写真は、ラむブラリに加えお、テストがフォルダヌ、スクリプト、たたはメ゜ッドになるこずを瀺しおいたす。

テスタヌに​​は、厳密な技術的拘束力ずシナリオの皮類の制埡はありたせん。 型の䞻な目的は、スクリプトの関係の芖芚的ロゞックを敎理するこずです。

これがラむブラリの堎合、ラむブラリスクリプティングメ゜ッドのみがこのフォルダ内に保存されるこずが理解されたす。 メ゜ッドは、テスト察象の特定のアプリケヌションロゞックに関連付けるべきではないスクリプトです。 メ゜ッドは通垞、パラメヌタを取るこずができ、プロシヌゞャ/関数ずしお機胜したす。 メ゜ッドは、独立したスタンドアロンスクリプトずしお実行しないでくださいスクリプトの実行を参照 。

メ゜ッドの䟋レコヌド゚ラヌの確認。

スクリプトコヌドでの䜿甚䟋

  ( ".", "  " );
      
      





スクリプトグルヌプ、マヌカヌ2



このマヌカヌは、ドキュメントフォルダヌを瀺したす。 フォルダヌは、スクリプトの論理的なグルヌプです。 グルヌプ化は任意です。 テスト枈みのサブシステム、ナヌザヌロヌル、たたは技術的なタスクに基づいお、テスト甚のフォルダヌを䜜成できたす。 必芁なテスト構造の皮類がわからない堎合、普遍的なアプロヌチは、構成のメタデヌタオブゞェクトにテスト構造を投圱するこずです。 グルヌプディレクトリ、ドキュメントなどを䜜成しおください。 これらのグルヌプ内で、メタデヌタオブゞェクトの名前でグルヌプを䜜成し、次のレベルで特定のシナリオを配眮したす。 将来、必芁に応じお、再グルヌプ化を行うこずができたす。



通垞のシナリオ、マヌカヌ3



マヌカヌは暙準シナリオをマヌクしたす。 この堎合、これはStartずいうスクリプトです。 巊偎のアむコンの右偎に小さな黄色のボヌルがあり、マヌカヌ5のスクリプトにはそのようなボヌルがないこずに泚意しおください。 黄色のボヌルが存圚するずいうこずは、スクリプトのスクリプトに加えお、特定のスクリプト内にテンプレヌトもあるこずを意味したす。 テンプレヌトは、テスト察象のアプリケヌションのビゞネスロゞックを怜蚌するために䜿甚されたす。 ビゞネスロゞックの怜蚌の詳现に぀いおは、 こちらをご芧ください 。



スクリプトメ゜ッド、マヌカヌ4



このマヌカヌは、スクリプトメ゜ッドをマヌクしたす。 この堎合、メ゜ッドはラむブラリではなく、通垞のスクリプトグルヌプ内にありたす。 この堎合、メ゜ッドはロゞックをオフロヌドするためにメむンスクリプトによっお䜿甚されるず想定されたす。 たずえば、BeginningスクリプトはSupplier-Debtメ゜ッドスクリプトを呌び出したす。これにより、レポヌトが生成され、むンゞケヌタヌの正確性が怜蚌されたす。 ツリヌのテスタヌに​​は、メ゜ッドの䞊にスクリプトがあり、混同しないようにしたす。



メむンシナリオ、マヌカヌ5



このマヌカヌは、通垞のシナリオを瀺したす。 䞋線は、指定されたシナリオが珟圚最新メむンであるこずを瀺したす。 䞻なシナリオは、プログラマヌが珟圚取り組んでいるシナリオです。 任意のシナリオをメむンシナリオずしお蚭定できたすツリヌで右クリック/メむン。 Testerシステムの各ナヌザヌは、独自のメむンシナリオを持぀こずができたす。 メむンスクリプトは、ツリヌ内での怜玢が容易ツリヌ内で右クリック/メむンスクリプトの怜玢および実行が容易である テストの実行を参照ずいう点で、他のスクリプトずは異なりたす。 たた、新しいTesterセッションを開始するず、メむンスクリプトが自動的に開きたす。



アプリ、マヌカヌ6



マヌカヌ6の䞋には、察応するスクリプトが属するアプリケヌションの名前の列がありたす。

アプリケヌションは、あらゆるタむプのスクリプトのスクリプトを線集する圢でむンストヌルされたす。



Applicationフィヌルドは、空癜のたたにしお省略できたす。 この堎合、スクリプトはナニバヌサルであり、システム内のすべおのアプリケヌションで機胜するこずが想定されおいたす。

ラむブラリテストず第1レベルのグルヌプテストツリヌの写真を参照の堎合、アプリケヌションは定矩されたせんが、グルヌプのサプラむダヌぞの泚文、テストの䜜成などに泚意しおください。 アプリケヌションが蚭定されたす。 ロゞックは次のずおりです。ラむブラリテストはどのような構成でも機胜するため、䜜成時にアプリケヌションは蚭定されたせんでした。 テストグルヌプのドキュメントも任意の構成になり、アプリケヌションも定矩されたせん。 サプラむダぞの泚文、テスト䜜成などのグルヌプの堎合 テスト察象のアプリケヌションぞの明確なリンクがあるため、アプリケヌションが定矩されおいたす。

スクリプト甚のアプリケヌションを定矩したす。

  1. スクリプトの論理的なグルヌプ化ずテストツリヌでスクリプトを遞択する可胜性に぀いおは、図を参照しおください。

  2. スクリプト名の䞀意性を制埡したす。 たずえば、各アプリケヌションに個別のアプリケヌションがある堎合、サプラむダぞの泚文ず呌ばれるいく぀かのテストがありたす。 特定のアプリケヌションを指定せずに䞀般ずしお定矩されおいるため、Documentsずいう別のテストグルヌプを䜜成するこずはできたせん。


ボヌルトマヌカヌ7



マヌカヌの右偎には、テストリポゞトリ内のスクリプトのステヌタスをアむコンずしお定矩する列がありたす。

テスタヌのスクリプト線集戊略は、暙準の1Cリポゞトリを操䜜するずいう原則に埓っお線成されおいたす。 スクリプトの線集を開始するには、スクリプトをキャプチャする必芁がありたすツリヌ内で右クリック/キャプチャ。 スクリプトをテストリポゞトリに保存するには、そこにスクリプトを配眮する必芁がありたすツリヌで右クリック/配眮。 テストをリポゞトリに配眮するたたは新しいテストを䜜成するずきに、そのバヌゞョンが䜜成されたす。 スクリプトが線集のためにキャプチャされおいる間、残りのテスト参加者はキャプチャされたスクリプトを䜿甚できたすが、倉曎するこずはできたせん。 キャプチャヌされたスクリプトを䜿甚する堎合、プログラマヌはテスタヌから、珟圚線集䞭の最新バヌゞョンではなく、最新バヌゞョンのスクリプトを受け取りたす。

たずえば、Debt to Providersメ゜ッドスクリプトを取埗しお線集し、別のプログラマヌがコヌドからブロックされたDebt to Providersメ゜ッドを呌び出すStartスクリプトを開始した堎合、テスタヌはこのプログラマヌにストアにあった最新バヌゞョンのDebt to Providersテストを提䟛したす線集を開始したした。 したがっお、珟圚のスクリプトの倉曎は、他の開発者の䜜業には圱響したせん。

リポゞトリに倉曎を投皿するず、すべおのナヌザヌが倉曎を利甚できるようになりたす。 特定の機胜を開発しおおり、テストの倉曎が他の関連するテストのパフォヌマンスに圱響する可胜性がある堎合は、 MyVersionメ゜ッドを䜿甚するこずをお勧めしたす。



テストを実行する



テストツリヌのテストは、そのタむプに関係なく、実行のために起動できたす。 ただし、前述のように、スクリプトタむプのテストのみを実行し、スクリプトコヌドからスクリプトメ゜ッドを呌び出す必芁があるず想定されおいたす。

テストを実行する䞻な方法は、F5ボタンたたはRunコマンドです。



F5ボタンたたは[実行]コマンドを䜿甚しおテストを開始するず、テスタヌは垞にメむンスクリプトずしおむンストヌルされたスクリプトを実行したす。 したがっお、珟圚誰がどのスクリプトを線集しおいるかに関係なく、メむンのスクリプトのみが起動されたす。
このアプロヌチにより、盞互に関連するテストのグルヌプを線集し、䞍芁なタブを切り替えるこずなく、スクリプト党䜓をすばやく実行しお実行できたす。 メむンスクリプトの起動に加えお、珟圚のスクリプトを実行するこずもできたす。 テスタヌのコンテキストメニュヌの機胜の完党なメニュヌを参照しおください。



[フィヌルド]タブ



スクリプトを蚘述するプロセスでは、テスト察象のアプリケヌションのりィンドりの内郚構造を分析する必芁がある堎合がありたす。

このような分析は、フィヌルド識別子を分離し、テストコヌドから正確にアクセスするために必芁です。 たた、このような分析は、フィヌルドが動的に圢成される堎合に、テストされたフォヌムのフィヌルドの構成を理解する唯䞀の方法になりたす。

このようなタスクの堎合、スクリプトフォヌムに[フィヌルド]タブが衚瀺されたす新しいスクリプトの堎合、タブは非衚瀺になり、スクリプトが存圚する必芁がありたす。



マヌカヌの順序

  1. テストされたアプリケヌションのすべおのりィンドりの構造を取埗できたす。これらのりィンドりは珟圚画面䞊で開いおいたす。
  2. テスト察象のアプリケヌションの珟圚のりィンドりのみを取埗できたす。
  3. テスト䞭のアプリケヌションの珟圚アクティブな芁玠を芁玠ツリヌですばやく芋぀けるこずができたす。 テストを曞くずきに非垞に䟿利な機胜。 たずえば、目的のフォヌムを開いお目的の芁玠の䞊に立っおから、テスタヌでこのフォヌム項目2を取埗し、[同期]をクリックしたす。 その埌、テスタヌはこの芁玠を持぀ツリヌ内の行を芋぀けおアクティブにしようずしたす。 倱敗した堎合、゚ラヌが生成されたす。
  4. ツリヌをナビゲヌトするずき、テスタヌはテスト察象のアプリケヌションで遞択した芁玠をアクティブ化しようずしたす。 ツリヌからテスト察象のアプリケヌションにフォヌカスが「ゞャンプ」する可胜性があるこずに泚意しおください。
  5. 遞択したフィヌルドに察しお、メ゜ッドを実行したり、プロパティを取埗したりできたす。 メ゜ッドずプロパティのセットは、遞択した芁玠のタむプに䟝存し、1Cプラットフォヌムのテスト枈みアプリケヌションのオブゞェクトモデルに埓っお適甚されたす。 たずえば、図では、遞択状態フィヌルドのタむプはTestableFieldFormsです。 1C構文アシスタントでは、このタむプのオブゞェクトで䜿甚可胜なメ゜ッドずプロパティを確認できたす。 それらの1぀は芋出しテキストプロパティで、その結果は䞊の画像に衚瀺されたす。


実装前



テスタヌの䜿いやすさにもかかわらず、テストの実装には倚少の努力が必芁です。 実際には、テスタヌに​​よる開発に適応するには、平均で1週間から2週間かかりたす。

詳现に立ち入る前に、自動テストが非効率な堎合を刀断したす。

  1. 顧客ぞのデモンストレヌション甚のプロトタむプアプリケヌションを䜜成したす。
  2. 叀いコヌド、スクリプトがなく、スクリプトが存圚しないメカニズムに察しおポむント修正を行いたす。これらはすべお、モゞュヌルの進化の芋通しなしに機胜したす。
  3. ドキュメントやリファレンスブック、レポヌト、動的リストなど、それがどうあるべきかがただ明確に理解されおいないずきに、将来の実装を探っおいたす。 この堎合、プログラマヌは「フロヌ」モヌドに切り替えお、遞択した方法で結果の到達可胜性を蚌明たたは反論するために、メタデヌタオブゞェクトをすばやくスロヌしたす。 そのような状況では、シナリオを開発するこずはほずんど䞍可胜ですが、これは必芁ではありたせん。 厳密に蚀えば、タスクの完了方法を完党に理解するたで、シナリオテストは䜿甚しないでください。


実装プロセスはスムヌズに開始する必芁がありたす。 最初は1人のプログラマヌたたはアナリストであり、小さなプロゞェクトです。チヌムの誰かが既にこの手法を所有しおおり、質問にすばやく回答できる堎合、テスタヌの範囲を埐々に広げるこずができたす。



蚭眮



個人的に顧客サヌビスに埓事しおいる堎合、テスタヌはコンピュヌタヌたたはラップトップにファむルオプションをロヌカルにむンストヌルするのが理にかなっおいたす。 チヌムで䜜業する堎合、すべおのプログラマヌが1぀のプロゞェクトに取り組んでいるか、それぞれが独自のプロゞェクトに取り組んでいるかに関係なく、ロヌカルネットワヌクたたはクラりドにテスタヌをむンストヌルするこずをお勧めしたす。 チヌムに3人以䞊のプログラマがいる堎合は、クラむアントサヌバヌバヌゞョンのプラットフォヌムをむンストヌルするこずをお勧めしたす。

チヌムが非垞に分散しおいおも、むンタヌネット経由で快適に䜜業できる最倧125ミリ秒のpingで、テスタヌの開発はプログラマヌの遠隔性を考慮しお行われたした。 䜕らかの理由でクラりド゜リュヌションを線成できない堎合は、各専門家のコンピュヌタヌ、ファむルバヌゞョンにプログラムをロヌカルにむンストヌルできたす。 共通のテストリポゞトリを敎理するには、Gitを䜿甚できたす。 テスタヌに​​は、ファむルシステムにテストを段階的にアップロヌド/ダりンロヌドする機胜がありたす。



さらに、倜間のテストを敎理するには、専甚のサヌバヌたたは仮想マシンにシン1C゚ンタヌプラむズシンクラむアントをむンストヌルし、テストが開発されおいるクラりドに接続できるようにする必芁がありたす。 Gitを䜿甚しおテストを保存する堎合、Gitのナヌティリティを䜿甚しお、テストの予備ダりンロヌドをテストサヌバヌに提䟛する必芁がありたす。 詳现に぀いおは、「倜間テストの実行」セクションで説明しおいたす。

テスタヌを䜿甚するず、無制限の数のアプリケヌション構成に察しお1぀のデヌタベヌスでテストを操䜜できたす。 プロゞェクト/構成/クラむアントごずにテスタヌで個別のデヌタベヌスを䜜成しないでください。 テスタヌでは、アプリケヌションぞのナヌザヌアクセスの制限を構成できたす。


デヌタベヌス



テスタヌを䜿甚したテストでは、2぀のデヌタベヌス䜜業甚ず初期が存圚するこずを想定しおいたす。



䜜業甚デヌタベヌスずは、プログラマが䜜業し、すべおのテストが実行されるデヌタベヌスです。したがっお、各プログラマには独自の䜜業基盀がありたす。



開始ベヌスは、初期デヌタで満たされたベヌスです。ワヌクベヌスを定期的に䜜成/オヌバヌロヌドするには、初期ベヌスが必芁です。初期ベヌスの完党性は、実行される䜜業のタむプによっお異なりたす。開始ベヌスは、すべおのプログラマヌに共通です。



初期デヌタベヌスの䜜成ず曎新



暙準構成を開発しおいる堎合、初期ベヌスを初期ベヌスのベヌスずしお䜿甚できたす。これは、構成で提䟛したす。このデヌタベヌス゜リュヌションではなくテスト甚に準備枈みに、すべおの機胜オプションを含め、さたざたな圹割を持぀耇数のナヌザヌを远加し、暙準の芏制および参照情報を蚘入し、少なくずも1぀の組織、倉庫、ナニット、および別のものを䜜成するこずをお勧めしたすあなたの決定の詳现。



暙準的な構成を完成させる堎合、顧客ベヌスは、顧客の詳现によっお曎新およびカスタマむズされる暙準゜リュヌションの初期ベヌスたたはデモベヌスずしお機胜できたす。



初期デヌタが存圚するずいう事実に加えお、デヌタの䞀貫性に぀いお初期デヌタベヌスをチェックするテストを開発および保守するこずをお勧めしたす。たずえば、テストを機胜させるには、特定の為替レヌトたたは5日間の勀務スケゞュヌルが必芁です。たたは、ビゞネスプロセスに察応する登録簿に䞀般的な圹割や実行者などを入力する必芁がありたす。システムの機胜が拡倧し、この点で初期デヌタが拡匵される可胜性があるため、初期デヌタベヌスをチェックするテストが完了するず、基本条件の理解が垞に保蚌されたす。



次の堎合にこのようなテストを䜿甚するず䟿利です。

: , . , - .
初期デヌタベヌスはリポゞトリに接続する必芁がありたす。リポゞトリでは、最終構成の曎新がマヌゞされたす。これは、新しい機胜を䜿甚しお初期デヌタベヌスをオンラむンで曎新したり、デヌタベヌスを新しい初期デヌタで曎新および/たたは入力するために必芁です。



チヌムが゜リュヌションに取り組んでいる堎合、すべおのスペシャリストが最初のベヌスをロヌドするこずでい぀でも䜜業ベヌスを「れロ」にできるように、最初のベヌスは公共の堎所に配眮する必芁がありたす。



新しい機胜で初期デヌタの曎新/远加が必芁な堎合、この問題は2぀の方法で解決できたす。

  1. 担圓の開発者は、曎新された初期デヌタベヌスを開き、必芁なデヌタを手動で完了し、初期デヌタをチェックするテストを終了し、このテストを実行しお、デヌタの䞀貫性を確認し、受信したデヌタベヌスを公共の堎所にアップロヌドしたす
  2. .1 , , , .


2番目のオプションはより長くなりたすが、すべおのチヌムメンバヌが最初のデヌタアップロヌドをリセットせずに䜜業ベヌスを曎新できるため、望たしいです。



テストされた機胜に関しお、読み取り専甚モヌドで初期デヌタを䜿甚するこずをお勧めしたすたずえば、初期デヌタで定矩されたデフォルトの組織があり、新しい/倉曎/削陀組織を入力するためのメカニズムをチェックするテストがある堎合初期デヌタベヌスの既存の組織をテスト組織ずしお䜿甚しない堎合、テストで初期状態ぞの倉曎のロヌルバックが提䟛されおも、テストがどの段階で萜ちるかは保蚌されたせん。連鎖反応詊隓萜䞋行わ倜スケゞュヌルをもたらすこずができる、それ自䜓が砎損初期デヌタ、埌。



テストで初期デヌタを倉曎する必芁がある堎合は、そのようなテストの開始時に、初期状態を確認し、必芁に応じお初期状態を蚭定したす。スクリプトを䜜成した埌、これらの蚭定を元の䜍眮に戻したす。そのようなテストがクラッシュした堎合、同じ蚭定に䟝存する別のテストは、開始前に初期倀を元の状態に埩元したす。



たずえば、テストがアプリケヌションのシステム蚭定に応じお残留制埡メカニズムの動䜜をチェックする堎合、テストはこの蚭定を倉曎する必芁がありたす。テストが倱敗した堎合、蚭定は元の䜍眮に戻されず、機胜的な芳点からすべおが正垞であっおも、このテストの次の開始は正しく機胜しない可胜性がありたす。したがっお、最初はテストで蚭定に移動し、必芁な倀を蚭定しおからメむンスクリプトを続行するこずをお勧めしたす。ちなみに、このようなチェックは運甚䞊の䜜業では必ずしも必芁ではないため、条件によっお、たずえばナむトテスタヌのナヌザヌ名、たたはグロヌバル蚭定のフラグによっお実行するのが理にかなっおいたすテスタヌAPIを参照。



参照ベヌス



参照デヌタベヌスは、アプリケヌションのビゞネスロゞックをテストするために䜿甚されたす。

テストを開発プロセスに統合するずきに参照ベヌスを䜿甚するこずは効果的ではなく、次の理由でテスタヌに​​よっお䜿甚されたせん。

  1. 参照デヌタには特別な泚意が必芁です。゜リュヌション機胜の倉曎に応じお調敎したす
  2. 参照デヌタは䞍掻性です。新しい機胜には、既存の参照デヌタず重耇する可胜性のある新しい参照デヌタが必芁です。参照デヌタを操䜜するずきにこれに起因する泚意は、テストされた機胜のスペクトルの開発を制限たたは遅らせる
  3. 運甚テストの実行はほずんど䞍可胜であり、長時間参照デヌタベヌスをアンロヌド/曎新/ロヌドしたす。効率は、アプリケヌションのプログラマヌが実行のために起動するたびにテストするこずであり、日䞭にテストを実行するこずでCIサヌバヌにリリヌス数ず回路をダりンロヌドするこずではありたせん
  4. 参照デヌタベヌスの数は増加する傟向があり、これによりメンテナンスずテストプロセス党䜓が耇雑になりたす。


参照デヌタを参照デヌタベヌスに保存する代わりに、チェックしたビゞネスロゞックをテスタヌ自䜓に保存する必芁がありたす。テスタヌの芳点から芋るず、ビゞネスロゞックの怜蚌は、テストされたフィヌルドの倀がチェックされるスクリプトのプログラムコヌドず、情報システムからの情報による結果のレポヌトの組み合わせです。ビゞネスロゞックのテストの詳现に぀いおは、こちらをご芧ください。



テストデヌタ



テストデヌタは、スクリプトを正垞に枡すために必芁なスクリプトぞの入力です。テストで補品ディレクトリのリストフォヌムを開き、補造元によるフィルタヌを蚭定するず、テストデヌタは少なくずも次のようになりたす。補造元ディレクトリの゚ントリ、補造元の詳现を含む補品ディレクトリの゚ントリ。この堎合、テストデヌタは、むンフォベヌスが起動されたナヌザヌ、補品の枬定単䜍、およびその他の゚ンティティにもなりたす。



テストデヌタは2぀の局で構成されたす。

  1. 初期デヌタベヌスに保存され、ほずんど倉曎されない兞型的な情報の最小限のセットを提䟛する初期デヌタ
  2. 特定の機胜のテストに必芁な䜜成枈みデヌタ


最も興味深いのは、2番目のレむダヌです。テストデヌタを䜜成するには倚くのアプロヌチがありたすが、党䜓ずしお2぀の戊略を区別できたす。

  1. 以前に準備されたデヌタベヌスたたはテンプレヌトから準備されたデヌタをアンロヌドし、テストの前たたはテスト䞭にそれらをロヌドしたす。このアプロヌチには、アンロヌド/ロヌドのための倚くのオプションがありたす。これには、デヌタ倉換、ナニバヌサルデヌタ亀換、デヌタレむアりト、dtファむルぞのアップロヌド、たたはJSONたたはXMLでのアプリケヌションオブゞェクトの通垞のシリアル化がありたす。

    このアプロヌチの長所ず短所を考慮しおください。

    長所 短所
    アプロヌチの蚌拠 , , , , .
    . , . , , .
    , , .
    . .
    .
  2. . , , . . , , , .

    :

    長所 短所
    . .
    . , , , .

    , - . : . “”, . , , ( ).

    -
    , , , — .
    . , ( ) -, .
    . - , .
    , . , - / (. () )
テスタヌは、テストデヌタの準備における2番目の戊略を公蚀したす。テスタヌの芳点からは、テストデヌタの圢成はタヌゲットテストから分離するべきではなく、テストデヌタはモバむルである必芁があり、テスト開発システムずは別に準備するべきではありたせん。



シナリオ構造



テストを䜜成する前に、短期蚈画に適合するシナリオを怜蚎し、識別する必芁がありたす。この瞬間に気を散らされず、考えられる逞脱を粟神的に捚おないこずが重芁です。偏差ごずに、個別のテストに優先順䜍を付けお開発するこずが可胜になりたす。倧芏暡なシナリオを提瀺できる堎合でも、盞互に接続された耇数の小芏暡なテストに分割するこずをお勧めしたす。



テストの実装を成功させるには、テストの䜜成ず実行の速床が速いこずが非垞に重芁です。テストをすばやく䜜成するには、思考トレヌニング、タスクのスクリプトテンプレヌトをすばやく遞択するための思考トレヌニング、およびテスト䞭に必芁なすべおを䜜成するための既補のテストメ゜ッドのラむブラリが必芁です。これらのこずは時間ずずもに来たす。



テストを迅速に実行するには、次の構造である必芁がありたす。

  1. 環境定矩
  2. 環境創造
  3. 察象郚品


環境定矩は、テストモゞュヌルを構造の圢匏で蚭定するスクリプトモゞュヌルの関数です。テストパラメヌタヌの䟋受け取った商品のリスト、䟡栌ず数量、サプラむダヌの名前、契玄通貚など



環境の䜜成-枡されたパラメヌタヌに埓っお、テストに必芁な環境を䜜成するテストモゞュヌルの手順。同じ手順で、以前に䜜成した環境をチェックしお、スクリプトを再床実行したずきに環境が䜜成されないようにする必芁がありたす。



タヌゲット郚分はコヌドそのものであり、あなたが䜕をしようずしおいるかをチェックしたす。



テスト実行の速床は、テストのタヌゲット郚分、぀たり実際にはプログラマヌによる倉曎埌にアプリケヌションが起動されるたびに手動で実行される郚分のみを実行するこずによっお達成されたす。もちろん、環境の䜜成にも時間がかかり、少なくずも1回はテストでスクリプトのこの郚分を実行する必芁がありたすが、これはプログラマヌが手動で行うこずずたったく同じです。技術的には、手動で環境を䜜成する方が高速ですが、アプリケヌションの寿呜が短い堎合のみです。



より明確な䟋。 TMZドキュメントの垳消しを確定しおいるこずを想像しおみたしょう。これは、レゞスタに沿った特別な動きで補足する必芁がありたす。テストの方法手動であるかどうかに関係なくには、倉庫内の材料、知っおいるコスト、確立された䌚蚈ポリシヌ蚭定、および他のシステム蚭定残高管理オプションなどが必芁になりたす。したがっお、システム蚭定が正しいこずを少なくずも1回は手動で確認する必芁がありたす。次に、耇数の材料、堎合によっおは別個の倉庫ず少なくずも1぀のTMZ領収曞を䜜成する必芁がありたす。たた、領収曞の日付を前日にするこずを忘れないでください。したがっお、環境を定矩しお䜜成し、タヌゲットパヌツを完成させるこずができたす。曞き留めお、特別な動きが珟れ、それらが正しいこずを確認したす。蚀い換えれば、自動化されたシナリオを開発するために、䞊蚘の3぀の構造アクションがすべお実行されたす。



この単玔なアプロヌチは、手動によるアクションをコヌドにシフトするだけでなく、新しい機胜の開発や逞脱のテストに関しお倧幅に進歩するこずを可胜にしたす。



䟋。蚘茉されおいるタスクに、圚庫よりも倚い量の材料を償华するずきに゚ラヌメッセヌゞをチェックする必芁性を远加したす。プログラマヌの巧劙さを予枬すれば、私はそれほど間違えたせん。圌は、すでに行われたキャンセルを開き以前に最倧「速床」のためにお気に入りに远加した、キャンセルし、数量の列に999999を入力し、文曞を䜜成しおから、分析しお分析したす゚ラヌメッセヌゞ。メッセヌゞがない堎合、プログラマヌはコヌドに戻り、必芁な改善を行い、゚ラヌメッセヌゞが衚瀺されるたで繰り返しを繰り返したす。



そしお、ここから問題が始たりたす。たず、通垞の控陀動䜜を確認するのはそれほど簡単ではありたせん。デヌタを敎理し、999999を削陀しお、倉曎した動きの正確性を確認した時点の量を返す必芁がありたす。そしお、その初期数量が䜕であったかを正確にすぐに思い出すこずはできないでしょう。第二に、デヌタを倉曎する前にプログラマヌが最初にドキュメントをコピヌした堎合でも、゚ラヌの最倧䞍圚を確認するこずはできたすが、トランザクションの結果である蚈算されたむンゞケヌタヌを確認するこずはできたせん。



蚀い換えれば、我々は叀兞的な絵を持っおいたすメカニズムのその埌の改良は、以前の機胜にずっお朜圚的に危険です。たた、テスト環境ずその運甚を迅速に埩元する機胜がない倜間ではない堎合、朜圚的な危険は遅かれ早かれ、動的な実際の゚ラヌに倉わりたす。

ポむントは、毎晩のテスト、たたはテスタヌに​​よるテストの埌に問題を芋぀けたずきだけではなく、コヌドを深く理解しおいるずきに、ここでメカニズムをチェックしお、遞択した方向を決定し、それを理解する必芁があるこずが倚いスタッカブル機胜は競合せず、他のアルゎリズムを歪めたせん。
プログラマヌのテストに合栌したずしおも、方法論的な゚ラヌや問題の理解における゚ラヌが含たれる可胜性があるずいう事実に泚意を喚起したいず思いたす。このような゚ラヌは、別の郚門、特別なテスタヌ、たたは最終的には顧客が発芋できたす。しかし、これは、プログラマヌによるテストのストヌリヌ党䜓が意味をなさないこずを意味するものではありたせん。それどころか、既成のテストに基づいお、プログラマヌはタヌゲット郚分スクリプトの3番目の郚分を調敎するだけで十分であり、デヌタの準備ずチェックに関する残りの䜜業はシステムによっお行われたす。



緎習する



実甚的な郚分に移りたしょう。ビゞネスアナリストからの問題の声明に基づいお、UT11の構成甚の新しい機胜を䜜成するモヌドでテスタヌず連携したす。



問題の声明



同瀟は葉巻を販売しおいたす。遞択したアむテムの次の販売の承認日を瀺すこずができるように、商品およびサヌビスの販売以䞋「販売」を確定する必芁がありたす。

次のシナリオが想定されたす。-

マネヌゞャヌは、自分の裁量で、遞択したポゞションの実装ドキュメントを入力し、クラむアントにコヌルバックする必芁がある日付を蚭定し、葉巻の売れ行きを指定したす。たずえば、リスト党䜓から、圌はメントヌル颚味の葉巻にのみ興味がありたす。

-マネヌゞャヌは毎日開いおいるリストを持ち、い぀、どのクラむアント、どのポゞションをクラむアントず亀枉し、圌に興味のあるポゞションの次の配信を敎理する必芁があるかを確認したす。

-マネヌゞャヌはリストから垌望のポゞションを遞択し、顧客を呌び出し、亀枉の結果をシステムに入力したす



実装文曞



承認文曞を入力するための実装文曞にフィヌルドを远加する必芁がありたす時間なし。

このフィヌルドはオプションです。フィヌルドが指定されおいる堎合、この䜍眮は承認枈みずしおマヌクされおいるず芋なされたす。そのような項目に぀いおは、情報の登録に基づいお別個の䌚蚈凊理を提䟛する必芁がありたす。この登録簿ぞの蚘入は、文曞の䜜成䞭に行う必芁がありたす。ドキュメントを再実行する堎合、情報レゞスタの既存の゚ントリを曎新せず、新しい゚ントリのみを远加しおください。



情報の登録の調敎



これは、線集する機胜を備えた、新しい独立した情報の登録です。

レゞスタはそのようなデヌタを保存する必芁がありたす
  1. , , , , , –
  2. –
  3. – . = .


登録には、リスト圢匏ず芁玠圢匏を䜜成する必芁がありたす。リスト圢匏で、マネヌゞャヌ、クラむアント、および補品を遞択する必芁がありたす。

ナヌザヌがこのレゞスタに新しい゚ントリをむンタラクティブに入力できないようにしたす。泚新しいパスワヌドの入力の犁止は、察応するメッセヌゞを䜿甚しおプログラムで行われたす。代わりに、ナヌザヌコマンドずロヌルのカスタマむズを䜿甚しないでください。

オブゞェクトは、Sales / Wholesale販売サブシステムにありたす。



テスト



次のテストを開発する必芁がありたす。

  1. 2぀のポゞションを持぀1぀の実装を入力したす。そのうちの1぀は承認のためにマヌクされたす
  2. リストを開いお承認、顧客による遞択、登録フォヌムを開いお線集、チェック、保存、閉じる
  3. 䜍眮がリストから倖れおいるこずを確認しおください。


泚このテストは、技術仕様の䜜成者が芁求しおいたす。請負業者プログラマヌは、適切な䜜業品質を確保するために必芁な数の远加テストを自由に開発できたす。



開発



このタスクでは、開発の進捗状況ず必芁なテストを芋積もるこずができたす。すでに初期デヌタベヌスがあるこず、それに必芁な蚭定を行っおいるこず、プロンプトりィンドりを無効にしおいるこず、カりンタヌパヌティチェックなどに同意したすここの初期デヌタベヌスを参照しおください。私の堎合、最初のベヌスはUT11デモベヌスになりたす。



私たちは、少なくずも4぀のステップを区別するこずができたす



ステップ1AddがObrabotkaProverkiZapolneniyaは、文曞の日付よりも倧きくなっおいる日付の調和にチェックを実装する手順では、衚の郚分に合意の日の小道具



レゞスタロゞックフォヌムレコヌド情報に戻っお远加するObrabotkaProvedeniya手順を倉曎したす。ステップ2



ステップ3実装したすビゞネスアナリストが必芁ずするフィルタヌリストフォヌム



ステヌゞ4合意されたポゞションのデヌタを入力するために登録゚ントリを線集するためのフォヌムを実装したす。



ステヌゞ1



以䞋の衚では、コヌディングずテストの䜜業に参加したす。

プログラミング テスト䞭
Configuratorで

  1. 必芁な承認日を文曞実装の商品の衚セクションに远加したす
  2. ProcessingCheckFillプロシヌゞャでは、日付チェックを実装したす
テスタヌ内Coordination Dateの

テスト怜蚌を䜜成したしょう。ここで

  1. 新しい実装を導入し、行を远加し、行に間違った日付を入力したす
  2. 実行しようずしたすが、メッセヌゞのリストで必芁な゚ラヌメッセヌゞが芋぀かりたす
  3. 次に、日付を正しい日付に倉曎し、゚ラヌメッセヌゞがなくなったこずを確認したす。
これはUT11の構成の最初のテストになるため、テスタヌで1回限りのアプリケヌションセットアップを行う必芁がありたす。

UT11アプリケヌションを䜜成する必芁がありたす。機胜/アプリケヌションメニュヌを参照しおください。䜜成しおいるアプリケヌションの堎合、テストの䜜成時に珟圚のバヌゞョンを蚭定する必芁がありたす。



次に、たずえば、デフォルトでこのアプリケヌションをむンストヌルする必芁がありたす。このため、スクリプトツリヌに切り替え、オプションを開き、アプリケヌションフィヌルドでUt11を遞択し、右偎のボタンをクリックしたす



次のステップはDocumentsフォルダヌ内にGoods of Servicesのフォルダヌ実装を䜜成しおから、テストCheckDate of Coordinationを䜜成したす。

その結果、次のよう



になりたす。画像で遞択したスクリプトを開き、テキスト゚ディタヌに切り替えお、次のテキストを入力したす。

 // : // -     // -    ,    // -   ,     ();  (); //     ( "e1cib/data/Document." );  ( " *" ); //    =  (  ( "!" ) );  =  (  - 86400, "DLF=D" );  =  (  + 86400, "DLF=D" ); //     ( "!" );  ( "!",  ); //    ( "!" );  (  ( " *" ). () = 0 )   ( "      " ); ; //     =  ( "!" );  ( "! [1]", ,  ); //    ( "!" );  (  ( " *" ). () > 0 )   ( "       " ); ; //      ();  ( "", "1*" );
      
      





コヌドコメント

  1. , . , , ,
  2. , , . , , , - , . , , , . , - , , , - ()
  3. このテストには、前に説明した3段階の構造党䜓はありたせんこちらを参照が、スクリプトが単玔であり、結果ずしお実行速床が速いため、ここでは必芁ありたせん。


スクリプトを実行したす。これを行うには、アプリケヌションがテストクラむアントモヌドで実行されるようにコンフィギュレヌタヌで構成されおいるこずを確認したす



この蚭定は保存され、毎回蚭定する必芁はありたせん

アプリケヌションを実行し、テスタヌに​​切り替えお、スクリプトをメむンずしお蚭定し、実行ボタンをクリックしたす



テストが開始された時点で承認日を確認する手順をただ実装しおいない堎合、テストは倱敗したす。

ここで、ProcessorProcessingFillハンドラヌの実装モゞュヌルで次のチェックを実装したす。

  =  ( 1, 1, 1 );        = .;  (  =  )  ;  (  <  )   ( "   " );  = ; ; ;
      
      





実行のためにアプリケヌションを起動し、テスタヌに​​切り替えお、そこでF5をクリックしたす。その結果、テストぱラヌなしで完了するはずです。



ステヌゞ2



蚈画された2番目のゞャヌクに進みたす。以䞋の衚では、コヌディングずテストの䜜業に参加したす。

プログラミング テスト䞭
Configuratorで

  1. 登録情報を远加する
  2. 登蚘簿ぞの蚘入の圢成に関する行為の凊理を完了したす
テスタヌで

承認日を指定しおSaleテストを䜜成したしょう。ここで、

  1. 環境を定矩したす。
    1. サプラむダヌの名前
    2. バむダヌ名
    3. 䟡栌ず数量のあるProduct1
    4. 䟡栌、数量、承認日を含むProduct2
  2. 環境を䜜成する
    1. サプラむダヌ、バむダヌ、補品を䜜成する
    2. 領収曞をしたしょう
    3. 䜜成しお実装する
  3. 察象郚品
    1. 実装のリストを開き、䜜成された実装を芋぀けたす。
    2. 実装を開いお䜿いたしょう
    3. 承認の登録を開き、蚘録の可甚性を確認したしょう
このテストは、タヌゲットパヌツをチェックする前に環境を䜜成する必芁があるため、より困難です。環境は、スクリプトの最初の起動時に䞀床だけ䜜成され、その埌、タヌゲット郚分のみが実行されるこずを思い出させおください。このトリックは、このステップの最埌に開発されるスクリプトコヌドから明らかになりたす。



環境を䜜成するには、次のオブゞェクトが必芁です。

  1. 仕入先
  2. 補品
  3. 倉庫
  4. バむダヌ
  5. 入堎料


実際のプロゞェクトでは、環境の䜜成は簡単な操䜜ですが、れロからすべおを行いたす。ラむブラリテストはただありたせん。そのため、環境ロゞックを蚘述する前に、オブゞェクトを䜜成するためのテストメ゜ッドが必芁ですテストメ゜ッドに぀いおはこちらを参照。



プロバむダヌを䜜成する方法



ほずんどすべおのテストメ゜ッドの構造は同じです。1Cオブゞェクトの適甚モデルに察応するテストグルヌプで䜜成されたす。これは厳密なルヌルではありたせん。プロゞェクトでは独自の方法でテストメ゜ッドを䜜成できたすが、提案されたアプロヌチは既に蚌明されおいたす。

最初のテストメ゜ッドを䜜成したしょう。スクリプトツリヌのDirectoriesフォルダヌで、Providersフォルダヌを䜜成し、その䞭にCreateメ゜ッド、続いおParametersメ゜ッドを䜜成したす。これにより、次の構造が埗られたす。



その結果、Createメ゜ッドずそれに埓属するParameterメ゜ッドがありたす。あらゆるシナリオでこのメ゜ッドを䜿甚するには、次のコヌドを蚘述するだけで十分です。

 //   -     =  ( "..." ); //   . = " "; //        ( "..",  );
      
      





テスタヌのすべおの機胜に関するヘルプに぀いおは、テスタヌAPIセクションを参照しおください。

スクリプトメ゜ッドをスクリプト芁玠の圢匏で䜜成するには、[プロパティ]タブで、適切なタむプを割り圓おる必芁がありたす。



ツリヌおよびスクリプトプロパティの詳现に぀いおは、こちらを参照しおください。

パラメヌタヌスクリプトコヌド゚ディタヌに移動しお、次のテキストを入力したす。

 //     // // : //    = ;  =   (); . ( "" ); . ( "", "" );  ;
      
      





次に、スクリプト゚ディタヌを開きたす。

 //       // // : //  ,   "..." // // : //     ( "e1cib/data/." );  =  ( " (*" ); // ********************************************* //   // *********************************************  ( "!", _. );  ( "" );  ( "!", _. ); // ********************************************* // ,   // *********************************************  ( "!" );  =  ( "!" ); // ********************************************* //   // *********************************************  ( "",  () );  =  ( "*" );  ( "!" );  ( " (*" );  ( "!", _. );  ( "!" );  (  );  ;
      
      





新しいサプラむダを䜜成するパラメヌタ化された方法の準備ができたした。残りのメ゜ッドの䜜成に移りたしょう。



バむダヌを䜜成する方法



スクリプトツリヌでほが同じアクションを実行しお、顧客䜜成シナリオを䜜成したす



次に、スクリプトコヌド、Directories、Customers、Create を入力したす。

 //     // // : //    = ;  =   (); . ( "" ); . ( "", "" ); . ( "", " " );  ;
      
      





およびディレクトリ、バむダヌ、䜜成

 //       // // : //  ,   "..." // // : //     ( "e1cib/data/." );  =  ( " (*" ); // ********************************************* //   // *********************************************  ( "!", _. );  ( "!" );  ( "!", _. ); // ********************************************* // ,   // *********************************************  ( "!" );  =  ( "!" ); // ********************************************* //   // *********************************************  ( "",  () );  =  ( "*" );  ( "!" );  ( " (*" );  ( "!", _. );  ( "!" );  (  );  ;
      
      





商品の䜜成方法





Directories.Nomenclature.Create.Parameters

 //     // // : //    =   (); . ( "" ); . ( "", "" ); . ( "", "" ); . ( "", "18%" );  ;
      
      





ディレクトリ、呜名法、䜜成

 //       // // : //  ,   "..." // // : //     ( "e1cib/data/." );  =  ( " (*" ); // ********************************************* //   // ********************************************* // ( , _. );  ( "!", _. );  ( " ", _. );  ( " ", _. );  ( " ", _. ); // ********************************************* // ,     // *********************************************  ( "!" );  =  ( "!" );  ();  ;
      
      





倉庫の䜜成方法





ディレクトリ、りェアハりス、䜜成、パラメヌタ

 //     // // : //    =   (); . ( "" );  ;
      
      





ディレクトリ、倉庫、䜜成

 //       // // : //  ,   "..."  ( "e1cib/data/." );  =  ( "* (*" ); // ********************************************* //   // *********************************************  ( "!", _. );  ( "!", " " ); // ********************************************* // ,     // *********************************************  ( "!" );
      
      





文曞のサヌビス入庫の䜜成方法





文曞、商品の受領、サヌビス、䜜成、パラメヌタ

 //     // // : //    = ;  =   (); . ( "" ); . ( "", __. ); . ( "" ); . ( "" ); . ( "",   ); //  ... . ( "",  ); //         ;
      
      





ドキュメント、商品の到着、サヌビス、䜜成、商品

 //      // // : //    = ;  =   (); . ( "" ); //     . ( "" ); . ( "" );  ;
      
      





ドキュメント、商品の受領、サヌビス、䜜成

 //           // // : //  ,   "..." // // : //     ( "e1cib/data/." );  =  ( "    (*" ); // ********************************************* //   // *********************************************  = _.;  (  <>  )   ( "!",  ( , "DLF=DT" ) ); ;  ( "!", _. );  ( "!", _. );  = _.;  (  <>  )   ( "!",  ); ; // ********************************************* //   // *********************************************  =  ( "!" );     _.   ( "!",  );  ( "!", . );  ( "!", . );  ( "!", . ); ; // ********************************************* //  ,   // *********************************************  ( "!" );  =  ( "!" ); // ********************************************* //      // *********************************************  ( "!" );  =  _.;  (  )   (); ;  ;
      
      





ドキュメントの䜜成方法





ドキュメント、サヌビスの実珟、䜜成、パラメヌタ

 //     // // : //    = ;  =   (); . ( "" ); . ( "", __. ); . ( "" ); . ( "" ); . ( "",   ); //  ... . ( "",  ); //        . ( "" );  ;
      
      





文曞、商品の実珟、サヌビス、䜜成、商品

 //      // // : //    = ;  =   (); . ( "" ); //     . ( "" ); . ( "" ); . ( "" );  ;
      
      





ドキュメント、サヌビスの実珟、䜜成

 //           // // : //  ,   "..." // // : //     ( "e1cib/data/." );  =  ( "    (*" ); // ********************************************* //   // *********************************************  = _.;  (  <>  )   ( "!",  ( , "DLF=DT" ) ); ;  ( "!", _. );  ( "!", _. );  = _.;  (  <>  )   ( "!",  ); ;  = _.;  (  <>  )   ( "!",  ); ; // ********************************************* //   // *********************************************  =  ( "!" );  =  ( 1, 1, 1 );     _.   ( "!",  );  ( "!", . );  ( "!", . );  ( "!" );  ( "!", . );  = .;  (  <>  )   ( "!",  ( , "DLF=D" ) ); ; ; // ********************************************* //  ,   // *********************************************  ( "!" );  =  ( "!" ); // ********************************************* //      // *********************************************  ( "!" );  =  _.;  (  )   (); ;  ;
      
      





これで、メ゜ッドの準備が完了したした。



テストSaleDateAgreementの䜜成



第2段階の最終テストを曞くこずにしたす。これを行うには、スクリプトツリヌで次のテストを䜜成したす。



それをメむンのテストにしお、次のコヌドを䜜成したす。

 // : // -         //    ,       // -    // -     ()  // -       ,      // -      ( "." );  ();  = "25C555B6";  =  (  );  (  ); // ************************************ //   // ************************************ //    ( "e1cib/list/." );  ( " " ); //      ( "!", "", . ); //   ( "!" ); //     ( "e1cib/list/." );  ( "" ); //     =  ( "!", "", . );  (   )   ( "        " ); ; //    . //     ( "!" );  ( " " ); //   " "  =  ( "!OnlySelectedElement" );  (  = "" )   ( "!OnlySelectedElement" ); ; // ,        ( "!DocumentTypeElement", " " ); //  -  ( "!Ok" ); //       ( "" );  ( "" ); // ********************************************* //  // *********************************************   (  )  =  ();  =   (); . ( "",  ); . ( "",  ); . ( "",  () + 172800 ); //    . ( "",  - 86400 ); . ( "", " " +  ); . ( "", " " +  ); . ( "", " " +  ); . ( "",  (  ) );  ;    (  )  = .;  =   (); . (  ( "1 " + , 5, 150, 250 ) ); . (  ( "2 " + , 15, 250, 350, . ) );  ;    ( , , , ,  =  )  =   (); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  );  ;    (  )  = .; // ***************************************************** // ,       // *****************************************************  (  ( ".",  ) )  ; ; // ****************************************************************** // ,         // ******************************************************************  ( "e1cib/command/..." );  ( "" );  =  ( "!" );  (  <> " " )   ( "  ,         . | ,       ,   |        ,   " ); ; // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ************** //   // **************     .   =  ( "..." ); . = .;  ( "..",  ); ; // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************************** //    // ********************************  ( ".",  ); 
      
      





これは第2段階の䞻なシナリオであるため、より詳现に分析したす。

スクリプトはCall "General.Start";。で始たりたす。この呌び出しを行っお、テストを開始する前にグロヌバル倉数を蚭定し、䞀般的なタスクを実行したす。䞀般的なテストの内容を芋おみたしょう。



 //         //      ,       //    = ;  ( __ =  )  __ =   ();  ; ; // ************************************************************************* //   "__"      // ************************************************************************* __. ( "",  ); __. ( "", "" );  (  = "11" )  __. ( "", "  """"" ); ; // *********************************************** //      // ***********************************************  ();
      
      





テスタヌデモデヌタベヌスを䜿甚する堎合は、䞀般テストを開始したす。このテストを開いお倉曎したす。特に、モゞュヌルのこの郚分が必芁です。

  (  = "11" )  __. ( "", "  """"" ); ;
      
      





すべお次のように機胜したす。承認日付き販売テストが開始されるず、䞀般テストが実行され、耇数の倉数を定矩しおテスト察象のアプリケヌションに接続したす。さらに実行されるすべおのテストでは、組織名、珟地通貚、およびその他のパラメヌタヌが倉数「__」に栌玍されおいるこずがすでにわかっおいたす。これは、テスト環境の䞀皮のグロヌバルパラメヌタ化ですグロヌバル倉数ずしおの二重アンダヌスコアの䜿甚は、1C蚀語のバリアントずは独立するように遞択されたした。



次に、テストはテスト䞭のアプリケヌションのすべおのりィンドりを閉じたす。これは、テストのプロセスで䜿甚されおいるが、それず矛盟する状態にあるフォヌムを誀っおアクティブにしないために必芁です。



次の3行は、環境を定矩および䜜成したすシナリオ構造

 //  ""   . //     ,     //    - , //         //   : Ctrl+Shit+I //  ,   ,     "". //    -   .  = "25C555B6"; //   ""   ()     //  .      .  =  (  ); //   ()     . //      -,      .  (  );
      
      





環境関数内で䜕が起こるか芋おみたしょう

   (  )  =  ();  =   (); . ( "",  ); . ( "",  ); . ( "",  () + 172800 ); //    . ( "",  - 86400 ); . ( "", " " +  ); . ( "", " " +  ); . ( "", " " +  ); . ( "",  (  ) );  ; 
      
      





異垞なこずはありたせん。パラメヌタを持぀構造が準備されおいたすが、抂念的には着信IDパラメヌタの䜿甚です。



テストデヌタが䜜成されたす。぀たり、テストデヌタは䞀意でなければなりたせん。そうしないず、耇補オブゞェクトが䜜成され、実際には䜿甚できなくなりたす。実際、毎回「Camomile LLP」を䜜成する堎合、ドキュメントを䜜成するずきにどの「Camomile LLP」を遞択する必芁がありたすかしたがっお、「Supplier」+ ID、「Buyer」+ IDなどのコヌド行で䞀意のテストデヌタの䜜成が保蚌されたす。たた、事前に䜜成されたデヌタベヌスやその他の倖郚ファむルを䜿甚しお、準備されたテンプレヌトを同期するこずなく、他の開発参加者ずテストを実行できたす。



時間が経぀に぀れお、デヌタベヌスは無意味な識別子の混乱に倉わるため、このアプロヌチはおそらく耇雑です。しかし実際には、開発者のベヌスは「砎壊された」デヌタからの実隓の断片に倉わりたす。それは時間の問題です。開発が䟝存する情報を䜜業デヌタベヌスに慎重に保存する堎合は、このデヌタを初期デヌタベヌスに転送したす。デヌタベヌスに再珟゚ラヌが含たれおいる堎合は、これらの゚ラヌを再珟するテストを䜜成したす。぀たり、ワヌクベヌスにアプリケヌションの芳点から䟡倀のあるものがある堎合は、スクリプトを䜜成したす。これにより、情報デヌタベヌスからの経枈の維持から解攟され、他の開発者が開発のあらゆる段階でデヌタベヌスのオプションをチェックする機䌚が䞎えられたす。デヌタに集䞭しおいるすべおの有甚な経隓をスクリプトコヌドに倉換するこずをお勧めしたす。垞に繰り返すこずができるように。



もう䞀぀の譊戒すべき点は、テストデヌタずそのボリュヌムの䞀意性の深さです。ここで、すべおのテストデヌタを䞀意にする必芁があるわけではないこずに泚意しおください。䞀意性には、テストビゞネスロゞックの怜蚌を含むに必芁なものだけが必芁です。たずえば、このテストでは、サプラむダ、バむダヌ、倉庫、商品の名前の䞀意性が必芁です。枬定単䜍、契玄、契玄、補品グルヌプ、およびその他の関連デヌタの䞀意性は必芁ありたせん。デヌタの増加も問題になりたせん。 5分ごずに環境テストを実行したずしおもこれは非垞にありそうにありたせんが、日䞭はそのような起動が100回を超えるこずはなく、デヌタベヌスの毎日の成長にずっおは無芖できたす。実際には、最初のベヌスをロヌドしお䜜業ベヌスをリセットする必芁は、玄6か月に1回発生したす。プログラマ、ほが同じ頻床ですべおを手動でテストする人は、䜜業ベヌスを無効にしたす。



コヌドの次のセクションは、環境を䜜成する手順です。この手順の䞭で、テストデヌタが䜜成されたす。環境の䜜成は高速プロセスではありたせんが、タスクプログラミングプロセス䞭に実行されるすべおのスクリプトに必芁なわけではありたせん。環境が毎回䜜成されないようにするには、2぀のアプロヌチを䜿甚できたす。



1぀目は、䞀床䜜成された環境を䜜成するために、プロシヌゞャ呌び出しにコメントするこずです。しかし、時間が経぀に぀れお、それは疲れ始めたす。



2番目-手順の開始時に、環境がすでに䜜成されおいるかどうかを確認し、䜜成されおいない堎合は、手順の最埌に䜜成の事実を蚘録したす。

   (  )  = .; // ***************************************************** // ,       // *****************************************************  (  ( ".",  ) )  ; ; //...  ... // ******************************** //    // ********************************  ( ".",  ); 
      
      





䜜成された環境の識別子を保存するには、倀を簡単に配眮および取埗できる「単玔な」構成オブゞェクトを䜿甚できたす。䞀般的なラむブラリスクリプトでは次のようになりたす。

 // : //         // // : // ,   // // : // ,  -   ,  -      ( "e1cib/list/." );  ( "" );   =  ( "!", "", _ );   = ; ;  ();  ;
      
      





したがっお、Notesディレクトリは、環境を保存するためのオブゞェクトずしお䜿甚されたす。



泚1プラットフォヌムのバヌゞョンが8.3.9以䞋であるため、行ぞの移動は詊行によっお行われたした。これは、行ぞの移動方法の操䜜に゚ラヌがあるためです。怜玢文字列がない堎合、プラットフォヌムはブヌル倀を返す代わりに䟋倖をスロヌしたす。



泚2環境識別子を保存するこのアプロヌチは芋た目がよくありたせん;たずえば、テスタヌ自䜓の内郚にIDを保存するなど、より掗緎された゜リュヌションが掚奚されたす。残念ながら、説明されたすべおの解決策が䞀床に来たわけではなく、詊行錯誀から長い道のりを経お、今日に至っおいたす。識別子を䜿甚するずいう抂念は適切であるこずが蚌明されおおり、近い将来、テスタヌ構成レベルでこの機胜を実装するこずを間違いなく怜蚎したす。



環境を䜜成する手順の残りの郚分ず䞻芁な郚分には、パラメヌタを入力し、スクリプトメ゜ッドを呌び出すためのルヌチンが含たれおいたす。オブゞェクトを䜜成するロゞックは単玔ですが、開発䞭に環境を䜜成するためのコヌドを繰り返し実行する必芁がある堎合がありたす。この堎合、完党なテストサむクルを実行しおも効果がない堎合がありたす。最も䞀般的に䜿甚されるトリックの1぀は、returnステヌトメントを挿入しお、メむンスクリプトの先頭でコヌドを䞀時的に削陀するこずです。メむンテストの前、たずえば次のように

  (); //  -...  =  ( "..." ); . = " ";  ( "..",  ); ; //  ,        () // : // -         //    ,       // -    // -     ()  // -       ,      // -      ( "." );  (); //....
      
      





したがっお、1぀ず぀ロゞックをデバッグし、プロシヌゞャに転送しお環境を䜜成できたす。環境党䜓を再䜜成するには、テストの開始時にIDを倉曎するだけでよいこずに泚意しおください。



環境の定矩ず䜜成に぀いお説明したした。次に、SaleDateAccordanceスクリプトのタヌゲット郚分に進みたしょう。

 //    ( "e1cib/list/." );  ( " " ); //      ( "!", "", . ); //   ( "!" ); //     ( "e1cib/list/." );  ( "" ); //     =  ( "!", "", . );  (   )   ( "        " ); ; //    . //     ( "!" );  ( " " ); //   " "  =  ( "!OnlySelectedElement" );  (  = "" )   ( "!OnlySelectedElement" ); ; // ,        ( "!DocumentTypeElement", " " ); //  -  ( "!Ok" ); //       ( "" );  ( "" );
      
      





ステップのシヌケンスは非垞に明癜であり、生成された動きの怜蚌コヌドの䞀郚が重芁です。これを行うには、暙準プラットフォヌム関数を䜿甚しお、テヌブルフィヌルドをテヌブルドキュメントに出力したす。

  ( "!" );  ( " " ); //  ...
      
      





たた、スプレッドシヌトドキュメントをスクリプトに保存されたレむアりトず比范するテスタヌの機胜

  ( "" );  ( "" );
      
      







図では、テストアプリケヌション䞊にあるずテスタヌ䞋にあるを組み合わせおわかりやすくしおいたす。ご存知のように、私は少し前に走りたした。テスタヌに​​保存されたテンプレヌトは、テスト察象のアプリケヌションから以前にコピヌされたした。これは必芁な手段であり、シナリオの構成に察する3構造アプロヌチの説明を論理的に完成させる必芁がありたした。



スクリプトを実行するために実行するず、環境の䜜成段階になりたす。これは、行動のロゞックに加えお、サヌビスの実装の補品ドキュメントの衚セクションに「調達日」属性がただないためです。



プログラミングしたしょう

-必芁な小道具を远加したす-





フォヌムに配眮したす







-オブゞェクトモゞュヌルのProcessingProcessで、コヌドを远加したす。

  (, )  = " | ..  , ..  , | .  , .  , .  , | .  , .  , &   | ..   | // | //  | // |   .   |  . = . | . = & | . <>  ( 1, 1, 1 ) |  isnull ( .,  ) |";  =   (  ); . ( "",  );  = . (). ();        = .. ();  ( ,  ); . (); ; //...    
      
      





泚プレれンテヌションの埌を远うために、実装の詳现を䞀郚省略したす。たずえば、衚の郚分から行を削陀するずいう状況の解決策はないこずに気づいたでしょう。これは以前に合意されたした。

アプリケヌションを起動し、テストを実行したす。テストを完了するず、次のこずができるように



なりたす。UT11でこのレむアりトを遞択し、[承認日付き販売]タブの[テンプレヌト]タブのテスタヌに​​コピヌしたす。次に、テスタヌで重芁な領域を遞択し、コンテキストメニュヌを右クリックしお[領域



をマヌク]を遞択したす。テンプレヌトがそのたたチェックされないようにするには、パラメヌタヌ化する必芁がありたす。これを行うには、各セルテスト起動の時間ず条件によっお異なる堎合がありたすのコンテキストメニュヌで、倀をテンプレヌトに眮き換えたす。



これを各フィヌルドで実行しお、次の図を取埗したす。



セルの数倀ず合蚈の倀はそのたたであるこずに泚意しおください。環境ハンドル、固定この郚分に応じお倉えるこずができる前のフィヌルドずは異なり、詊隓の条件で綎られ、保蚌されなければならない、これは重芁である参照、ビゞネスロゞックのより完党な䟋の怜蚌を。ビゞネスロゞックを確認しおください。

スクリプトを実行するために実行し、テストが成功するこずを確認したす。

次の蚈画段階に進みたす。



ステヌゞ3



このブレヌクスルヌでは、登録甚のリストフォヌムを䜜成する必芁がありたす。クラむアント、補品、およびマネヌゞャヌによるフィルタヌずのマッチング。

以䞋の衚では、コヌディングずテストの䜜業に参加したす。

プログラミング テスト䞭
Configuratorで

  1. ,
:

, :

  1. :
    1. ,
    1. ,
    1. ,
    2. ,
    3. /


, , .



-リストのメむンフォヌムを远加し、フォヌムの詳现を远加しお、フォヌムに配眮し





たす。-リストフォヌムモゞュヌルで、フィルタヌフィヌルドハンドラヌを定矩したす。

 &   (  ) .(, "", , ., , ());  &   (  ) .(, "", , ., , ());  &   (  ) .(, "", , ., , ()); 
      
      





この時点で、すべおがプログラミングされおいたす。テストの開発に移りたしょう。これを行うには、以前のように、スクリプトツリヌで新しいスクリプトを䜜成したす。このスクリプトをメむンずしお蚭定し、フィルタリングリストず呌び



たす。次のスクリプトコヌドを玹介したす。

 // : // -          //   ,      // -    // -    , ,       // -     , ,    // -      ,    , // ,         ( "." );  ();  = "25CB69CB";  =  (  );  (  ); // ************************************ //   // ************************************ //     ( "e1cib/list/." );  ( "" ); //      = .;  ( "!",  ); //      =  ( "!", "",  );  (   )   ( "       " ); ; //       ( "!", . ); //      = 0 =  ( ".",  ( "!" ) );  (   )   ( "   " ); ;  ( "!" ); //        ( "!", . [ 0 ]. );  ( "!" ); //      ( "!" ); // ********************************************* //  // *********************************************   (  )  =  ();  =   (); . ( "",  ); . ( "",  ); . ( "",  + 172800 ); //    . ( "",  - 86400 ); . ( "", " " +  ); . ( "", " " +  ); . ( "", "  " +  ); . ( "", " " +  ); . ( "",  (  ) );  ;    (  )  = .;  =   (); . (  ( "1 " + , 15, 250, 350, . ) );  ;    ( , , , ,  =  )  =   (); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  );  ;    (  )  = .; // ***************************************************** // ,       // *****************************************************  (  ( ".",  ) )  ; ; // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ******************* //   // *******************  =  ( "..." ); . = .;  ( "..",  ); . = .;  ( "..",  ); // ************** //   // **************     .   =  ( "..." ); . = .;  ( "..",  ); ; // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************************** //    // ********************************  ( ".",  ); 
      
      





テストコヌドに関するコメント

  1. 実際、このスクリプトは、前の手順で䜜成したスクリプトの簡易バヌゞョンです。
  2. このシナリオでは、クラむアントアグリヌメント蚭定の怜蚌を省略したした。実際のプロゞェクトでは、この蚭定を個別の環境テストずしお遞択し、各テストに含めたせん。
  3. ( ".", ( "! " ) ). , .
  4. , 7 .
  5. , - , . , . “?” . , ( ).
  6. .
テストを実行するず、゚ラヌなしで合栌するはずです。この段階は準備ができおいたす。





ステヌゞ4



この段階で、調敎レゞスタのレコヌド線集フォヌムを開発する必芁がありたす。ナヌザヌには、顧客ずの亀枉の結果を修正するための線集甚のフォヌムが必芁ですタスクの条件に぀いおは、ここで説明したした。



以䞋の衚では、コヌディングずテストの䜜業に参加したす。

プログラミング テスト䞭
Configuratorで

  1. ゚ントリフォヌムを情報の登録に远加したす。
  2. 倖芳を圢成したす
  3. フォヌムのロゞックを曞きたす
テスタヌでCoordinationのFormsを

線集するテストを䜜成したしょう。ここで

  1. 環境を定矩したす。
    1. サプラむダヌの名前
    2. バむダヌ名
    3. 承認日がある補品
  2. 環境を䜜成する
    1. サプラむダヌ、バむダヌ、補品を䜜成する
    2. 領収曞をしたしょう
    3. 䜜成しお実装する
  3. 察象郚品
    1. 登録リストを開きたす。
    2. バむダヌの遞択を蚭定し、リスト内の唯䞀の゚ントリを開きたす
    3. [コメント]フィヌルドが線集䞍可であるこずを確認しおください
    4. [完了]チェックボックスをクリックしお、[コメント]フィヌルドが䜿甚可胜になっおいるこずを確認したす。
    5. フォヌムを保存しお閉じたす
    6. もう䞀床開いお、コメントフィヌルドが䜿甚可胜であるこずを確認しおみたしょう。
    7. [完了]チェックボックスを削陀しおから再床オンにし、[コメント]フィヌルドがクリアされおいるこずを確認したす
    8. リストに新しいレコヌドを䜜成しおみたしょう
    9. ナヌザヌが登録簿ぞの゚ントリの盎接入力の犁止に関する譊告を受け取ったかどうかを確認したす
このゞャヌクを組み合わせお行いたす。たず、フォヌムのレむアりトを䜜成し、コンフィギュレヌタヌで次のレゞストリ゚ントリを䜜成したす。



アプリケヌションを起動したす。テスタヌに​​切り替え、スクリプトツリヌで䜜成し、メむンテストずしお調敎フォヌムの線集を蚭定したす。



そしお、次のコヌドを入力したす。

 // : // -          //   ,      // -     // -           // - ,       (    ) // -   , ,     . // -     // -      ,     // -   ,     ,     // -       // - ,              ( "." );  ();  = "25CB8B15";  =  (  );  (  ); // ************************************ //   // ************************************ //     ( "e1cib/list/." );  =  ( "" ); //      = .;  ( "!",  ); //      ( "!", "",  ); //    ( "!" );  ( . (). () ); // ,   ,        ( "" =  ( "!" ) )   ( "!" ); //   ; //      ( "!", "",  ); //     ( "!" ); //      ( "!", "" ); //  -    ( "!", " " ); //      ( "!" ); //          (  );  ( "!" );  ( . (). () ); //      ( "!", "" ); //        ( "!" );  ( "!" ); //      ( "!", "" );  ( "!" ); //  ,          (  );  ( "!" ); //        (  ( "* *" ). () = 0 )   ( "   " ); ;  (); // ********************************************* //  // *********************************************   (  )  =  ();  =   (); . ( "",  ); . ( "",  ); . ( "",  + 172800 ); //    . ( "",  - 86400 ); . ( "", " " +  ); . ( "", " " +  ); . ( "", " " +  ); . ( "",  (  ) );  ;    (  )  = .;  =   (); . (  ( "1 " + , 15, 250, 350, . ) );  ;    ( , , , ,  =  )  =   (); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  ); . ( "",  );  ;    (  )  = .; // ***************************************************** // ,       // *****************************************************  (  ( ".",  ) )  ; ; // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ****************** //   // ******************  =  ( "..." ); . = .;  ( "..",  ); // ******************* //   // *******************  =  ( "..." ); . = .;  ( "..",  ); // ************** //   // **************     .   =  ( "..." ); . = .;  ( "..",  ); ; // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************* //   // *******************  =   ();     .   =  ( "..." ); . = .; . = .; . = .; . = .; . (  ); ;  =  ( "..." ); . = ; . = .; . = .; . = .;  ( "..",  ); // ******************************** //    // ********************************  ( ".",  ); 
      
      





スクリプトコヌドに関するコメント

  1. このテストは以前のものをコピヌしお䜜成されたした。環境は実質的に倉曎されおいたせん。朜圚的なクラむアントの䜜成を削陀したした
  2. このようなコヌド行は興味深いものですここ付録。アクティブりィンドりの取埗。オブゞェクトの取埗;。この堎合、テストされたアプリケヌションを暙準のプラットフォヌムメ゜ッドで操䜜する䟋を瀺したす。アプリケヌション倉数に、テスタヌはテストされたアプリケヌションオブゞェクトを栌玍したす。これを䜿甚しお、テストクラむアントモヌドで他のすべおのプラットフォヌムメ゜ッドを呌び出すこずができたす詳现に぀いおは、テスタヌAPIを参照しおください。


フォヌムのロゞックを実装しおいないため、テストを実行しおクラッシュするこずを確認しおください。次に、コンフィギュレヌタヌに戻り、蚘録フォヌムモゞュヌルに切り替えお、次のコヌドを入力したす。

 // ***************************************** // ***********   &   (  )  ();  &   (  =  )  (  =    ( , "" ) )  .. = .; ;  &   ( ,  )   ( , "," ). (  ) <> ;  &   ( ,  )  ( .. () )   ();  = ; ;  &   ()  (  ( "ru = '     ,       '" ) );  // ***************************************** // ***********   &   (  )  ();  ( "" );  &   ()  (  . )  . = ""; ; 
      
      





次に、フォヌムに切り替えお、むベントハンドラヌを蚭定したす。サヌバヌ䞊で読み取り、サヌバヌ䞊で䜜成、倉曎時に動䜜したす。アプリケヌションを実行し、テストを実行しお、合栌するこずを確認したす。



おわりに



コヌド駆動型クラむアントアプリケヌションのテストを通じおプログラマヌの䜜業を敎理するためのテスタヌシステムのアプリケヌションの理論的および実甚的な郚分を調べたした。倚くの蚈算は議論の䜙地があり、詊隓プロセスを構築する分野の圓局の教えずは正反察にさえありたす。反察ではありたせんが、この知識があれば、この資料は準備されおいたした。䞻な目暙は、方法論の実際的な適甚ずシナリオテストの手段を瀺すこずでした。

開発された各シナリオでは、テストされた機胜の量に関しお誰かが「バスト」を芋぀け、誰かが「䞍足」するこずを認めたす。この蚘事で、すべおの退屈な単玔さず面癜くない耇雑さずの間でバランスが取れたこずを願うばかりです。同様に重芁なタスクは、自動化されたシナリオテストを開発に移怍し、プログラミングの本質に関する付録や別のアドオンのように芋えないようにするこずでした。



この仕事を無芖しないでくれおありがずう。あなたのテスト、幞運を祈りたす



All Articles