みんなで回帰試験を続けていくためにしていたこと

qiita.com

Adventに登録しようと思ったら、もう埋まっていたので?

Adventに登録しようと思ったら、もう枠が埋まってた。 (勘違いだったw 2019年のみてたのでエントリーさせてもらった、わーい) でも面白そうだったし、今の活動もなくなってしまうので、せっかくだから何か書いてみることに。

僕たちのチームでは、全員が毎日1日1時間、「ユーザーになったつもり」で回帰試験をするという取り組みを続けています。
とある地域では “忍者式テスト” と呼ばれているやつの一部です。

チームに入ってから約19年、毎日1時間、この回帰試験を続けてきました。


最初は何もわからないところから

初めのころは右も左もわからず、ただ決められた手順をなぞるだけの日々。
けれど、仕事を続けるうちに少しずつ仕様が理解できてきて、実装の意図や構造も見えるようになり、試験の内容も自然と深まっていた。

それと同時に、回帰試験の課題も見えてきたように思う。

  • 同じような試験を繰り返すことに飽きる人がいたり(自分自身もそう)
  • 増えていく試験シナリオで、リリースまでに回帰試験が終わらない
  • 実装に夢中で試験に参加しない人がいる

そうした状況の中で、途中から試験の作戦を考えたり、準備をする側に回るようになり、今日までいろんな試行錯誤をしてきました。 その試行錯誤の一部を書き留めておこうと思います。
いつか、どこかで、似たような開発現場にいる誰かのヒントになれば嬉しいです。


やってきたこと

  • 試験分割:担当者に負荷が偏らないよう、試験範囲を細かく分解する
  • カテゴリー整理:試験観点を分類して、回帰試験が期間内に終われるようにする
  • 回帰試験マシンの確保:いろんなバージョンやシステムの組み合わせが試験できるよう、安定したテスト環境を用意する
  • ペアテストの設定:知識が偏らないよう、定期的にペアで試験する仕組みをつくる
  • 試験時間の固定化:毎日決まった時間に試験することで、習慣化と負荷分散を図る
  • 試験時間の見直し:リズムのマンネリ化を軽減したり、試験のペアも見直して、リフレッシュする
  • 試験カテゴリーの評価と作戦決め:どの試験を厚めにやるか作戦会議する
  • 試験時間になったら声をかける:忘れないよう、ちょっとしたリマインドをする
  • 試験中に“燃料”を渡す:新しい視点や観点を共有し、試験の質を底上げする
  • 気になるテストシナリオを吹き込む:特に怪しいところを、意図的に試してもらう
  • バグが出たら人を呼ぶ:再現や影響範囲の把握のため、関係者をすぐ集める
  • 不具合を楽しむ:問題を別の方法でも再現できないか、周囲を巻き込んで取り組む
  • テストのやりにくさをヒアリング:試験環境の充実化、試験シナリオ手順の改善ポイントを拾い上げる
  • テスト中に声をかける:眠そうだったり、違うことをしていたら軌道修正を促す
  • テストの不安を定期的に伝える:開発の中で試験の大切さを共有する

嬉しい変化について

活動を続ける中で、周囲にも少しずつ変化が生まれました。

  • 最初は試験に消極的だった人が、いつの間にか率先して試験を進めてくれるようになった
  • 試験の大切さを、自分から周りのメンバーに伝えてくれる人が出てきた
  • 試験の進め方について、新しいアイデアをくれる人が増えた

みんな、すごい

もちろん、毎日全員が必ず試験できるかというとそうでもないし、他にも試験に関するさまざまな課題はたくさんありました。 でも、それでも前向き試験に取り組み続けてくれたメンバーがいたからこそ、この活動は途切れず続いてきたように思います。 誰かが声をかけ、誰かが支え、新しいアイデアが生まれ、それが積み重なって今の形になっていったと思う。

名前がついた取り組みというのは、外から見ると当たり前のように動いているように見えるけれど、その裏では多くの努力や工夫が積み重なっている。 簡単じゃないけれど、みんなで協力してやってきた偉大な活動だったと思います。


おわりに

この活動で積み重ねてきた時間や姿勢が、どこかでまた誰かの力になることを願っています。

RubyKaigi2023のこと

2022年の津のこと書いてない...
車で頑張って行ったのに、帰りはJune29載せてドライブしたのに...
そのうち、書くかな。バウチャーチケットよかった。津のまつもとさん、すごい!

 

Matsumoto
外国人がたくさんいたり、オフィシャルパーティーがあったり、マスクはあるけど、いつものRuby会議がもどってきて嬉しかった。
次は、Matzが松本にって駄洒落で終わった時から3年?4年?も経ったんだと思うとあれから色々あったなぁっと、松本市に着いた時に感慨にふけました。

