フロントエンド の QA(Quality Assurance) について、実施するとした際の、枠組みを個人的に考えています。
全くまとまらないですが、注入しておきたい枠組みとなりそうな考え方、使用するツール類等を記載しておきます。
考える動機
Sier 時代は、イントラネットの業務アプリばかり触っておりましたが、奇怪な UI、謎な UX な多かった気がします。
転職して、Web 界隈な背景を持つ人達と一緒に仕事をする機会に恵まれました。
触るアプリケーションの UI は、いい感じになり、もしかしたら良い UX かもしれないと思う機会にも多くなりました。
それに伴ってか、以下2点の問題を経験しました。
-
開発側で、UI の モックアップを受け取った後、フロントの意図を介さないものに仕上げてしまい、最終的なアプリケーションのフロントエンド品質が落ちる。
-
フロントエンドの納品物のモックアップ自体のクオリティが低い、そのままアプリケーションに組み込まれて、最終的なアプリケーションのフロントエンド品質が落ちる。
上記の品質落ちるポイントで、QAを設けて、品質が落ちるのを防げないかというのが動機です。
違う立場の人の意見
フロントエンドのコードの品質管理って案外デザイナー主導だったりして適当になってるケース多すぎる。フリーダムだとホント手がつけられなくなるから(白目
— 四代目 (@_4daime) 2017年6月13日
個人でやるとモチベーションに左右されるところはあります。
組織としての QAチーム
があると違うのかもしれません。
ECサイトの多くに品質管理の問題アリ、HTML文法エラーは99%に存在 https://t.co/7uF4HVCjZE いやー、でしょうね。システム開発系エンジニア(注:フロントエンドではない)は、HTMLを軽視する傾向があったからなー、前職だと。
— わくわくわっく (@wack746) 2016年3月10日
システム開発系エンジニア
は HTML を軽視していたり、単純に知らなかったりします。
参考
- Let’s talk about Front-End QA
Front-End QA について語られています。考える枠組みの記載もあり、参考になりそうです。
考える枠組み
-
アジャイルテストの4象限
アジャイルテストの4象限とテスト自動化のピラミッド - 野次馬エンジニア道
手動と自動、ビジネスとディベロップメント、チームを支援すると製品を批評する テストについて -
グロースハック
グロースハックとは何か 〜グロースハックをマスターするための究極のガイド〜 - VASILY GROWTH HACK BLOG
グロースハックを実現するための要素が、フロントエンドQAのチェック項目になる?でしょうか?
フロントエンド QA の 第3象限 テストにグロースハック観点を注入? でしょうか?
Webサービスの非機能要件にグロースハック観点でしょうか? -
ユーザーストーリーマッピング
ストーリーマッピングをはじめよう | ドナ・リシャウ, 高崎 拓哉 | 工学 | Kindleストア | Amazon
これも、フロントエンド QA の 第3象限 テストに観点を注入? でしょうか?
Webサービスの QA としての観点な気もします。 -
SQuBOK
SQuBOK(R)-ソフトウェア品質知識体系ガイド/日科技連|ソフトウェア品質|SQiP研究会
フロントエンド の QA としては重すぎるのかもしれませんが、ソフトウェアの品質枠全貌の理解を助けるものな気がします。 -
PMBOKの品質マネジメント頁
プロジェクトマネジメントスキル 実践養成講座(5):後で後悔しないための品質マネジメント (1/2) - @IT -
人間中心設計
ユーザー中心設計 - Wikipedia -
軽量品質保証
軽量品質保証 - Lightweight Quality Assurance In Software Development- - >& STDOUT
『軽品質』というモノ | 猫珠求聞史紀
開発は時間が限られていることが多いです。
その中でできることをやる 軽量品質保証 フロントエンド は注入しておきたいです。
以下、SQuBOK の文献へのリンクになります。 -
テスト自動化の8原則
テスト自動化の8原則 - テスト自動化研究会
フロントエンド QA に 自動化は付きものです。自動化のスコープ決めに8原則が役に立ちます。
フロントエンド QA の カバーする領域
楽天 の 求人情報として、興味深い記述がありました。以下抜粋します。
最新のフロントエンド技術を活用し、全社のサービス品質の向上と開発/運用コストの削減を推進するポジションです。
楽天が提供する様々なサービスに対して、フロントエンド領域の品質を向上、保証するためのテスト計画の策定、実施、並びにテストの効率化と自動化の推進を行います。 カバーする領域は、フロントエンド技術全般、デザイン、デバイス/ブラウザ互換性、SEO、Web 解析、アクセシビリティ、パフォーマンス、セキュリティ等多岐に渡ります。フロントエンド技術とテストに関する幅広い知識と経験を生かし、効率的に検証を行なっていく職務です。 検証体制や運用ルール等の構築だけではなく、最新の技術を活用して仕組み化、自動化を行い、全社に横展開していく戦略立案とそれを実施する役割も求められている、非常にチャレンジングなポジションです。
カバーする領域を抽出します。
カバーする領域
領域 | 説明 |
---|---|
HTML | フロントエンド技術全般を細分化 |
CSS | フロントエンド技術全般を細分化 |
Javascript | フロントエンド技術全般を細分化 |
フォント | フロントエンド技術全般を細分化 |
画像 | フロントエンド技術全般を細分化 |
デザイン | デザインにサービス要求が反映されているか |
デバイス互換性 | スマートフォンやPC、タブレットでの動作保証 |
ブラウザ互換性 | chrome、firefox、ie、opera、etc.. |
SEO | GoolgeBot、BingBot、Yandex、etc.. |
Web 解析 | 効果測定、Web解析可能か |
アクセシビリティ | バリアフリーとか |
パフォーマンス | HTMLのレスポンス後>ブラウザでで描画されるまでのパフォーマンス |
セキュリティ | 脆弱性に対する評価、チェック |
フロントエンド QA の実施の流れ
-
サービス要求のに合わせて、QA 観点抽出する。
サービスによって、特性、要求は異なるので、それに合わせて QA 観点を抽出します。
カバーする領域
を元に静的テスト、動的テストの観点を決めていきます。 -
UI モックアップの完了時点で、モックアップに対するテストを実施(静的テスト)
モックアップの作成が完了した時点で、フロントエンド Lint ツールで静的テストを実施します。 -
バックエンド、フロントエンドの初期統合時に、開発サイドへフィードバックするテスト実施 (静的テスト、動的テスト)
QA テスト前の手戻りを少なくするため、バックエンド、フロントエンドの初期統合時に開発サイドに、テスト観点をフィードバックします。1 -
開発テスト完了後、QA テスト実施 (静的テスト、動的テスト)
QA の評価として、開発テスト完了後に QA テスト実施します。2 -
リリース後のサイト監視
監視ツールで定期的にサイトを監視して、改善点を洗い出します。 -
1.-5.
の繰り返し
ツール類
チェックリスト
フロントエンド全般
-
Webサイトの品質をアップさせる99のチェック項目 | ベイジの社長ブログ
サイト制作会社側からの立場のチェック項目。社名等、文言表記についての記載があります。
確かに観点としては、必要な気がしました。 -
Webサイト品質管理のチェック項目リスト | 人手に頼らないWebサイトの戦略的品質管理指南 | Web担当者Forum
ページ制作時、サイトメンテナンス時、ユーザ側の立場でのチェック項目が記載されています。 -
フロントエンドチェックリスト(日本語訳) - Qiita
個人的な脳内のフロントエンドチェックリストが具現化されていました。 チェックリストを眺めることが勉強にもなります。 -
thedaviddias/Front-End-Performance-Checklist: 🎮 The only Front-End Performance Checklist that runs faster than the others
パフォーマンス観点のフロントエンドチェックリストです。
Web セキュリティ
フロントエンド、バックエンド問わず、アプリケーションのセキュリティ全般に対するものかと思います。
-
Webデベロッパのためのセキュリティ・チェックリスト | プログラミング | POSTD
POSTDで公開されているセキュリティチェックリストです。 -
セキュリティ実装 チェックリスト
IPA の実装チェックリストです。 -
OWASP Proactive Controls 2016の日本語訳を作成しました | セキュリティ対策のラック
OWASP Top 10 の脆弱性を作り込まないための事前対策ガイドラインの説明文書です。
モバイルサイト
- ブログでアフィリエイト収入を得たいなら必見!Googleが調査したスマホサイトで重要な25項目 | らふらく^^ ブログで飯を食う
Google Partner になると、ドキュメントでダウンロードできる 25 の チェック項目
チェクツール
全般
- ツールへのリンク集
2017年のフロントエンドエンジニアならこの程度は知ってて当然だよな? - Qiita
ここを起点に、様々なフロントエンド関連ツールへ辿り着くことができます。
モバイル
- モバイル フレンドリー テスト - Google Search Console
適切なモバイル対応をできているか確認する
セキュリティ
-
OWASP Zed Attack Proxy Project - OWASP
Web 脆弱性検証ツール -
Observatory by Mozilla
Mozilla の Web ベース脆弱性検証ツール OWASP ZAP よりも簡単に使えるかと思います。
サイトパフォーマンス
-
Page speed insights
Google の提供するサイトのスピードチェックツールです。Lighthouse ベースにリニューアルされました。 -
Sitespeed.io - Welcome to the wonderful world of Web Performance
サイトスピードの監視、及び、チェック項目に対するスコアが算出されます。
個人的にフロントエンド QA の継続的な Lint の軸に使おうかと思います。
SEO
- SEO Tools, Software and Articles | SeoSiteCheckup.com
アカウントなしで、1日に1回だけチェックができます。 何もしないよりは良いかなと思います。
DeadLink の チェック
- Wget で簡単リンク切れチェック - ころく
Wget で 404 エラーをチェックする。
公開されたサイトに対する Lint
個人的には、最終的なアプリケーションに対して Lint をかけたいのです。
URLベースで実行でき、Lint レポートが出力されてCIで実行できるツールが、QAのチェックとしては使いやすいのかなと思います。
-
sonar’s online scanner
sonarqube ではなくてsonar
です。 web lint tool、コマンドラインでの実行も可能です。
html の lint は 今のところできないようです。- 追記
sonar
からweblint
という名前に変更されました。
- 追記
-
WebPageTest - Website Performance and Optimization Test
パフォーマンスの計測ツールですが、パブリックインスタンスだと公開サイトのみチェック可能なので、こちらに記載します。
G Suite を使用しているのであれば、uknmr/gas-webpagetest を使うと計測が自動化できます。
ローカルファイルに対する Lint
構文系の静的解析だと URL ベースでできるものが少ないようです。
curl
コマンドや、wget
コマンドで実アプリケーションから、HTMLを取得して、取得したファイルに対してチェックする流れになるのかと思います。
3
-
groupe-sii/sonar-web-frontend-plugin: Sonar plugin to add metrics for web technologies (JS, CSS, HTML, SASS, AngularJS…)
SonarQube の フロントエンド Lint plugin 最新 version だと動かないようですが、少し古い version だと動作します。 -
yaniswang/HTMLHint: A Static Code Analysis Tool for HTML
HTMLHint url 指定でもコマンドは実行できるようです。 -
zrrrzzt/html-validator-cli: CLI for validating html using validator.w3.org/nu
これは URL ベースで html validator を実施できます。 -
Lighthouse によるウェブアプリの監査 | Tools for Web Developers | Google Developers
Chrome の Audits で Lighthouse によるチェックができます。
これだけでも、Performance、PWA、Best practices、Accessibility、SEO 観点でのチェックができるので、基本構文に対するチェックは別途必要だと思いますが、それが済めばこれで大体の観点のチェックが可能です。
アクセシビリティ
アクセシビリティのチェックツールについて記載します。
- axe - Chrome ウェブストア
Chrome plugin が 日本語化されて使いやすくなりました。
WCAG に対して準拠しているかどうかをある程度チェックしてくれるツールです。
テキストの文書に対するLint
HTMLに対して、使える文書校正 textlint
、Redpen
が個人調べで存在します。
ルールをカスタマイズしていけば、技術文書ではない文書校正に使用できるのかと思います。
今後実施したいこと
-
実施の流れ
の詳細化とツール類のマッピングをしてみる。 -
軽量品質保証
としてのガイドラインのようなものをまとめてみる。 -
気になるツール類を試しに使ってみる。
以上です。
コメント