ソフトウェアテストとかUXとかドメインに対する今の理解

ツイートしていたらgoyokiさんとお話してた。
1
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

仕様とソフトウェアが一緒である事はある程度いけそうだけど、期待するUXとソリューションドメインが一致しているかどうかが問題なわけだよなぁ。。。

2012-09-27 01:54:19
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

UXとアプリケーションドメインのラインも微妙だけど、アプリケーションドメインをどうやって表現するか次第な気もする。検証可能な表現でなければいけそうだけど、それは誰が喜ぶのか。まぁアジャイルサムライに熱狂している人とかは喜ぶんだろうけど。

2012-09-27 01:56:14
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

やっぱりUXの静的モデル表現というか、ある程度プログラミング言語のようなというか、数学的な表現というかほしいな。

2012-09-27 01:57:12
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

GUIのないようななにかのライブラリだとしても、UXってちゃんとあるんだっていうのを今回のプロジェクトで改めて強く感じれたのがすごくよかった。僕はもっと勉強すべき。

2012-09-27 01:59:18
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

テストエンジニアの役割はやっと二つくらい見えてきた。高速にハッピーパステストをすることと、網羅基準を明確にした上でテストをすること。

2012-09-27 02:01:24
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

UX的な視点ってシナリオテストでよく聞くのだけど、たぶんUXを複雑なままに扱うから、そうなんだなって思った。で、テストでは対象を複雑なままに扱うことと、複雑度をさげて扱うことが求められているのかな。

2012-09-27 02:07:17
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

UXは複雑なままに扱うことの一つなのかもしれないけど、どこまでテストを共通化できるかは設計思想次第という気がする。

2012-09-27 02:07:21
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

結合テストで仕様への網羅度を考えると、Scalaで1k、Javaで4kだとしても、同じテストで済ませるのだろうか。最近そんなことを考えている。

2012-09-27 02:12:00
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

静的型付け函数型にしろ、オブジェクト指向にしろいかにテストが減ると言ってもそれは、コンポーネントテストレベルと、保守性からくる品質向上であって、結合テストレベルで保証したい内容が網羅されていることをソフトウェア自身が語っているわけでは決して無い。

2012-09-27 02:12:51
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

コンポーネントレベルでのバグの潜在数とかを考えると、たしかにScalaよりJavaのほうが高そうだけど、仮に、結合テストレベル以上しかテストしない環境ではどうすべきか?という場合はどうであろうか。

2012-09-27 02:14:29
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

ある意味で、結合テストレベル以上しかしないと割り切るのであれば、コンポーネントレベルでバグを如何に減らせる仕組みを増やすかなので自然とそういった言語を使わざるを得ない気がする。

2012-09-27 02:15:20
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

そして、弊社は自然と? F# を使っているということなのだろうか。

2012-09-27 02:15:40
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

UXがもしコンポーネントレベルで変わるとしたらなにがあるのだろうか?自分達がつくっているものがどうやって動くかという意味だとあまりない気もする。一瞬、jQueryのプラグイン機構はコンポーネントレベルでのUXかと思ったが、気の迷いだった。

2012-09-27 02:16:56
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

UXをそもそも細分化というか、観点毎に観察した経験がすくないので、それぞれがどういったドメインにあてはまるのか理解できていない的な。UXはユーザーを成長させるというところが、一番難しい気がしている。

2012-09-27 02:19:16
おしいれのぼうけん @osiire

@kyon_mm まだレベル分けが分かってないので教えて。例えば幽霊型で縛ると税込みの金額と税抜きの金額を足し算しちゃう不具合をコンパイル時に防げるわけだけども、そういう性質の保証はコンポーネントテストレベルなの?結合テストレベルなの?

2012-09-27 02:22:06
goyoki @goyoki

@kyon_mm 話が外れてるかもしれませんが、軽快さや滑らかさという操作性を実現するために、コンポーネントレベルで厳しい処理最適化を行うといったことはあると思います。コンポーネントレベルの品質がUX実現の選択肢を広げる感じです

2012-09-27 02:26:02
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@osiire Webアプリでざっくりと言うと、コンポーネントレベル=関数を直接呼び出すテスト、結合レベル=デプロイした状態で呼び出すテストです。

2012-09-27 02:28:07
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@osiire 性質としてはコンポーネントレベルで防いでいる訳ですが、顧客が触るのはWebのUIなのでそれが幽霊型かそうではないかは別になります。なのでコンポーネントレベルでの保証というのが僕の見解です。

2012-09-27 02:28:25
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@goyoki ですよね。僕もいま思いつくのは、パフォーマンスや設定系です。

2012-09-27 02:29:19
goyoki @goyoki

@kyon_mm あとプロセスを支える効果というのも大きいと思います。例えばコンポーネントレベルで保守性を確保すれば、評価→結果を元に改善、というUX等品質作りこみのフィードバップループを軽快に回せるようになります。コンポーネントレベルの品質が、UX改善プロセスを支援する感じです

2012-09-27 02:32:50
おしいれのぼうけん @osiire

@kyon_mm なるほど。分かりやすい。ありがとう!

2012-09-27 02:33:12
goyoki @goyoki

品質とその実現手段(コンポーネント設計など)の結びつけにはQFDやトレーサビリティマトリクスが定番だけど、それらの厳格な運用と、優れたUXの実現は対極的なイメージがある。QFDは活用されているかもしれないけど

2012-09-27 02:35:07
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@goyoki ですねですね。それで、僕は自動テストのピラミッドはあれは「開発者がやりやすいテスト」であって「ソフトウェア開発全体で目指すテストの数」ではないですよって最近いろんなところで言うようになりました。

2012-09-27 02:37:45
goyoki @goyoki

そもそもうちらの業界のトレーサビリティマトリクスは要求定義がしっかりできているのが前提だから、作って評価して改善するサイクルを何回も繰り返すフィードバップループとはあんまり相性良くない

2012-09-27 02:38:01