めっきり冷え込んできた今日このごろです。
年末年始は強い寒波に見舞われるということで、防寒や交通などには注意する必要がありそうです。

さて、最近では Selenium という名前はだいぶ世間に浸透しているのではないかと思いますし、実際にご利用になられている方も多いのではないかと思います。
この Selenium は、ブラウザ自動操作(automation)のためのツールスイートと説明されています。

automation といえば、MA(Marketing Automation) や RPA(Roboting Process Aumation)、SFA(Sales Force Automation) など、AI とも絡んで様々な自動化戦略がすすめられています。

そちらの難しい話はおいておくとして、Selenium はもともと Web アプリケーションのテストのために生み出されたものです。

ソフトウェア/システムのテストには様々な粒度があり、言語の関数やライブラリのレベルでは、JUnit に代表される XUnit テスティングフレームワークによってテストの自動化が普及しました。

最終的にできあがるシステムは、大抵は人が何らかの画面を操作して使うものです。この段階のテストでは、人が手作業でテストシナリオにそってシステムを操作して、期待した結果が得られることを確かめる、ということが一般的であったと思います。
しかしいかんせん人手で行われるため、見落としや、逼迫したスケジュールでの工数不足、リグレッションテストが省略される、といったことが現れてくることもあります。

Web アプリケーションも、HTTP リクエストを入力として HTTP レスポンスを出力する関数のようなものであるととらえ、HTTP レスポンスの内容を自動で検証すればよいという考えも生まれました。
その考え方に基づいて Cactus などのテスティングフレームワークが誕生しましたが、生の HTTP レスポンスに対しての検証となると、JavaSript が絡んできたときにテストしきれないため、あまり浸透しなかった印象があります。
機能の配置場所がサーバからクライアントにシフトし始め、RIA だのと言われ始めた頃とも重なるかもしれません。

そんな状況を踏まえてなのかはわかりませんが、Web アプリケーションでも「だったらブラウザを自動で操作して検証すればよい」ことを行うために、Selenium が登場しました。

このように、Selenium はテストのためのツールスイートなわけですが、ブラウザの自動操作は、テストのみならず何らかの作業効率の改善のために利用することもできます。