-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
スモークテストを導入したい #1301
Comments
このissueのステータスは |
何らかのリアクションをお願いします。 以下のいずれかだと反応しやすいです。
|
いわゆる「回帰テスト」ってことですかね。 いわゆるJTest的なことをインタフェース(UI、コマンドライン)に対して総当り的に行うのが理想なのかもしれないけど、クリック位置とか、再描画後の画面が正しく描画されているかとか、 であるならば、各ファンクション(出来たら全ファンクション)のカバレージが100%になるように、テストパターンを描いてそれを実行する(一部今やってる?)、修正のあるファンクションはテストパターンを書き換える。 んなかんじ? でもマルチタスク、マルチスレッドとか、結構条件再現させるの難しいのもあるよねー。 JavaScriptとかは簡易テストフレームワーク作ったりしたけど、 |
https://github.com/microsoft/WinAppDriver このへんかな、日本語入力とか弱いみたいだけど・・・ |
マクロを使ってサクラエディタの機能をいろいろ動かしてみるテストはやらないのだろうかと考えています。UI以外のテストならマクロを使えばいろいろ出来るだろうと思います。 |
やるっす。 具体的方法の説明をしていなかったですが、実現方法としてはスクリプトのホスト機能を最大限に活用することを考えています。方法的にUIテストは不可能です。 |
👍 最初はこんな感じのテストでもいいと思うんですよね。
これをやるだけなら sakura.exe 本体の修正は不要だと思っているのですが、ここで言っているスモークテストはどういう形でやろうとしているのかがまだよく分かっていません。 |
#1363 の第三段階テストも当初、開いた瞬間マクロで閉じるの形式にしていました。 できれば、外部コマンドの実行でなく単体テストに組み込んでしまいたいと思っています。 最大の理由は、単体テストのカバレッジが異常に低いのを補いたいからです。
スモークテストなので全機能を「動かす」が目標です。 サクラエディタにはGUI前提の機能(ファイルを開くダイアログとか)が結構あるので、sakura本体の修正なしには実現は不可能と思います。もっとも、sakura本体の修正を行わずにかなりのところまでイケるのは確かなので、初期のスモークテストはできるだけ本体を修正せずに実現したいと考えています。 #1363 の後半で色々いじってみたのは当初構想ではないです 😃 |
単体テストに組み込もうとした場合 採れる手段は、3つです。
判断を行うにあたり |
単体テストに組み込もうとしている理由は何でしょうか。カバレッジ測定? gcc だと |
測定することは目的じゃないんですが・・・そうです。 2桁を超えるカバレッジの提示により得られる「安心感」が目的です。
プログラム設計のやり方には、単体テストできる設計とそうでない設計があると思います。 サクラエディタは後者です。 単体テストできない設計のコードをテストするには、いろいろと工夫をする必要があります。この工夫を「無理をする」と表現してしまえば、確かにその通りだと思います。無理ではない工夫だと思ったのでやってみよう、の提案をしてみているわけですが(といいつつ、まだ具体的な中身の説明はできていませんけれど・・・。)
この辺の知見が欲しいんですよねw 現状のカバレッジが |
Vim では何年も掛けて整備してきたのでそれなりに説明は出来ます。(あくまでLinuxでの話ですが) 逆にVisual Studioではどうやってカバレッジを測定するのか把握していませんが…。 |
サクラエディタだと、かなり頑張って5割くらいが限界かな?と思っています。 5割を超えた先は「使ってないコードを削る」の作業になる予想で、
2% とか 15% とかいうのはvisual studioで測定した値です。 MSVC版のカバレッジツールの候補として次点は OpenCppCoverage かな?と思っています |
MinGW + codecov を試してみました。 k-takata@60b9b04 結果はこんな感じで見ることが出来ます。 |
ローカルで MinGW を使ってカバレッジを調べるには gcovr というツールを使うのが良さそうです。 インストール:
ビルド:
ビルドが終わると、 カバレッジ:
これで、coverage ディレクトリに HTML 形式のカバレッジレポートが出力されます。 |
これカッコいいですね。 ただ、検出された行数がgcovとvisual studioでだいぶ違うのがなんか気になりました。
なんでだろう・・・(最新masterで測り直したら4%でした。) |
|
ファイル単位でどういうところに差分が出ているか見ていくしかないですかね。 |
よくよく考えてみたら、vs2017のtotalってブロック数(≠行数)でした。
という1文に対し、2と数えるのがブロック数という単位と思われます。正確な定義は知らない・・・。 |
これはとても良さそうですね。CI でテスト実行を自動化はとても便利ですけど仮にそれがもし無理だったとしても、PRの作成者がローカルで実行してPRの説明にログファイルを添付するやり方でも問題無いと思います。ただし実行完了までに時間が掛かってしまうとそれをする気が失せてしまうので、量が増えてきたらテスト量を絞った簡易テストを用意した方が良いでしょうね。 |
この issue で語っているのは、似非スモークテストです。 構造的に単体テストできないコードを無理やりテストする手段としての全機能網羅ができないか?を話題にしていて、本物のスモークテストとは少し趣旨が違います。 ただ、バッチで実現するとスモークテストというよりはリグレッションテストに近い雰囲気のものになりそうです。 スモークテスト = なんとなく主要機能を動かしてみるテスト。 |
モチベーションが尽きたので閉じてしまいます。 #1394 |
再開します。 |
スモークテストって何だ?
スモーク
の名前が示す通りもやっとしたテスト
です。なんとなく今まで通り
を検証することを目的とします。単体テストと何が違うの?
内部仕様の妥当性
を検証するガラス張りテスト
です。操作と処理結果の妥当性
を検証するブラックボックステスト
です。スモークテストを導入すると何が嬉しいの?
なんとなく今まで通り
を検証できるようになります。スモークテストのダメな点は?
なんとなく今まで通り
の範囲に何を含めるかできっとモメます。タスクリスト
なんとなく今まで通り
の内容を固めて暫定シナリオを作る。道は長い・・・。
The text was updated successfully, but these errors were encountered: