web-dev-qa-db-ja.com

下位互換性テスト

ソフトウェアライブラリの作成者は、以前のバージョンとの下位互換性をどのように確認できますか?

依存関係管理(ここでは:Maven)を使用する場合、私の依存関係の複数のバージョンを(推移的に)使用できます。

com.example:some-project:jar:1.0.0
+- com.example:my-library:jar:1.1.0:compile
+- org.example:another-library:jar:1.0.0:compile
   \- com.example:my-library:jar:1.0.0:compile

ご覧のとおり、some-projectは直接my-libraryを使用していますですが、古いバージョンではanother-libraryの推移的な依存関係でもあります。 Mavenにはバージョン1.1.0が含まれます( 依存関係メディエーション を参照)。異なるマイナーバージョン間の下位互換性を確保したいので、これが機能することが保証されます(1.0.0から1.1.0への誤ったAPIの変更はありません)。 。

互換性を確認するための一般的な方法はありますか?私が考えることができるのは、そのようなシナリオを構築してそれらを実行しようとするある種のスモークテストスクリプトです。

1
Matthias

このようなシナリオでは、バージョンXのインターフェイステストを含む別のプロジェクトを作成します。バージョンXがリリースされると、このテストプロジェクトは実質的に読み取り専用になるはずです。

Xと下位互換性のあるバージョンX + 1を作成する場合は、プロジェクトが実際にライブラリのバージョンX + 1を取得するように、バージョンXのインターフェーステストを再実行します。ライブラリに下位互換性がある場合でも、すべてのテストに合格するはずです。