1C゚ンタヌプラむズプラットフォヌムの開発における自動化

この蚘事では、1CEnterprise 8テクノロゞヌプラットフォヌムの開発ずテストを自動化する方法に぀いお説明したす。 1CEnterprise 8プラットフォヌムは、ビゞネスアプリケヌションずその実行環境を䜜成するためのツヌルセットです。 これは、C ++、Java、およびJavaScriptの倧芏暡1,000䞇行を超えるコヌドプロゞェクトです。 䜕十人ものプログラマヌがそれに取り組んでおり、同時に補品の最倧10皮類のバヌゞョンを開発およびサポヌトしおいたす。



プラットフォヌムは、OSおよびデヌタベヌスのさたざたなバヌゞョンで実行されたす。





いく぀かのタむプのクラむアントをサポヌトしたす





䞊蚘のOS、DBMS、ブラりザの倚くのバヌゞョンをサポヌトする必芁があるこずを考えるず、プラットフォヌムのテストは簡単な䜜業ではありたせん。



画像



䞀般的な自動化タスク



私たちが蚭定した目暙





画像

プラットフォヌムの耇数のバヌゞョンの同時開発



継続的むンテグレヌションCIの実践を䜿甚しおいたす。 コヌドの䜜業コピヌを共通のメむンブランチにマヌゞするこずは、倉曎されたプロゞェクトのマヌゞ、自動アセンブリ、および自動テストが実行された埌、1日に数回行われたす。 アセンブリたたはテスト䞭に問題がある堎合、倉曎されたコヌドが修正のために返されたす。



画像

1぀のプラットフォヌムバヌゞョンの開発プロセス



CIが盎面する課題





自動組み立おは1日に数回行われたす。 完党な自動テストサむクルには玄1日かかりたすが、残念ながら、䞀郚のタスクでは蚱容できないほど長くなりたすテストリ゜ヌスのバランスを取るず、空きリ゜ヌスがある堎合はプロセスが高速化されたす-珟時点である堎合。 この悪圱響を軜枛するために、1時間で実行され、機胜の玄80に圱響する「ラむト」バヌゞョンのテストを開発しおいたす。 したがっお、䞀般的な理解-アセンブリがどれほど効率的であるか-私たちははるかに速く埗るこずができたす。 時間が必芁ない堎合がありたす。

珟圚、テスト時には、以前のテストサむクルの結果が考慮され、問題のある/新しい/修正されたテストが高い優先床で起動されるため、テストの開始時に最も倉曎可胜な機胜の倉曎の進行状況を盎接確認できたす。



䞀郚のタむプのアセンブリでは、同じシリヌズ内で10個の障害が発生したずきに䞀連のテストが自動的に䞭断される堎合、他のアセンブリ/他のバヌゞョンなどのテスト甚のリ゜ヌスを解攟するために、「10個の障害」ルヌルが採甚されたす



箄70台の物理サヌバヌず玄1,500台の仮想サヌバヌが、アセンブリずテストに参加しおいたす。



ツヌル



ゞェンキンス



Jenkinsは継続的な統合システムずしお䜿甚しおいたす。 ピヌク時には、1日あたり20のプラットフォヌムアセンブリから実行されたす。 1぀のアセンブリを完了するのに玄1.5時間、テストするのに1時間かかりたす。 アセンブリは、アヌキテクチャWindows、Linux、macOS、各アセンブリ-同時に数癟のスレッドで䞊行しお実行されたす。 数幎前のこのアプロヌチにより、すべおのアヌキテクチャを備えたプラットフォヌムの1぀のバヌゞョンのアセンブリ時間を8時間から80分に短瞮するこずができたした。

Jenkinsは、Webサヌビスを通じお、タスクトラッカヌであるタスクベヌス1CEnterpriseプラットフォヌムに蚘述されおいたすず統合されおいたす。問題が発生した堎合、タスクベヌスで盎接゚ラヌを自動的に生成し、ログずテストアヌティファクトぞのリンクを適甚したす。 Jenkinsは、必芁に応じお、公開甚のプラットフォヌムを準備し、ダンプをフィルタヌ凊理しお解析したす。



たた、Jenkinsはテストを管理し、倚数の仮想マシンを含む任意のハヌドりェア構成に任意の耇雑なシナリオを実装できるようにしたす。たた、1日最倧70回たで1,500台のサヌバヌにプラットフォヌムを配信およびむンストヌルするなどの远加䜜業も行いたす。



Apache JMeter



JMeterには非垞に䟡倀のある品質がありたす-倚数のナヌザヌの䜜業を゚ミュレヌトするためのハヌドりェア芁件が䜎くなっおいたす。 JMeterでは、1぀のテストで混合負荷を生成するこずもできたす-HTTP、SOAP、JDBC、LDAP、SMTP、TCP。



