Ponicodeによる自動テストの自動化
10203 ワード
先週、私はこの不器用なユニットテストツールについて聞いたPonicode . それはあなたのコードから自動的にあなたの関数のテストケースを生成するAIとコンテキスト情報を利用します.この文書の時点で、Visual Studioのコード拡張機能として使用できます.
それは私の協同組合の仕事の用語や私の側のプロジェクトにされているかどうか、私は初期のキャリアを通してテストケースの適切な量を書いている誰かとして、私はこのスピンを与えたかった.自動テストを設定し、ランナーを設定すると、多くの時間を取ることができますし、手で主なタスクから私を邪魔するので、私はこのようなツールはどのように私のワークフローを改善することができます参照してくださいしたい.
The documentation ツールがどのように動作するかについての有益な情報を提供します.どの言語/構文が現在サポートされているか、そしてツールをインストールする方法についての情報です.
⚠️ 重要
コードを解析するためにPonicodeのサーバーに送信されます.Ponicodeチームは、それらに送られたプログラムコードのデータをどのように処理しているのかを明示的に述べていないので、私はこの時点で私のVSコードのインストールについてグローバルにPonicodeを無効にし、ワークスペースごとにそれを有効にするだけでした.特にあなたが機密プロジェクトで働いているならば、あなたは同じことをすることを勧めます.
Ponicodeをインストールした後、私は彼らが含まれているサンプルプロジェクトをチェックアウトしました.これは、提供された文字列が電子メールであるかどうかをチェックする簡単な関数であり、これまで非常にうまく機能しているようです.
私がこれまでに楽しむもう一つのものは、私のコードのためにテストケースを加えて、組織するためにグラフィカルなインターフェースを持つことです.生成されたリストからテストプロジェクトのいずれかをプロジェクトに追加できます.すべての追加されたテストケースはファイル名に書き込まれます
テストのために設計されますJest , これは私にとっての欠点ですMocha JavaScriptベースのアプリケーションをテストするには.Ponicodeチームは、彼らが彼らがツールを試すためにできるだけ多くの人々を得るために最初にJestと統合するのを選んだ彼らのブログについて説明します.[1] 完全に理解できますが、彼らが結局モカのような他のランナーの支持を提供するならば、それはまだ良いでしょう.
Ponicodeが彼らのサンプルプロジェクトの外で、そして、より現実のプロジェクトの上でどのように働くかについて見ましょう.私は、オープンソース側プロジェクトのいくつかをオープンして、Ponicodeがどれだけうまく機能するかを確認しました.Ponicodeは、この書き込みの時点でJavaScriptをサポートしていますので、私の反応、typescript、golang、またはPythonのサイドプロジェクトは動作しません.また、グローバルにエクスポートされた関数だけが現在サポートされています.つまり、クラス、静的メソッド、ゲッター/セッター、コンストラクタメソッドを意味しません.また、クラスインスタンス、コールバック、およびシンボルもサポートされません.[2] これはPonicodeはちょうど今のJavaScript生態系にかなり制限的になりますが、うまくいけば他の言語をサポートし、フレームワークはすぐに来るでしょう.
最近、オープンソースのアップデートをしてきましたAtom 私が作成し現在維持する拡張syntaxdb-atom-plugin . コードの機能の1つの部分、パーセント符号化検索条件のためにSyntaxDB APIは次のようになります.
前述のように、静的なメソッドは、この書き込みの時点で、残念ながらPonicodeでは動作しません.しかし、この静的なクラスは、いずれかの単一のエクスポートメソッドとしてとにかくオフになっているので、私はこれをリファクタリングすることができますうまくいけば、この記事のPonicode生成テストの現実世界の例を取得します.
ℹ️ ノート
リファクタの間、私は構文エラーを起こすたびに、Ponicodeはまだエラーを修正した後でさえ構文エラーによるテスト生成を実行できないことを私に通知します.私は別のタブに切り替えるには、この修正するためにスイッチする必要がありました.
リファクタを実行した後、私はPonicodeに私のためにいくつかのテストケースを生成することができました.
非常に良い!ここでは、文字列内の文字がURLエンコードされ、the Wikipedia article on percent-encoding , 私は、これらのテストの中で、期待通りに安全に使うことができます.
しかし、Ponicodeは完璧ではありません.hacka-news , の配列をとる関数がありますHacker News 記事ID、そして、ユーザーが要求した制限番号までそれらのIDのスライスを返します.
残念ながら、Ponicodeは
パラメータ名を
また、以前の例から% encode関数のパラメータ名を調整することで、Ponicodeをより良いテスト範囲を生成できます.
Ponicodeはまた、あなたのプログラムを起動する機能を提供し、入力と出力の機能を観察し、さらにテストケースを改善するためにこれらの観測を使用します.私はそれが現実世界のテスト開発のために非常に実用的であると信じていないので、私はそれを使用しないことを決めました、特にあなたがHacka Newsのようなライブラリ(例えばSyntaxDB Atomプラグインのような)で働いているならば、それは通常、直接起動されません、そして、Ponicodeランナーがこれらのプロジェクトの中でコードを実行するのを得るために足場コードを書くことを必要とします.
私の研究の間に、私はまたSylvain Leroy , この地域では私よりずっと経験があります.[3] 彼がツールのより重要な分析を提供して、さらにそれを改善することができるいくつかの素晴らしい考えを示唆するので、あなたはPonicodeについてもっと学びたいならば、私は彼の記事をチェックすることを勧めます.
全体的には、このアドオンは、私は簡単に物事を転がして取得するテストケースでplopすることができますだけで良いGUIフロントエンドとして、潜在的な可能性があります.しかし、ここでは、このアドオンが不足している場所は、ほとんどの無関係なテストケースを提供し、改善するための関数パラメータの微調整を必要とするように、AIの生成テストケースの結果です.これにもかかわらず、私はツールは、将来的に高品質のテストケースを生産する可能性があると信じています.最終的に、私は日々の開発者の仕事のためにこのツールを使用して自分自身を見ていないが、私はツールの将来の開発を見て興味がある-うまくいけば、より多くの言語サポート、よりアクセス可能な機能、およびより効果的なテストケースの生成.
[1] https://blog.ponicode.com/2020/08/14/jest-versus-mocha-which-testing-framework-for-you/
[2] https://ponicode.com/docs/using-ponicode/testable-functions
[3] https://sylvainleroy.com/2020/07/23/ponicode-my-feedback-and-a-mixed-overall-feeling-about-the-tool/
Cover Photo そばDigital Buggu からPexels
それは私の協同組合の仕事の用語や私の側のプロジェクトにされているかどうか、私は初期のキャリアを通してテストケースの適切な量を書いている誰かとして、私はこのスピンを与えたかった.自動テストを設定し、ランナーを設定すると、多くの時間を取ることができますし、手で主なタスクから私を邪魔するので、私はこのようなツールはどのように私のワークフローを改善することができます参照してくださいしたい.
The documentation ツールがどのように動作するかについての有益な情報を提供します.どの言語/構文が現在サポートされているか、そしてツールをインストールする方法についての情報です.
⚠️ 重要
コードを解析するためにPonicodeのサーバーに送信されます.Ponicodeチームは、それらに送られたプログラムコードのデータをどのように処理しているのかを明示的に述べていないので、私はこの時点で私のVSコードのインストールについてグローバルにPonicodeを無効にし、ワークスペースごとにそれを有効にするだけでした.特にあなたが機密プロジェクトで働いているならば、あなたは同じことをすることを勧めます.
Ponicodeをインストールした後、私は彼らが含まれているサンプルプロジェクトをチェックアウトしました.これは、提供された文字列が電子メールであるかどうかをチェックする簡単な関数であり、これまで非常にうまく機能しているようです.
私がこれまでに楽しむもう一つのものは、私のコードのためにテストケースを加えて、組織するためにグラフィカルなインターフェースを持つことです.生成されたリストからテストプロジェクトのいずれかをプロジェクトに追加できます.すべての追加されたテストケースはファイル名に書き込まれます
<file>.test.js
, どこ<file>
は、あなたがテストを生成しているファイルの元の名前です.テストのために設計されますJest , これは私にとっての欠点ですMocha JavaScriptベースのアプリケーションをテストするには.Ponicodeチームは、彼らが彼らがツールを試すためにできるだけ多くの人々を得るために最初にJestと統合するのを選んだ彼らのブログについて説明します.[1] 完全に理解できますが、彼らが結局モカのような他のランナーの支持を提供するならば、それはまだ良いでしょう.
Ponicodeが彼らのサンプルプロジェクトの外で、そして、より現実のプロジェクトの上でどのように働くかについて見ましょう.私は、オープンソース側プロジェクトのいくつかをオープンして、Ponicodeがどれだけうまく機能するかを確認しました.Ponicodeは、この書き込みの時点でJavaScriptをサポートしていますので、私の反応、typescript、golang、またはPythonのサイドプロジェクトは動作しません.また、グローバルにエクスポートされた関数だけが現在サポートされています.つまり、クラス、静的メソッド、ゲッター/セッター、コンストラクタメソッドを意味しません.また、クラスインスタンス、コールバック、およびシンボルもサポートされません.[2] これはPonicodeはちょうど今のJavaScript生態系にかなり制限的になりますが、うまくいけば他の言語をサポートし、フレームワークはすぐに来るでしょう.
最近、オープンソースのアップデートをしてきましたAtom 私が作成し現在維持する拡張syntaxdb-atom-plugin . コードの機能の1つの部分、パーセント符号化検索条件のためにSyntaxDB APIは次のようになります.
export default class PercentEncoder {
static percentEncodeChar(char) {
return '%' + char.charCodeAt(0).toString(16);
}
static percentEncodeStr(str) {
var result = '';
for (var i = 0; i < str.length; i++) {
result += this.isReservedChar(str[i])
? this.percentEncodeChar(str[i])
: str[i];
}
return result;
}
static isReservedChar(char) {
return reservedMap.has(char);
}
}
前述のように、静的なメソッドは、この書き込みの時点で、残念ながらPonicodeでは動作しません.しかし、この静的なクラスは、いずれかの単一のエクスポートメソッドとしてとにかくオフになっているので、私はこれをリファクタリングすることができますうまくいけば、この記事のPonicode生成テストの現実世界の例を取得します.
ℹ️ ノート
リファクタの間、私は構文エラーを起こすたびに、Ponicodeはまだエラーを修正した後でさえ構文エラーによるテスト生成を実行できないことを私に通知します.私は別のタブに切り替えるには、この修正するためにスイッチする必要がありました.
リファクタを実行した後、私はPonicodeに私のためにいくつかのテストケースを生成することができました.
非常に良い!ここでは、文字列内の文字がURLエンコードされ、the Wikipedia article on percent-encoding , 私は、これらのテストの中で、期待通りに安全に使うことができます.
しかし、Ponicodeは完璧ではありません.hacka-news , の配列をとる関数がありますHacker News 記事ID、そして、ユーザーが要求した制限番号までそれらのIDのスライスを返します.
var pruneResults = function(ids, limit){
var prunedIDs = ids.slice(0, limit);
return prunedIDs;
}
残念ながら、Ponicodeは
ids
and limit
平均値パラメータ名を
arrayOfIDs
and limitNum
結果は以下のようになります.また、以前の例から% encode関数のパラメータ名を調整することで、Ponicodeをより良いテスト範囲を生成できます.
Ponicodeはまた、あなたのプログラムを起動する機能を提供し、入力と出力の機能を観察し、さらにテストケースを改善するためにこれらの観測を使用します.私はそれが現実世界のテスト開発のために非常に実用的であると信じていないので、私はそれを使用しないことを決めました、特にあなたがHacka Newsのようなライブラリ(例えばSyntaxDB Atomプラグインのような)で働いているならば、それは通常、直接起動されません、そして、Ponicodeランナーがこれらのプロジェクトの中でコードを実行するのを得るために足場コードを書くことを必要とします.
私の研究の間に、私はまたSylvain Leroy , この地域では私よりずっと経験があります.[3] 彼がツールのより重要な分析を提供して、さらにそれを改善することができるいくつかの素晴らしい考えを示唆するので、あなたはPonicodeについてもっと学びたいならば、私は彼の記事をチェックすることを勧めます.
全体的には、このアドオンは、私は簡単に物事を転がして取得するテストケースでplopすることができますだけで良いGUIフロントエンドとして、潜在的な可能性があります.しかし、ここでは、このアドオンが不足している場所は、ほとんどの無関係なテストケースを提供し、改善するための関数パラメータの微調整を必要とするように、AIの生成テストケースの結果です.これにもかかわらず、私はツールは、将来的に高品質のテストケースを生産する可能性があると信じています.最終的に、私は日々の開発者の仕事のためにこのツールを使用して自分自身を見ていないが、私はツールの将来の開発を見て興味がある-うまくいけば、より多くの言語サポート、よりアクセス可能な機能、およびより効果的なテストケースの生成.
[1] https://blog.ponicode.com/2020/08/14/jest-versus-mocha-which-testing-framework-for-you/
[2] https://ponicode.com/docs/using-ponicode/testable-functions
[3] https://sylvainleroy.com/2020/07/23/ponicode-my-feedback-and-a-mixed-overall-feeling-about-the-tool/
Cover Photo そばDigital Buggu からPexels
Reference
この問題について(Ponicodeによる自動テストの自動化), 我々は、より多くの情報をここで見つけました https://dev.to/coteh/automating-automated-tests-with-ponicode-1k3nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol