サイトを作成する場合、おそらくこれがそうである理由を理解するでしょう。 そして、おそらくあなたは議論される問題に精通しているでしょう。
アセンブリの目的は何ですか?
あなたがサイトを作り、すでに戦闘作戦に乗り出したと想像してください。テーブルからすべての汚れを取り除き、すべてをチェックして整理し、顧客が悪魔に満ちた不明瞭な「工事中」ではなく、既製の作業システムを見たとします。
そして突然、どこかで、Vasya Pupkins、Bill Gates、Vladimir Putin、または文字の形をした一般的に理解できない言葉がキャンディに現れ始めます。 さらに悪いことに、これらのあいまいな人々が数百万ルーブルの請求を開始すると、自動的にあなたの会社の1C区に転送されます。
従業員の1人が主導権を握り、サイトの仕組みを「確認」することにしました。 もちろん。 結局のところ、彼以外に誰もこれを行うことはできません。 彼だけがそれができる。
ここでは、サイトの機能とプロセス全体の知識がなくても、そのような従業員が原則としてチェックを実行できるかどうかについては説明しません。
そのような状況を避けるために、戦闘システムでのテストを完全に禁止する必要があります。これをすべての従業員に伝え、熱い鉄でこれらの言葉を額に焼き付けます。
しかし、それではどのようにテストするのでしょうか?
しかし、このためには、いわゆるを使用することができます。 アセンブリ。
アセンブリは、テストを実行できる、また実行する必要がある戦闘サイトの完全なコピーです。
これがまさに戦闘の正確なコピーであることが重要です。 経験が示すように、戦闘システムで発生するエラーを人工的な構成で表示することはありません。 ユーザーが送信した問題を理解して理解できるのは、戦闘サイトの正確なコピーのみです。
全体としての組立システムとは何ですか?
組み立てシステムを整理する最良の方法は何ですか?
複数のアセンブリを一度に作成すると、構成自体が証明されます。
つまり 戦闘システムのコピーのN個の別個のサイトが作成されます:build1.site.ru、build2.site.ru、...、buildN.site.ru
同時に、アセンブリの1つ(たとえば、最初のアセンブリ)は特別です-変更をロールできません。 残りは、プログラマーによってエンコードされた新しいタスクをデバッグするように設計されています。
特別な第1アセンブリが必要なのは、戦闘サイトの正確なコピーを変更せずに常に手元に常に持っている場合だけです。 何のために?
また、ユーザーが送信したエラーメッセージをどこでどのように確認しますか?
これらのサポートレターには、サイトで見つかった重大なエラーを説明するユーザーからの手紙が含まれている場合があります。 ユーザーの現金残高でアクションを実行する必要がある場合、このエラーをどのように確認しますか? それを行うために戦場ではありませんよね?
このようなタスクには、戦闘サイトの正確なコピーが非常に適していますが、それとは完全に別個に機能し、特別なテストサービスを使用します。
このテストコピーは上から膨らませてはいけません。 戦闘システムの完全かつ正確なコピーでなければなりません。 そうして初めて、テストは正確になります。
最初のアセンブリは自動化できます。 毎日更新されます(新しいデータベースダンプとすべてのスクリプトが注がれました)。 さて、現在のデータを現在の瞬間に見ることができるように、今すぐ更新する機能を追加してください。
アセンブリの残りの部分は、毎日ビルドする必要はありません。 「オンデマンド」でそれらを構築するだけで十分です-つまり プログラマーまたはテスターがそれを必要とする場合のみ(ただし、このためには、アセンブリの展開速度に一生懸命取り組む必要があります)。
また、ロックなどを導入することを忘れないでください。
複数のプログラマーが一度にアセンブリを使用する場合、あるプログラマーが自分の変更を別のプログラマーが使用するアセンブリにロールする状況は避けられません。
これを防ぐには、アセンブリをロックできるようにします。 アセンブリがロックされている場合、ロックが解除されるまでアセンブリを再組み立てすることはできません。
アセンブリの技術的な配置方法
アセンブリの実装は、技術的な観点から非常に簡単です。 通常のシェルスクリプトを使用して簡単に作成でき、シェルスクリプトを実行してnohupモードでアセンブリを展開する単一のWebページが作成されます。
展開手順も難しくありません。 すべてが3つのステップで実行されます。
- データベースの新しいダンプをロールします
- svnからの必要なブランチはスクリプトでロールされます
- データベースに変更を加えるスクリプトが起動されます(同じsvnブランチから取得)
もちろん、シェルですべてを行う必要はありません。 任意のツールを使用できます。 アセンブリ用の既製のツールがある場合、それを使用してみませんか?
ところで、アセンブリを作成するとき、単一の手動変更は行われないことに注意してください! これは、特に人的要因によるエラーを回避するために行われます。 ところで、それは大いに役立ちます。
プログラマがコーディングにアセンブリを使用しないでください。 開発が大幅に遅くなります。
タスクの最終テスト用のツールとしてアセンブリを使用する方が正確です。
コンピューター上の各プログラマーは、サイトのコピーを独自に作成し、エンコードするのが最適です。 そして、タスクの準備ができたら、アセンブリで確認してください。
他にどのような利点がありますか
なぜなら アセンブリは自動的にアセンブル(展開)され、それらに対する手動の影響は最小限に抑えられます。
手では何もできません。 スクリプトを変更したり、データベースを修正したりしないでください。
これは、エラーの数だけでなく、戦闘サイトの展開にも非常に大きく影響します(人間の介入なしで自動的にビルドされます)。これは、すべての手順が既にアセンブリでデバッグおよびチェックされているためです(ただし、以前の状態にロールバックする手順が必要です)。傷つかない)。
まとめ
サイトのテストにアセンブリを使用することは実際に効果的であることが証明されているため、サイトを開発している場合は、そのためのアセンブリシステムを作成することを忘れないでください。