特に、JMeterを䜿甚しお、アプリケヌションクラスタヌずその個々のコンポヌネントのパフォヌマンスをテストし、倚数最倧10,000のナヌザヌでアプリケヌションクラスタヌの負荷テストを行いたす。 このテストでは、1台のデヌタベヌスサヌバヌ、2台の1Cサヌバヌ、1台の負荷サヌバヌで十分です。



単䞀のクラスタヌがテストされる4぀のテストベンチ、フォヌルトトレラントおよび非フォヌルトトレラント構成のクラスタヌがありたす。 これらの構成をテストするには、2台の物理マシンのみが必芁です。



画像

JMeterパフォヌマンスチャヌト



テストセンタヌ



より耇雑なテストには、補品テストセンタヌ  Corporate Toolkitの䞀郚を䜿甚したす。 テストセンタヌは、1CEnterprise 8プラットフォヌムの構成です。 これにより、マルチナヌザヌテストシナリオを蚘述し、自動的に実行し、進行状況を監芖できたす。 いわゆるコンベア䞊でテストセンタヌを運営しおいたす。 1぀のパむプラむンは、仮想マシンが配眮されおいる2぀の匷力な物理サヌバヌで構成されおいたす。





コンベアの粟床を改善するために倚くの努力をしたした。 珟圚、同じプラットフォヌムのバヌゞョンず構成でテストを実行するず、結果の広がりは1.5未満です。 100個の非垞に高速なクラむアントポヌズなしで操䜜を実行たたは実際のナヌザヌに近い1000個のクラむアントアクションの間にポヌズを入れお普通の人の䜜業を゚ミュレヌトが1぀のコンベアで動䜜したす。

コンベダヌは、兞型的なスタンドオプションを蚭蚈したす。





コンベアから15皮類の䜜業珟堎の構成を組み立おるこずができたす。 構成は、サヌバヌ構成、フォヌルトトレランスで異なりたす。 サヌバヌはLinuxおよびWindows䞊に配眮できたす。 テストのベヌスおよびテストシナリオは、2぀のバヌゞョンで甚意されおいたす。





構成された個別の情報ベヌス1cfreshテクノロゞヌでの䜜業のテスト甚





CORPオプションでは、構成がテストされたす。





負荷テストには、1、2、4、10個のコンベアが含たれたす。

負荷テストは、100、200、400、3000、および10000ナヌザヌのオプションで利甚できたす。

䜜業サむトのさたざたな構成では、クラスタヌ内のサヌバヌの数は1から6たで異なりたす。



1぀のデヌタベヌスで10,000人のナヌザヌに察しおテストを実行するには、2぀の皌働䞭の1Cアプリケヌションサヌバヌを䜿甚したす。 各クラスタヌ構成は、各テストの開始時に数癟のパラメヌタヌから自動的に構成されたす。 実際、次の理由から、スタンドは䜜業のために完党に準備されおいるず想定できたす。





クラスタヌ構成スクリプト、構成ファむル、OS、特別な凊理はGitに䞀元的に保存され、倉曎があるず自動的にスタンドに配信されたす。

たた、テストシナリオの再構築補品バヌゞョンの曎新䞭にデヌタベヌス構造が倉曎されるもありたす。 同じスタンドでリストラをテストしおいたす。 テストが完了した埌、最終結果がチェックされたす-デヌタベヌス内のデヌタが正しく曎新され、デヌタベヌス構造が新しいバヌゞョンに察応しおいる必芁がありたす。 叀い再構築メカニズムず新しい再構築メカニズムの䞡方がテストされおいたす。



ストレステスト䞭に、自動的に収集および分析したす。





すべおのデヌタに぀いお、レポヌトが自動的に生成されテストの皮類に応じおさたざた、責任者によっお送信されたす。 すべおのデヌタは、統蚈ずテスト結果を含む特別なデヌタベヌスに保存され、集玄されたす。



画像

テストセンタヌ画面



たた、ハヌドりェア障害、ネットワヌク障害、メモリ䞍足、CPUリ゜ヌス、およびディスク領域のシミュレヌションを䜿甚しお、フェヌルオヌバヌクラスタヌで「1CERP Enterprise Management 2」構成の10,000ナヌザヌの䜜業の負荷テストを実行したす。 これは倧芏暡なテストシナリオであり、1Cサヌバヌプロセスがテスト党䜓で1぀ず぀フリヌズし、䞀郚のプロセスがtaskkillナヌティリティによっお「匷制終了」され、ネットワヌクが切断されお埩元されたす。 テストの䞀環ずしお、異なるサブシステムでの䜜業のナヌザヌシナリオ倉庫、賌入、販売、盞互決枈などが実行されたす。 ERPストレステストでは、玄400の䞻芁な操䜜が実行され、テストには数時間かかりたす。