Different from usual
チャックがいなくてさびしい。しかたないけど、さびしい!
10年ぶり?ぐらいに参加する中内さんと一緒に行動することが多かった。やっぱり、すごい。(怒られそうw)
オンラインの勉強会に参加してくれている若者をRubyKaigiに誘って、すこしだけお世話した。(楽しんでもらえたみたいでよかったな!)

 

Ordinarily
いつものようにはじめて参加している人や、外国から来たであろう人に声をかけるように努めてみた。今回はオフィシャルパーティーで一人だったTimさんと会いました。
英語で話しかけたら、上手な日本語で返事がきたのは、まるでマットさんのときのようだった。勢いについでにボルダリングにも誘ってしまいました。お相手してくれてありがとう!!!

Bouldering
2つ日目の夜に前日にお会いしたTimさんと登りにいきました🎵
エッジアンドソファー、いいジムでした。
登り始めていると、Ruby会議のシャツを着た人たちが合流してきて、まるでいつもの部活のようになってたwたくさん登った後はみんなで楽しく飲んで、これがRuby会議だなぁってことができたのが嬉しかったです。次は沖縄で登るよw

Session
心に刺さったお話がたくさんありました。(詳しく書くの余力ない・・・)

- Matzのキーノート
- 咳さんの発表
- 中嶋くんの発表
- Koicの発表
- ボクシング
- LTの修吾さん

RubyKaigi2023とても満喫しました、ありがとうございます。
松本、とてもいい街でした。

RubyKaigi2021のこと

キーボードキーボードキーボード

あと、そらはーがんばってた。

初日のトラブルからチャットのアップデートを最後までやってたのが印象的だった。去年と違いライブも半分ぐらいあって、臨場感がある分、会えない寂しさを増やした気がする。でも、こういう風に感じられるのも今年が去年よりも良いカイギだったからだったと思う。

 

Day1

ネットワーク障害?みたいなのがあったけど、みんな暖かく応援していてよかったな。でも、時間がずれたせいで咳さんのと、しおいさんのが録画になってしまった。残念。

お昼はハンバーガーたべた。Tシャツのせいだ。

 

TypeProf for IDE

https://rubykaigi.org/2021-takeout/presentations/mametter.html

最後のTRICKの宣伝もすごかったけど、こういうところに型付けを考えていたのかぁと。自分はずっと勘違いしてたのでやっと腑に落ちて、聞いてた。

 

JIT

https://rubykaigi.org/2021-takeout/presentations/k0kubun.html

ほんとは早かったJIT。あと、早口じゃなかった

 

The Art of Execution Control for Ruby's Debugger

https://rubykaigi.org/2021-takeout/presentations/ko1.html

蝶ネクタイがかっこよかった。(感想じゃない)

 

あとは午後ききたかったのだが、会社業務があって聞けなかった。

あとは、録画で見たもの

 

Toycol: Define your own application protocol

https://rubykaigi.org/2021-takeout/presentations/coe401_.html

はじめはなんだかわからなったけど、こういうの面白い!

すごく咳さんがほめてた。Rubyを楽しんでいる感じが伝わる発表だった。

 

dRuby in the real-world embedded systems.

https://rubykaigi.org/2021-takeout/presentations/m_seki.html

咳さんたちの発表。音声問題があって、いつもの感じにならなくて残念だった。

toRubyで再演してほしい。

 

Day2

2日目、やっと全開で参加できる。
お昼はビーガン弁当を思い出して食べてた。

 

The Future Shape of Ruby Objects

https://rubykaigi.org/2021-takeout/presentations/chrisgseaton.html

半分ぐらいしかわからなかったけど、なんかすごそうには聞こえた。

Shopifyの人たちたくさん発表しててすごいな

 

PRK Firmware: Keyboard is Essentially Ruby

https://rubykaigi.org/2021-takeout/presentations/hasumikin.html

キーボードキーボード!

Rubyモードがやりたい!

発表がロックですごくひびいてしまった。うっかり、キーボードをつくることに・・・

 

Parsing Ruby

https://rubykaigi.org/2021-takeout/presentations/kddnewton.html

Rubyの歴史をきいた。Newtonさん、かっこいい。

 

Graphical Terminal User Interface of Ruby 3.1

https://rubykaigi.org/2021-takeout/presentations/aycabta.html

沢登り2回目。

アメリカンデスロック?あたりから、どこみていいのかわからなくなった・・・

ただ、irbpreviewためしたんだけど、すごく使いやすくなってた。

 

Ruby Committers vs the World

https://rubykaigi.org/2021-takeout/presentations/rubylangorg.html

いつものグダグタきけてうれしかった。参加している感じを味わえる瞬間。

 

Day3

最終日、終わってみるとあっという間

 

Charty: Statistical data visualization in Ruby

https://rubykaigi.org/2021-takeout/presentations/mrkn.html

