こんにちは!東京品質保証部の中園です。
サイボウズではサマーインターンを8月から9月にかけて3回開催しました。今回は、サイボウズ サマーインターン報告その2と題して、2回目のサマーインターン 品質保証・セキュリティコースの内容をお届けします!
前回の記事: blog.cybozu.io
インターンの概要
2回目のサマーインターンは、8月22日~26日に開催しました。品質保証・セキュリティコースには、5名の学生が参加してくれました!
本コースは、サイボウズで行っている実際の品質保証・セキュリティの業務を体験し、品質保証業務を知ることを目標としました。5日間で業務の体験と、それに先立つ体系的な講義を用意しました。
スケジュール:
ほぼ日替わりで、各業務の体験を行ってもらいました。5日間という短い期間ということもあり、かなりタイトなスケジュールでしたが、インターン生の皆さんは頑張ってついてきてくれました。
製品テスト
製品テストのターンでは、サイボウズ製品のテストとしてkintoneのテストを体験してもらいました。
kintoneのアプリには、レコードの一覧画面で先頭行を固定表示する機能があります。この機能を題材とし、kintoneのQAがやっているテストプロセスの一部、テスト設計→レビュー→テスト実施を体験してもらいました。
実際の機能仕様書を見ながら、kintoneのQAが利用しているExcelのテスト仕様書テンプレートに沿ってテスト設計を行いました。条件の洗い出しや、設計のコツをメンターが教えながら、テスト設計を進めてもらいました。どのくらいの粒度で設計すればよいかなど、悩みながらもなんとかテスト仕様書を完成させてくれました!
出来上がったテスト仕様書をインターン生同士で交換し、テスト設計レビューを実施しました。テスト設計レビューでは、抜けている観点が無いか確認したり、分かりにくい手順があれば指摘をします。レビュー完了後、テスト仕様書をもとにテストを実施してもらいました。
また、不具合発見時の報告を体験するため、kintoneのアドホックテストも実施しました。機能はアプリのフォーム設定画面に絞り、不具合を見つけ、報告してもらいました。いくつかのkintoneの不具合を見つけることができ、品質の向上に貢献してくれました!
セキュリティテスト
サイボウズ製品のガルーンを対象として、セキュリティテストを体験してもらいました。今回は、次期バージョンで新しく追加される機能の一部の検証を実施しました。
まず初めに、セキュリティテストに必要な知識の講義を聴講します。講義が終わり、実際のセキュリティテストに入っていきます。最初に行うのはテスト設計です。製品テストと同様に機能仕様書を見ながら、ガルーン の新機能がどのようなものかを把握していきます。
テスト仕様書を読んだだけでは、追加された画面でどのようなリクエストが発生するかはわかりません。メンターからアドバイスを受けつつ、実際の環境を触ってリクエストを洗い出します。慣れない作業に苦戦しながらも、みなさん無事にテスト仕様書を完成させました。
次に、実際の検証作業を実施してもらいました。どのような手順で確認すればよいか・脆弱性の場合どのような挙動になるか・脆弱性ではない場合どのような挙動になるかをkintoneアプリにまとめています。アプリを参考に検証を進めてもらいました。
リクエスト・パラメーターそれぞれに対して網羅的に検証し、まだ社内の検証で検出していなかった脆弱性を見つけてくれたインターン生もいました。
見つけてくれた脆弱性:新機能でユーザー設定を追加する処理にSQLインジェクションの脆弱性(CVSS v3 基本値:2.7)
※ 開発中バージョンの新機能です。すでに改修済のため、お客様がご利用の製品版には影響ありません。
脆弱性を見つけるのは地道な作業の繰り返しである分、脆弱性を見つけられた方はとても嬉しそうでした。2回目のインターンでは、以下のような脆弱性を探してもらいました。
- クロスサイト・スクリプティング(XSS)
- SQLインジェクション
- CRLF Injection
- 情報漏洩
- 不適切な認証
- クロスサイトリクエストフォージェリ(CSRF)
- Session Fixation
- ログインの不備
「自身の管理外のネットワーク / コンピュータに今回学ぶ技術を使った行為をしないこと」は、インターンで学んでもらったことの中で最も重要です。
不具合情報公開サイトの運営
サイボウズでは、製品を利用しているお客様や、サイボウズ製品を取り扱っている営業パートナー様に向けて、製品の不具合/脆弱性/制限事項に関する情報を不具合情報公開サイトで公開しています。
今回は「不具合」と「脆弱性」の2種類の記事を、ガルーンを対象として作成してもらいました。
不具合記事では、まず、社内の検出情報をもとに不具合を再現させ、再現手順と発生する現象を把握しました。次に、その不具合が再現するバージョンや影響範囲を動作確認で洗い出しました。記事作成に必要な情報が集まったら、読者が読みやすく、検索しやすい言葉で記事を書くための執筆ルールに沿って記事を書いてもらいました。
脆弱性記事では、不具合記事と同様に動作確認を行ったうえで、脆弱性用の記事フォーマットに沿って記事を作成してもらいました。脆弱性記事の場合は、脆弱性の脅威をお客様やパートナー様へ正しくお伝えすることも大切ですが、記事が脆弱性攻撃に利用されることのないよう情報の公開粒度にも配慮する必要があります。この点に注意しつつ、記載する文言を推敲してもらいました。
不具合も脆弱性も、インターン生一人ひとりが違う現象の記事を担当し、再現バージョンの洗い出しのコツや、記事構成の仕方等についてメンターからアドバイスを受けながら進めてもらいました。
最後に仕上がった記事をメンターとインターン生全員で確認し、良かった点やもう少し工夫した方がよい点をメンターがフィードバックしました。
インターン生の感想
インターン生の感想を一部ご紹介します。満足度の高いインターンだったようです!
5日間本当に楽しく過ごせました。職場の雰囲気も良く、初日からあまり緊張せずに行うことができました。仕事でも、本当にやっている仕事の一部を体験させてもらえたようで良い経験になりました。昼ごはんの時や懇親会では、社員の方や他のインターンシップ生と交流を深めることができて良かったです。もう一度行きたいと思えるインターンシップでした。
全てのプログラムが実際のQA業務とほとんど同様の事を行うため、普段では味わうことのない体験をすることができました。実際の製品を用いて、脆弱性や不具合を見つけるなどの業務を行えるインターンは他にはなかなか無いので、本当に参加して良かったと思います。
品質保証とは何かについて講義や業務を通して知ることができ、いい経験になりました。また品質保証のなかでも製品テスト、脆弱性検査、不具合情報公開サイトの運営など様々な種類の体験が行え、とても充実した5日間でした。
5日間のインターンシップの間では、サイボウズさんの文化や理念に触れながら、実務をすることができました。実務では、業務の大変さや難しさ、責任の重さを体感することができ、会社の方を通してサイボウズという会社についてもより知ることができたので、大変貴重な体験になりました。
最高の5日間でした。何より、同じ目標を持てる人たちに出会えたことは、大きいと思います。この5日間の経験を今後活かしていきたいです。
まとめ
5日間という短い期間でしたが、インターン生の皆さんはサイボウズの品質保証について沢山学んでくれました!また、サイボウズの会社の雰囲気も知ってもらえたようで嬉しく思います。
優秀な学生さんたちに出会えて、メンターとしても大変良い刺激をもらいました。インターン生の皆さんの今後の活躍を期待しています。