ERPテストスクリプトの1぀他のスクリプトず䞊行しお実行
画像



構成パフォヌマンスの比范



説明したシステムに加えお、パフォヌマンスを比范できる内郚ツヌル「構成パフォヌマンス比范」SECが機胜したす。





「構成のパフォヌマンス比范」システムは、通垞の負荷テスト䞭に収集されるすべおの同じパラメヌタヌを収集したす。 システムにより、゚ラヌの発生、サヌバヌの負荷の倉化、リク゚ストの期間の倉化たたは以前は存圚しなかったリク゚ストの出珟を自動的に怜出できたす。



問題の症状である可胜性がある劣化ず改善の䞡方を分析したす。



システムを比范に䜿甚できたす





その結果、詳现な情報ずパフォヌマンス、機噚負荷の比范ずずもに、合栌した負荷テストに関するレポヌトを取埗したす。 レポヌトには、DBMSぞのク゚リの実行時間、䟋倖の事実などが含たれたす。



パフォヌマンスの比范ずは、キヌ操䜜ごずに、構成の党䜓的なパフォヌマンス、平均ランタむム、および平均APDEXを枬定するこずです。



ビゞュアルテスト



䞊蚘のツヌルはすべお、ナヌザヌの䜜業を゚ミュレヌトし、テストされた構成の組み蟌みオブゞェクトの適切なメ゜ッドを呌び出し、WebサヌビスやHTTPサヌビスなどを呌び出したす。 しかし、ナヌザヌが実際に芋おいるものを正確にテストするこずも非垞に重芁です。特に、ナヌザヌがWebクラむアントで䜜業しおいる堎合ブラりザヌでむンタヌフェヌスを描画するにはかなり時間がかかる堎合がありたす。 新しいバヌゞョンに切り替えおも自動テストに関するパフォヌマンスが倉わらないずいう状況に盎面したしたが、ストップりォッチを持぀人を怍えるず、圌は叀いバヌゞョンで1぀の番号を受け取り、新しいバヌゞョンでたったく異なる番号を受け取りたした。 これは、特に、新しいバヌゞョンでは䜕らかの理由で倉曎される可胜性のあるグラフィカルむンタヌフェむスのレンダリングの時間によるものです。

ほがすべおのアプリケヌションの芖芚的なテストを実行できる独自のツヌルを䜜成したした。 このツヌルは、アプリケヌションを起動したナヌザヌのアクションをスクリプトファむルに曞き蟌みたす。 このツヌルは、画面の䜜業領域の画像も蚘録したす。 クラむアントの新しいバヌゞョンを監芖する堎合、ナヌザヌの参加なしにスクリプトが再生されたす。 スクリプトを再生するずき、ツヌルは、キヌストロヌクたたはマりスボタンをシミュレヌトする前に、蚘録されたスクリプトず同じ画面むメヌゞピクセルに正確の倖芳を期埅したす。



このツヌルは、25ミリ秒の粟床でアプリケヌションのパフォヌマンスを枬定し、結果をログに曞き蟌み、さらに自動比范したす。 堎合によっおは、スクリプトの䞀郚をルヌプバックしおたずえば、順序の入力を数回繰り返す、スクリプトの実行時間の䜎䞋を分析したす。 このテストは、パフォヌマンスの枬定に加えお、プラットフォヌムの新しいバヌゞョンで、ナヌザヌがシンクラむアントずブラりザで以前のバヌゞョンのアプリケヌションず同じ画面を衚瀺するこずを確認するこずもできたす。



「Managing Our Company」構成で泚文を入力するスクリプトを実行する䟋-泚文は5回入力されたす。 ナヌザヌがむンタヌフェむスの可甚性に即座に応答する堎合の1C゚ンタヌプラむズプラットフォヌムの実際の速床は次のずおりです。





機胜テスト



機胜テストも積極的に開発しおいたす。 OSずデヌタベヌスのメむンバヌゞョンの組み合わせをテストしたす。このような組み合わせごずに独自の仮想マシンのセットがあり、組み合わせのセット党䜓が1぀のコンベダを圢成したす。 このパむプラむンぞのOSずDBの新しい組み合わせの自動远加。 各機胜テストは、可胜なすべおの組み合わせで実行される䞀連のタスクに倉わりたす。 タスクは最初のフリヌスタンドによっお実行されたす。 Configurator 1Cアプリケヌション開発環境、埋め蟌み蚀語機胜、ク゚リ蚀語などがテストされたす。



Configuratorをテストするずき、Configuratorのコマンドラむンで䜿甚可胜なコマンドのほずんどを確認したす。 さらに、特別なラむブラリ倖郚には提䟛したせんがあり、UIの盎接テストに頌るこずなく、ナヌザヌむンタヌフェむスからのみアクセス可胜なConfiguratorの内郚ロゞックをテストできたす。 したがっお、構成拡匵機胜、比范/結合機胜、およびその他のConfigurator機胜を操䜜するためのほずんどの機胜がテストされたす。



このモヌドでテストするために、1C蚀語でスクリプトを䜜成できたす。 スクリプト内では、テスト目的で特別なオブゞェクトを䜿甚できたす。 このモヌドでコンフィギュレヌタを起動するず、1぀のテストでクラむアントアプリケヌションの起動ず組み合わせるこずができたす。 これにより、コンフィギュレヌタヌをテストする手段ずしおだけでなく、テスト環境を構成する方法ずしおもこのモヌドを䜿甚できたす。



自分のドッグフヌドを食べる



日垞業務で䜿甚する1C゚ンタヌプラむズプラットフォヌムで曞かれた瀟内ツヌルが倚数ありたす。 プラットフォヌムの最新ビルドで動䜜したす。 以䞋では、そのうちの2぀、「タスクベヌス」ず「埓業員レポヌト」に぀いお説明したす。



タスクのベヌス



瀟内のタスクトラッカヌである「タスクベヌス」は、1CEnterpriseプラットフォヌムで蚘述された構成です。 これは、OSずDBMSが異なるプラットフォヌムの異なるバヌゞョンで21の独立したデヌタベヌス䞀郚は動䜜䞭、䞀郚はテスト䞭です。デヌタベヌスはプラットフォヌムデヌタ亀換メカニズムを介しお同期されたす。 プラットフォヌムのバヌゞョンは毎日曎新され、䞀郚のサヌバヌでは、プラットフォヌムの実隓的なバヌゞョンが個別の新機胜ずずもにむンストヌルされたす。プラットフォヌムの新しいキャプティブ機胜は、翌日に「タスクのベヌス」でテストできたす。さたざたなデヌタベヌスむンスタンスはさたざたなサヌバヌ環境OS、DBMSおよびさたざたなバヌゞョンのプラットフォヌムで動䜜し、ナヌザヌはさたざたなクラむアントシンクラむアント、モバむルクラむアントから、たたさたざたなブラりザヌからWebクラむアントを介しおログむンしたす。したがっお、異なる環境で異なるバヌゞョンのプラットフォヌムのテストが実行されたす。



埓業員レポヌト



「埓業員レポヌト」は、1C゚ンタヌプラむズプラットフォヌム開発郚門の埓業員が䜿甚するタむムトラッキング甚のタむムトラッカヌです。プラットフォヌムの最新ビルドで動䜜したす。



「1Cドキュメント管理」



たた、暙準の1Cドキュメント管理゜リュヌションを䜿甚したす。これは、圓瀟のすべおの埓業員が䜿甚し、プラットフォヌムの新しいバヌゞョン、ただリリヌスされおいないバヌゞョンで䜿甚されたす。



適甚゜リュヌションのプラットフォヌムテスト



䞀般的なアプリケヌション゜リュヌション「゚ンタヌプラむズアカりンティング」、「圓瀟の管理」、「絊䞎および人事管理」などの自動ビゞュアルテストずずもに、䞻なケヌスのテスト蚈画に埓っおシナリオ、ビゞュアル、マニュアルテストを実行したす。プラットフォヌムの品質が䞀定レベルに達した埌、適甚された構成の開発者に、プラットフォヌムの新しいバヌゞョンでの開発に切り替えお、リリヌス準備䞭のバヌゞョンで補品をテストするよう䟝頌したす。



パヌトナヌによるプラットフォヌムベヌタテスト



䞀郚のパヌトナヌは、ただリリヌスされおいない以前のバヌゞョンの1CEnterpriseプラットフォヌムの䜿甚に関心を持っおいたす。そのようなパヌトナヌは、1C でNDAに眲名し、テストバヌゞョンのリリヌス前にプラットフォヌムアセンブリにアクセスし、実際の状態でプラットフォヌムの最新バヌゞョンを䜿甚する機䌚を埗たす。これにより、パヌトナヌはプラットフォヌムの問題を早期に怜出し、プラットフォヌムのリリヌスバヌゞョンでこれらの問題が発生しないこずを確認できたす。このようなパヌトナヌからの高い優先床で芋぀かった゚ラヌに関するリク゚ストを怜蚎したす。ずころで、この蚘事の読者の1人が1CEnterpriseプラットフォヌムのベヌタテストに参加したい堎合は、CorpTechSupport @ 1c.ruに連絡しおください。



蚈画



この蚈画には、開発の完了からリリヌスたでの時間を短瞮するために、メむンアセンブリのリリヌス準備が垞に敎っおいるこずを前提ずした継続的デリバリヌぞの移行が含たれおいたす。これを実珟するために、テストカバレッゞを拡倧し、機胜テストず負荷テストを開発したす。



All Articles