ソフトウェア品質向上に向けた学習|Jenkinsと初めての自動テスト

今入っている勤務先の仕事で、Jenkins の構築を担当することになりそうだったので、Jenkins とは何ぞやというところを学ぶことにした。Jenkins について学ぶと、CIに関連して自動テストについての内容も扱っていたのでその地続きで自動テストについても学ぶことにしたので初心者向けの自動テストの書籍を1冊読んだ。

ソフトウェア品質に関連した書籍2冊の書評

「初めての自動テスト」で学べるテストのピラミッド

テストのピラミッドの考え方

初めての自動テストはテストのピラミッドという基本的なテストの考え方について学ぶことができた。テストを構成する3つの概念とは次の通りである。

  • 単体テスト
  • 統合テスト
  • UIテスト

上記3つのうち、単体テストが土台となって、統合テストが中層、UIテストが上層となる考え方である。上記全てを自動テストとして実装することができそうだったので、Selemium Webdriver など、もう少しテストスイートについては調べる必要があると思った。実際に使ったことがあるないに関わらず、興味がある領域については、とにかく学習して知ることが大事だよね。

また3つのテストについての切り分け方やそれぞれがどのように実装されるかのサンプルもRubyがベースではあったけど、サンプルが示されていたのでイメージを沸かせることができた。自分自身テストを書く機会があるとしたら、Node.js with TypeScript での実装に関するものになる可能性が高いと思うので、Jest の使い方などを含めてもう少し学んでいこうと思う。

テスト駆動開発の実践例

一番最後の章ではテスト駆動開発について触れられていた。電卓のプログラムを作る流れをテスト駆動開発で、テストを失敗させるところから、テストを成功させて、リファクタリングをしていく流れについて説明されていて、テスト駆動開発の進め方やメリットなどについてわかり易く理解できた。ソフトウェアテストについての知識はまだまだ浅いので、ソフトウェア品質の管理をするに当たって必要なこととして、もう少し知識を深めていくのが良いと感じたな。

「Jenkins」で学べるJavaにおけるCIの歴史

Jenkins の歴史

Jenkins を学んでみたけど、Jenkins 自体が Java のエコシステムの中に大きく関連したソフトウェアであるということが良く理解できた。私自身、Java の大規模プロジェクトに参画を始めたのは、昨年の秋頃からなので、そこから一気に習熟度が高まってきているものの、その断片的な知識を繋げる意味合いで今回読んだJenkinsは良かったと思っている。

Javaを用いた開発におけるソフトウェア品質に関する歴史やCIの歴史などを知ることができた。当書籍は2016年の書籍であり、少し古い本だったので、内容が役に立たないのではないかと心配をしていたのだけど、実際には歴史の勉強になって満足度は非常に高い。オライリーくらいの骨太な書籍の古い歴史書みたいな技術書を読むと、技術の歴史に触れることができるので、コンピュータサイエンスを大学で修めてこなかった方にはかなりオススメできる。私自身もそうだしね。

Jenkinsに代わる構成管理システムとしてのGitHub

現在、ソース管理としてGitHubを利用することが多いけど、GitHubのルーツはJenkinsなのではないかと感じるところが大きい。実際にGitHubActionsを利用して、CICDを構築することができるし、すごく手軽にそれらの環境を構築することができるところが今時だと感じている。

AWSで開発を行う場合には、Codeシリーズなどもあるけれど、それらを含めてJenkinsを立てるかどうかの判断をしていく必要があると思った。今回Jenkinsを実務で立てながら学ぶ機会があるけれど、実際に現状の勤務先では、JavaもGitHub Actions を使ってCIを実施しているので、多くの場合にJenkinsの役割は終えたのではないかと感じるところが結構大きいかな。それでも、選択肢としてはまだまだ現役だと感じるので、必要があればその時に対応できるようにしっかりと準備をしておきたいところだ。

ソフトウェア品質向上に向けて自動テストの学習を更に進めよう

ソフトウェア品質に対する考え方の部分は大手SI会社におけるのソフトウェア開発現場では大いに求められる領域だと感じたので、実際に自分自身が旗振りをした場合に、大手のお客様を納得させられるだけのスキルを今いる現場に照らし合わせて手に入れられるように勉強を進めていこうと思えた。

自分自身、ようやくここまで成長ができて、せっかく大手のSI会社で働けているので、今この経験を生かして、自分自身の会社での開発手法を確固たるものへとアップデートするべく日進月歩学習と実務の両面を通して成長するしかない!と思った。まだまだ時間をかけて階段を昇って行こう。

1冊読むたびに、次はこの本が学びたいと感じることが増えていくので、この連鎖を大切にしながらもう少し知識の隙間を埋めていこうと思えた。