ライブコーディング。グラフ見やすいし、わかりやすくていい感じ。

 

Dive into Encoding

https://rubykaigi.org/2021-takeout/presentations/ima1zumi.html

永和のつよつよな人。シングルバイトの日本語すごい!

 

Beware the Dead End!!

https://rubykaigi.org/2021-takeout/presentations/schneems.html

一番記憶に残った発表。Dead End!

内容は半分もわからないんだけど、プレゼントしてかっこいい

 

10 years of Ruby-powered citizen science

https://rubykaigi.org/2021-takeout/presentations/matschaffer.html

マットさんの発表。Safecastの10年間の軌跡。

いろんなことをしているんだなぁっと、次会うときは中身のことをもっときいてみよう

 

Matz Keynote

https://rubykaigi.org/2021-takeout/presentations/yukihiro_matz.html

愛のある発表だった。

すごくよかった。

Rubyのお父さんらしい内容だったなぁ。

発表前にナッツ食べちゃダメ!

とちぎRuby会議09のこと

toruby.doorkeeper.jp

まだ、レポートが残っているけど、無事に終わってよかった。
あっという間に2週間も経ってた…
最後の最後まで調整しながらなのに、楽しんでくれた人もそれなりにいたみたいで、本当によかった。toRubyらしさを感じた人もいたし、来年はとちぎにいきたいって思ってくれる人がいたのがよかった。
普段はみんなが”とちぎ”にくることで”toRubyらしさ”に染まっていくような気がするんだけど、今回は自分たちで演出しないといけなくて、それが一番大変だったんだと思う。その場でしか味わえない空気とかインタラクションがきっとここにあるんだと思う。
いつもは肉体的な疲れがくるのに、今回はメンタル的なのしかなかった…
来年はふつうにできるといいなぁ。

RubyKaigi2020のこと

rubykaigi.org
松本行きたかったなぁ...残念だけど、中止になってしまったが、Takeoutとしてオンラインで行われた。

rubykaigi.org会社を休んで参加した。
丸々2日間、リビングに座り込んで参加した。
腰が痛い。
録画したものを見ながらyoutubeのチャットやtwitterなどで発表者も交えて議論や、質問のやりとりがその場で行われるのは新鮮だった。
ただ、臨場感は圧倒的に足りないし、会場の熱みたいなのを感じ取れないのはすごく寂しい。開催されるだけでも嬉しいことなのだけど、ギャップが大きすぎて、終わった後の虚無感が半端ない感じはした。
オンライン開催だから参加できた人もいただろうし、気軽に見れてよかったみたいな感想も見かけたけど、Kaigiは本当はもっともっとすごいんだよ!って言いたくなるような気持ちになった。
それだけ、毎年楽しみにしてたんだなぁっと改めて痛感するRubyKaigiだった。

ラズパイ同好会68回目

torpc.connpass.com
参加者は5人


事前に会場がとれず、オンラインのみで開催した。
場所もハングアウトからDiscordに変更して、自分のMacBook的にはすこし負荷が減った気がする…あと、こういうのは基本的には音声のみの方がやりやすい気がする。

勉強会ターン

今回はコンピューターが動く仕組みについての話。
トピックスとしては、
- 8ビットバイトについて
- 2進数と16進数の表記方法について
全員で読み合わせしながら進めた。次回はp.40から

実験ターン
前回やったことを振り返りした
上がった話としては、
- ラズパイのHAT作り
- モータードライバー周り
ラズパイを使った実験をもっとやりたいけど、話がまとまらなかった。次回はオフラインでもう少し詰めていきたい。

次回は9/27を予定しています



なるべく全体で仕事をするために

miwa719.hatenablog.com

むずかしいことはわからないけど、上の記事に関係していそうなことが普段の活動にいくつかあるのでメモを残しておく。

設計会議や、依頼、相談はチームメンバー全員の作業場所で行う
・なるべく会議室ではやらない
・関係者を絞らないようにする
・周りの人にも聞こえるようにする


並行に開発できるバージョンを絞る

・いまは3バージョンまでに限定している。
・新しいバージョンの話がきたら、どれか1つをやめるように計画変更
ナイトリービルド、回帰試験も並行するバージョンと合わせる

全員で作業する
・バージョンごとの設計会議にはしないようにする
・ストーリーも大抵複数人で行う
・バージョンも、機能も人で分けない
・周りから聞いた不具合や、新しい機能については周りに言いふらす

こんな感じなのかな?情報が別れるから、人や作業が別れるような感じがしている。なので、なるべく自分は日々起きる様々な情報が分かれないように大抵チームメンバーと同じ作業場で過ごしている。そういえば最近、別の人が途中まで実装して、試してって言われて、試したあとに実装を仕上げてコミットしたなぁ。こういうのも全体でやっているっていうのかな?