Unit and Integration test for interconverting between "Code" and "Ruby" #46
takaokouji
started this conversation in
ADR (Any Decision Record)
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Unit and Integration test for interconverting between "Code" and "Ruby"
Sorry, this is written in Japanese.
ブロックとRubyの相互変換の自動テストの実装方針
現在、ブロックとRubyの相互変換の自動テストは、次の2つのファイルに記載している。
test/unit/lib/ruby-to-blocks-converter/*.test.jstest/integration/ruby-tab/*.test.js前者はいわゆる単体テストで、すべてがNode.js上で実行されて軽くて速いが、Rubyからブロックへの変換処理のみが対象なので、一部しかテストできない。
後者はいわゆるシステムテストで、テストコードはNode.jsだが、処理の実行はヘッダレスChrome上で行うため、重くて遅いが、ブロックとRubyとの相互変換処理が対象なので、全体をテストできる。
どちらの自動テストもメンテナンスし続けられればベストだが、作業時間が限られるため、現実的な方法で自動テストをメンテナンスしていきたい。
判断基準や制限
選択肢
決定
採用: 単体テストはエラーケースのみ、システムテストはそれ以外
各選択肢の良い点と悪い点
単体テストとシステムテストの両方を実装する
+単体テストでRubyからブロックへの変換処理のコーナーケースを高速にテストでき、システムテストで俯瞰的なテストができ、十分にテストできる-ブロックの内部構造を把握する必要があり単体テストの実装が難しく、時間がかかる単体テストのみ実装する
+単体テストでRubyからブロックへの変換処理のコーナーケースを高速にテストできる+システムテストを実装する必要がなく、作業時間が短縮できる-ブロックの内部構造を把握する必要があり単体テストの実装が難しく、時間がかかる-ブロックからRubyへの変換処理のテストを実装できず、デグレが発生する可能性が高いし、毎回、手作業でRubyへの変換処理のテストをする必要があるシステムテストのみ実装する
+単体テストを実装する手間がかからない+システムテストの実装そのものは簡単-コーナーケースを実装する場合にテストの実行時間が長くなってしまう。結果として、コーナーケースは最低限の実装になったり、実装しなかったりする単体テストはエラーケースのみ、システムテストはそれ以外
+エラーケースのみのRubyからブロックへの変換処理の単体テストは実装が簡単+システムテストでは、最も煩雑なエラーケースを扱わないことで、すべてのケースを実装する場合に比べて、実行時間が短くできる。想定では50%くらい違う。-Rubyからブロックへの変換処理の正常系のうち、コーナーケースのチェックが甘くなってしまい、細かい処理でデグレが発生する可能性があるBeta Was this translation helpful? Give feedback.
All reactions