PowerBuilderアプリケーションのための継続的インテグレーション

PowerBuilderのための継続的インテグレーション

継続的インテグレーションとは ?

継続的インテグレーション(CI)とは、すべての開発者の作業コピーを1日に数回、共有リポジトリでホストされている中央のバージョンにマージするという概念です。

さらに継続的インテグレーション(CI)は、コードの構築とテストを一貫して自動化する方法でもあります。各コードの更新は自動的にチェックされ、受け入れられれば本番環境に配布することができます。配布の自動化は、継続的インテグレーションの延長線上にある継続的デリバリ(CD)につながります。

最終的にCI/CDワークフローは、開発チームのアジリティと生産性を向上させます。

PowerBuilderアプリに継続的インテグレーションを導入する理由は?

リポジトリにコードを提出する前に、開発者はまず、コピーを取った後に行われた変更を反映させるためにコードを更新しなければなりません。

  1. 彼らが頻繁にそれを行えば、リポジトリの変更点は少なくなり、彼らは自分の修正を提出する前にすべきことが少なくなります。
  2. 自分のコードブランチがマージバックされたときに、複数のインテグレーションが衝突するリスクが軽減されます。
  3. コードを頻繁にテストすることで、開発者はより早くバグを発見することができます。開発者は自分が書いたコードを意識しているので、バグを修正するコストも少なくて済みます。
  4. CIは、バグを含んだコードを他のチームメイトがビルドすることで、新たなバグや修正コストが発生するリスクを低減します。

継続的インテグレーションのワークフロー

一般的なCIのワークフローは、以下のようなステップで構成されています。

継続的インテグレーションのワークフロー

1. ローカルでユニットテストを実行

ユニットテストは、手動で実行することもできますが、テスト ドリブンの開発手法に基づいて記述し、自動化することもできます。

開発者の変更をメインリリースに組み込む前に、開発者のローカル環境ですべてのユニットテストが合格する必要があります。これにより、開発者の作業が他の開発者のコピーを壊してしまうことを防ぐことができます。

2. 変更のコミットとビルドの生成

開発者は、変更内容をリポジトリに投稿し、そのブランチのコードをメインバージョンにマージバックします。

ビルドサーバーは、定期的に、あるいはコミット毎にコードをコンパイルし、その結果を開発者に報告します。

最近の PowerBuilder には、このプロセスを簡略化する様々な機能があります。

  • PB 2021では PBAutoBuild, を導入しており、アプリケーションの構築とCI/CDワークフローを開始できます。
  • PowerBuilder はまた、GITやSVNなどのソースコントロールともネイティブに統合できます。 これにより、共通のバージョンのコードを共有したり、CI/CDのためにコードを取得したりすることが簡単になります。
  • ORCAScript 言語は、人の手を介さずにソースコントロール操作を行い、PowerBuilderのライブラリ、ワークスペース、実行ファイルを構築することを目的としています。

3. コードの検査

コード検査ツールは、静的な解析を行って欠陥を発見できます。

コードの各ブロックを一連のルールに照らし合わせてチェックし、セキュリティ上の脆弱性、バグ、保守性の問題を発見します。不具合数、深刻度による弱点が分類されるレポートが自動的に生成され、ビルドが配布に適しているかどうかを評価できます。

Visual Expert Visual Expertを使用する事により、PowerBuilderやDatabaseのコードを検査できます。

   

インストラクションレベルでの課題抽出l


ハイレベルな指標を備えたコードレビューダッシュボード

4. ビルドのテスト - 継続的テスト

継続的インテグレーションとは、検証作業と配布可能なビルド生成を自動化し、これらを可能な限り頻繁に行うことです。

テストはこのプロセスにおいて不可欠なステップであり、この目標を達成するためにはテストの自動化が必要です。各ビルドは徹底的にテストされ、自動的に生成された指標によって、ビルドが配布可能かどうかを評価できます。

なぜテストを自動化するのか?

もちろん、どのチームも製品をテストしています。
しかし、すべての配信には不具合が含まれています。

テスト担当者は、それらを捕まえるために努力しますが、手動でどんなに徹底的にテストしても、あるものは常に残り、あるものは再現されるのです。

テスト自動化ツールは、手動によるテストを補完し、テスト作業の効率と範囲を改善させる非常に効率的な方法です。

続きを読む: 自動テストの作成手順

テスト自動化タスク

テストの自動化は生産的か?

前世代のツールでは、テストの作成やメンテナンスに手間がかかり、生産性の向上という目的を達成できないという評判がありました。

それらは2つの戦略に基づいています。

  • テストを指定するスクリプトの開発 - 開発コストがかかります。
  • テストの動作を画面上に記録 - 作成は簡単だが、GUIの変更には強くないし、メンテナンスにもコストがかかります。

最新のツールでは、オブジェクト認識に基づく別のアプローチを提供しています。

  • コードをスキャンしてオブジェクトを識別
  • オブジェクトとアクションの種類(ボタンをクリックする、フィールドに値を入力する...)を選択して、テストアクションを定義します。スクリプトを書くよりもはるかに簡単で、コーディングのスキルはもう必要ありません。
  • オブジェクトが安定しているので、UIの変更にも強い。メンテナンス コストもテストを記録するツールに比べて格段に低いです。

この自動テストの例では、アプリケーションを起動し、認証方法を選択し、認証情報を入力して、ログインボタンをクリックします。

続きを読む

自動テスト VS 手動テスト

両者の戦略を重要なKPIで比較してみましょう。

  手動 自動  
精度 手動テストでは、人為的なミスが発生する可能性があるため、精度が低いと言われています。
自動化されたテストは、一貫性と信頼性があります。
生産性 たくさんの手動テストを実行するのは、時間とコストがかかります。自動化されたテストの方が早く効率的です。
何度でも繰り返し利用できるため、追加コストがかかりません。
テストの開始 手動テストの実行を即座に開始できます。
自動テストでは、テストとアクションを事前に定義するための予備時間が必要です。
柔軟性 手動テストは、より柔軟性があります。ランダムにテストを行ったり、非常に特定の分野でより深いテストをその場で即興で行うことができます。
自動テストはそうではありません。

自動テストは大きなメリットをもたらしますが、手動テストを完全に代替することはできません。

この2つのアプローチを、それぞれの状況に応じて賢く組み合わせることが、最良の戦略となります。

  • テストの性質と安定性
  • 自動テストの作成にかけられる時間
  • 継続的インテグレーション ワークフローの存在
  • ...

さらに進むと...

PowerBuilderのための自動テスト

AscentialTestを使って、PowerBuilderやPowerServerのアプリケーションのテストを自動化できます。

  • バージョン管理システム SVNとの統合。
  • 欠陥追跡によるJIRAとの統合
  • TFS、Azure、Jenkinsなどのサードパーティ製ツールを使ってテストを実行するためのコマンドライン。
  • Jenkins用のAscentialTestプラグイン