QAに関する今一番の関心事
独りアドベントカレンダー5日目です。
早くも限界を感じつつありますががんばります。
お題
QAに関して今一番の関心ごとは何?その理由は?
お題の提供ありがとうございます!
基本的に興味があちこちに移っているので、本当に「今」一番になります。
関心事
QAに関する関心事なのかはわかりませんが、今は言語やアーキテクチャなどの開発技術です。
サービス品質や開発効率、テストについて考えるとき、これらによってかなり中身が変わります。
例えば、使っているプログラミング言語が静的型付か言語か動的型付け言語なのか。
言語仕様として担保される機能があったりしますし、気にしなければいけないこともあります。それだけでもテストすべき観点が変わりますよ。
例えばphpでは0から始まる数字は8進数に解釈される可能性があります。
Cであればgetsを使おうものならバッファオーバーフローを気にしないといけません。
これらは言語だけに限りません。
Railsなどのフレームワークなら(意図的に避けなければ)CSRF対策の実装を担保してくれますし、
docker上で動いていれば環境由来の不具合も未然に防ぎやすくなります。
加えてk8sで管理されていればオートスケーリングもできますしデプロイ事情も変わってきます。
さらには、アプリケーションを支えるものだけでなく、
アプリケーションそのもののアーキテクチャ(設計)によってもテスト内容は変わります。
例としてクリーンアーキテクチャであれば、
レビューで思想に則っていることを担保すれば依存関係についてが明らかになり、影響範囲がわかりやすいです。
フロントエンドがパーツ単位、コンポーネント単位で管理されていれば、改修漏れのリスクを減らせます。
(もちろん、それに伴う別のリスクも生まれます。)
やっている内容にもよりますよね。
機械学習を用いるのなら、データの品質を気にしなければいけませんし、
一言で機械学習といっても教師あり学習なのか教師なし学習なのか強化学習なのか、
目的も画像認識なのか自然言語解析なのかLSTMのような回帰を扱うのかで事情が全然異なります。
つまり?
改めて何が言いたいかと言いますと、
ソフトウェアを取り巻く言語やアーキテクチャやインフラ技術など、開発に関する知識がなければ見えないものが出てきてしまいます。
もちろん、それらを知らずとも別の手段でリスクヘッジすることも可能です。
ただ、より効率的にテストをするために、視界を広げるために、
こうした技術のことを知っていて困ることはありません。
(セキュリティ界隈なんて特に顕著ですよね、多分)
ある知識を深めたいときも、
地面の同じ穴に棒を刺して深くするより、ぐりぐりと周囲までほじった方が深く掘りやすいです。
同じある特定の技術の話でも、別のことを学んでまた戻ってくると違う見え方をすると思います。
何周も何周もぐりぐりとほじって知識を深く深くしていく必要があるのかなと思っています。
もちろん、これは技術に限らず、
世間の流行だったり、法律の知識だったり、業界のルールだったり、人の思想だったり、市場のことだったり、人間関係だったり、趣味だったり、
あらゆるところにいつか役に立つ可能性のある知識は転がっています。
常に意識を高く持って、知識として蓄えようとは思っていませんが、
深い知識も大事ですが、興味を広げてあちこち走り回ることも大事なのかなと思っています。
(すぐ変わる興味への正当化も兼ねて)