2018/11/21開発の小池です。入社して1年が経ちました。ツクリンクの開発、テストとリリースの改善をメインにやっています。この記事は「ハンズシェア流スクラム開発の流れ」の補遺としてツクリンクの開発の中でテストをどんなふうにやってるのかを紹介する記事です。ツクリンクチームは、スプリントを固定し・スプリントを計画し・スプリントタスクをこなし・成果をレビューするというスクラムを半年ほどやってきました。その中で効率的にかつ安定してリリースするためのテストのやりかたを模索していて、最近はこんな感じでやってるよという紹介記事です。用語の使い方も一般的なものからチームでの独特なものに変わってきたので、それらをまとめ直したいと言う意図もあります。ツクリンク開発でのテストは大きく分けて3種類あります。実装時に記述する単体テストチケットごとにおこなう受け入れテストリリース前のリグレッションテストそれぞれについて、いつどのようにテストを作って実施しているか書いていきます。らしくありすぎてクセが強いですが、モックやスタブ、マッチャが強力なので気に入っています。メソッドを適切に呼んでいるかを書くという基本方針でやっています。レンダリング時のロジックを吸収するようにしています。とったカバレッジはこんな感じです。71%は低いと評価するか高いと評価するか微妙なラインですが、私はそこそこ優秀な数字だと思います。Decoratorは今後上げて行きたいとこですね。受け入れテスト受け入れテストは、ある変更が確かに実現されたかを確かめ、その変更の提案者に受け入れてもらうためのテストです。設計し・プログラマがコードを書き・プロダクトオーナーが受け入れる、というモデルで開発を進めています。この流れはチケットを軸にして進められ、またチケットが開発に必要な全ての情報を持つように努めています。あるチケットが実現されたかを確認できればその機能が実現されたことになります。モデル上ではプロダクトオーナーが受け入れるのが望ましいですが、チケットがちゃんと書かれていれば受け入れテストは誰でも行なえることになります。受け入れテストのテストケースは、基本的にはチケットのタイトルと同じになります。実際のチケットを見てみましょう:これは前回(2018-11-16現在)のスプリントで開発されリリースされたチケットの実際のキャプチャです。ご覧の通り、チケットのタイトルはユーザストーリーとして書かれているので、正常系はこれを実現できればOKになるはずです。正常系にいくつかのパターンが存在する場合や、細かいステップ、前提条件、エラー時の挙動などは適宜記述します。単体テストがすでにカバーしていることが多いです。単体テストではカバーできない部分が出てきます。このテストは結合テストとしての役割も担っています。リグレッションテストリグレッションテストはリリースの際にデグレード(既存の機能をぶっ壊すバグ)がないか確認することを目的にしたテストです。タスクとして実施されます。回のリリースタスクが消化されます。リグレッションテストでは、業務の要になる機能をユーザストーリーとして記述し、テストしています(本来はユーザがそのシステムでできることは全てテストするのが理想ですが、......)。リグレッションテストで使われるストーリーは毎回のリリースで同じものを使い、開発のなかでそれらのストーリーに変更があった場合、メンテナンスされます。受け入れテストの中で「これは業務の要になりうる」と判断されたものが追加されます。銀の弾丸(にはならないけど...)受け入れテストとリグレッションテストは手動でやるためコストが高いです。リグレッションテストはくり返し何度もやっていくことになるのでなかなかたいへんです。実際にブラウザを操作して動作の確認を行うことは機能を評価するうえでとても大切な工程です。対する適切な評価を下せなくし・また、精神もすり減ります。それと、テストは開発が進むにつれてどんどん増えていきます。時間が無限にあるなら、今までに書かれた受け入れテストは全てリグレッションテストとしてメンテ・実施されるのが理想です。テストでリグレッションテストをちょっとずつ置きかえています。リグレッションテストが完全に自動化されれば、リリースはよりすばやく安定して行われるようになるはずです。受け入れた瞬間即リリースというフローを目指しています。テストで結構辛いので、それについてはまた。ハンズシェアではテストを書きまくりたい(もしくは全く書きたくない)プログラマを募集しています。本記事は弊社の技術ブログからの転載(http://techblog.handsshare.com/?p=515)です。市場規模63兆円の建設業界の構造を変え、豊かな未来をつくるため、建設業マッチングプラットフォーム「ツクリンク」を運営しています。ITの力で建設業界の人手不足を解消する。建設業界で会社(発注)と会社・職人(受注)を結びつけるマッチングプラットフォームサービスです。63兆円(国内2位)という巨大な市場規模を誇る建設業は、私たちの生活に欠かせないインフラ産業であるにもかかわらず、「慢性的な人手不足と高齢化」が大きな課題となっています。「多重下請け構造」により”下請けになるほど中抜きで儲けが少ない”であったり、「アナログで限られた関係性からの受発注」により案件と人的リソースの不均衡が生じ”案件はあるけれど受注がない(逆もしかり)”といった、「慢性的な人手不足と高齢化」に加え、業界の慣習含め、これらの問題が今や社会課題となっています。私たちツクリンクは「産業構造を変え、豊かな未来をつくる」というパーパスを掲げ、テクノロジーを使ってこの社会課題を解決するため、事業運営をしています。建設業マッチングサイトとなっています。・建設業者様同士の交流会なども行いオンラインだけでなくリアルの繋がりを大切にしユーザーさんに寄り添ってサービスを開発しています。・代表の内山は約15年間建設業に従事。他メンバーにも元建設業従事者がいることがサービス優位性に繋がっています。・建設業界を壊すのではなく、寄り添い、押し上げながら、業界の幸せに向けて価値提供していく。いう本質的な視点で事業運営をしています。今後はマッチングだけでなく、契約や決済を簡単にできるようにしたり、建設業者さんの評価・スコアリングを行い、スコアリングに基づく周辺サービスの拡充など建設業界がより魅力的な業界にになることを目指していきます。フォローもっと見る同じタグの記事#開発もっと見る今週のランキングランキングをみるツクリンク株式会社からお誘いこの話題に共感したら、メンバーと話してみませんか?話を聞きに行きたい。