AGESTのブログ - TECH PLAY

TECH PLAY

AGEST

AGEST の技術ブログ

å…š487ä»¶

はじめたしおTMです。私は普段ナヌザヌ受入テストの蚭蚈、実装、実斜たで䞀通り行う業務を担圓しおいたす。 この蚘事では、テスト分析・蚭蚈ずいったフェヌズで、Chat GPTがどの皋床掻甚できるのか実際に詊したプロンプトず、埗られた回答を玹介したいず思いたす。 AIにテスト蚭蚈をさせようず思った理由 生成AIであるChat GPTを掻甚するこずでテスト分析・蚭蚈が楜になるのでは 人間が考えた事ず同じ事ができるか 今回AIを䜿っお行なったこず テスト分析においお人間が抜出したテスト芁玠ず同じレベルでAIがテスト芁玠を抜出できるかの怜蚌 人間がテスト蚭蚈し、同じようなアりトプットをAIが出力できるかの怜蚌 ChatGPTがテスト分析・蚭蚈できるのかできないのかに぀いお先に結論を申し䞊げたすず、今回の怜蚌では分析はある皋床䞊手くいきたしたが蚭蚈では埮劙な結果になりたした。 䞊手くいったずころだけ玹介したいずころですが、䞊手くいかなかったずころも参考になればず思いたす。 環境 SlackGPTAPI AGESTではSlack経由でChatGPTのAPIを利甚できる環境SlacGPTが提䟛されおいるので、こちらを利甚しおいたす。 API版はWeb版ず異なりモデルのトレヌニングや改善には原則䜿われないサヌビスです。 API data usage policies テスト分析・蚭蚈をおこなう察象 AIにテスト分析・蚭蚈をおこなっおもらう察象ずしお、架空のECサむトのコンテンツ暪断型ポむント還元キャンペヌンを蚭定したした。 〇開催期間7月25日火17:00〜8月7日月23:59 〇キャンペヌンぞの参加方法 ・キャンペヌンに参加するためには、゚ントリヌが必芁です。 ・ログむン埌、特蚭ペヌゞ内の゚ントリヌボタンから゚ントリヌができたす。 ・キャンペヌンの開催期間䞭に発生した賌入サヌビスご利甚であれば、゚ントリヌ前の賌入サヌビスご利甚もキャンペヌンの察象になりたす。 〇キャンペヌン内容 ①ポむント倍率最倧50倍ABCのサヌビスを耇数ご利甚でポむントアップ 2サヌビス以䞊のご利甚でポむント倍率が15倍になるほか、3サヌビス以䞊のご利甚でポむント倍率が5倍ず぀䞊昇したす。期間䞭9サヌビス以䞊ご利甚でポむント倍率が50倍になりたす。 ※キャンペヌン期間䞭に1サヌビスあたり500円皎蟌以䞊のご利甚が察象になりたす。 ※ポむント倍率アップに最適な商品ずしお、500円皎蟌で販売する商品も倚数ご甚意しおいたす。 ②土日限定ポむント倍率+10倍 「ABCポむント還元祭」期間䞭の土日にサヌビスをご利甚いただくこずで、ポむント倍率がプラス10倍になりたす。 ※察象期間7月29日土、7月30日日、8月5日土、8月6日日 ③ABCゎヌルド䌚員限定ポむント倍率+5倍 ABCゎヌルド䌚員限定で、ポむント倍率がプラス5倍になりたす。 ※キャンペヌン期間䞭にABCゎヌルド䌚員に登録しおいお、か぀還元ポむントの集蚈日である9月15日金たでゎヌルド䌚員に登録しおいるこずが条件です。 ※キャンペヌン期間䞭から集蚈日たでに䞀床でも解玄された堎合は、集蚈日にABCゎヌルド䌚員に登録しおいおもポむント付䞎の察象倖ずしたす。 ※キャンペヌン期間䞭であっおもABCゎヌルド䌚員登録前の賌入分は、本斜策のポむント付䞎察象倖になりたす。 ④3日間限定察象カヌド決枈によるポむント還元 8月1日火8月3日朚の3日間限定で、察象カヌドによる決枈額の合蚈に応じたポむント還元を行いたす。 【ポむント還元率】 ・10,000円以䞊30,000円未満の利甚で8%還元 ・30,000円以䞊50,000円未満の利甚で10%還元 ・50,000円以䞊の利甚で12還元 〇察象サヌビス䞀芧 ・ABCトラベル ・ABC保険 ・ABC倖囜語 ・ABC蚌刞 ・ABCミュヌゞック ・ABCカヌシェア ・ABCTV ※レンタル・賌入のみ察象、月額料金は察象倖 ・ABCアミュヌズメント ・ABC通販 ・ABCコミックレンタル 〇泚意事項 ※クヌポンを利甚した堎合は、クヌポン利甚埌の決枈額を察象ずしお還元ポむントを蚈算したす。 ※ABC保険での取り扱い商品の䞭には、䞀郚キャンペヌン察象倖の商品がありたす。 ※その他の泚意事項に぀きたしおは、特蚭ペヌゞをご確認ください。 テスト分析においお人間が抜出したテスト芁玠ず同じレベルでAIがテスト芁玠を抜出できるかの怜蚌 テスト芁玠の抜出人間 テスト分析では、たずステヌクホルダヌにヒアリングしお䜕を芋お欲しいのか確認したす。 以䞋の回答を埗られたずしたす。 サヌビス暪断しおいるので、耇数サヌビス利甚するケヌスを芋おほしい 還元するポむントが増枛するので間違えおいないか確認しおほしい 䞊蚘を念頭にしたテスト分析では ポむントに関する芁玠が重芁 ず刀断したした。 この埌のテスト蚭蚈に繋げるためにも、たずはポむントに関する芁玠をテスト察象ずしお抜出したす。 開催期間期間倖/期間内 参加有無゚ントリヌあり/なし 耇数サヌビス利甚ポむント倍率最倧50倍、2サヌビス以䞊15倍/3サヌビス以䞊で5倍ず぀䞊昇 最䜎利甚金額500円 曜日土日はプラス10倍 ゎヌルド䌚員の倍率䌚員はプラス5倍 ゎヌルド䌚員の期間キャンペヌン期間䞭の入䌚/解玄サヌビス利甚 察象カヌドの還元8月1日火8月3日朚の3日間はABC 察象カヌドポむント還元8%/10%/12% 察象サヌビス数10サヌビス クヌポン割匕埌の金額ず最䜎利甚金額の考慮 テスト芁玠を抜出しおいただくAI 今回は芁玠の抜出なので、結論などは蚘茉しお欲しくないため以䞋のようなプロンプトを実行したす  参考URL Chat GPTの回答 続いおポむントに関する芁玠を抜出しおもらいたす、いく぀かプロンプトを詊したずころ以䞋のプロンプトで求めるものに近い結果が埗られたした。 Chat GPTの回答 芁玠の抜出においお人間ず同レベルの結果が埗られたか Chat GPTの回答にあっお私が抜出した芁玠になかったものが以䞋になりたす。 䞀郚キャンペヌン察象倖の商品に察する考慮 ポむント倍率アップに最適な商品ずしお、500円皎蟌で販売される商品がある 「䞀郚キャンペヌン察象倖の商品」に぀いおは、重芁なテスト芁玠ずなりえるため考慮すべきでした。 次に「ポむント倍率アップに最適な商品」に぀いおは、最䜎利甚金額500円で考慮しおおり、特段わけお考える必芁はないず刀断したした。 逆に人間が抜出したものでAIが抜出できなかったものはありたせんでした。 今回はある皋床プロンプトがうたくいった成功䟋ず蚀えたす。 テスト分析時の芁玠の抜出においお、 プロンプトを工倫すれば 有甚な回答が埗られたした。 たた、今回工倫した点は、 ポむントに関する芁玠に絞った事 です。 以䞋のような芁玠の絞り蟌みをしおいないプロンプトの堎合 人間があたり重芁ではないず考えた芁玠参加方法も抜出しおしたいたす。 人間がテスト蚭蚈し、同じようなアりトプットをAIが出力できるかの怜蚌 テスト芳点を考える人間 ①耇数サヌビス利甚のポむントアップ 耇数サヌビス利甚ポむント倍率最倧50倍、2サヌビス以䞊15倍/3サヌビス以䞊で5倍ず぀䞊昇 察象サヌビス数10サヌビス 利甚サヌビス数 ポむント倍率 1 0 2 15 3 20 4 25 5 30 6 35 7 40 8 45 9 50 10 50 境界倀分析を甚いお、ポむント倍率が぀くケヌスず぀かないケヌスを確認する 同倀分割を甚いる1~2の15倍UPグルヌプ、2~9の5倍ず぀UPグルヌプ 9~10は䞊限到達グルヌプ テストデヌタ1,2,3,8,9,10 察象サヌビス10は最䜎1回は利甚する 利甚サヌビス数ごずにポむント倍率が正しいこずを確認する ②土日のポむントアップ 曜日土日はプラス10倍 金曜 土曜 日曜 月曜 7/28 7/29 7/30 7/31 8/4 8/5 8/6 8/7 境界倀分析を甚いお、土曜日になる前埌の確認を実斜する テストデヌタ7/28 23:59:59、7/29 0:00:00、8/4 23:59:59、8/5 0:00:00 境界倀分析を甚いお、月曜日になる前埌の確認を実斜する テストデヌタ7/30 23:59:59、7/31 0:00:00、8/6 23:59:59、8/7 0:00:00 最初の土日ず2回目の土日でポむント10倍であるこずを確認する2回目で20倍になったりしない 土日以倖の曜日でポむントがプラス10倍になっおいないこずを確認する ③ゎヌルド䌚員のポむントアップ ゎヌルド䌚員の倍率䌚員はプラス5倍 ゎヌルド䌚員の期間キャンペヌン期間䞭の入䌚/解玄サヌビス利甚 ゎヌルド䌚員 䌚員 非䌚員 +5倍察象 +5倍非察象 サヌビス期間䞭の入䌚 入䌚前 入䌚埌 +5倍非察象 +5倍察象 ポむント付䞎日たでの解玄 解玄なし 解玄あり 解玄埌入䌚 +5倍察象 +5倍非察象 +5倍非察象 境界倀分析を甚いお+5倍察象、察象倖の7ケヌスを確認する ④察象カヌド決枈のポむントアップ 察象カヌドの還元8月1日火8月3日朚の3日間は察象カヌドポむント還元8%/10%/12% 利甚金額 還元率 9,999円 0% 10,000円29,999円 8% 30,000円49,999円 10% 50,000円 12% 境界倀分析ず同倀分割を甚いお8%、10%、12%の還元率になる金額をテストする テストデヌタ9,999円、10,000円、29,999円、30,000円、49,999円、50,000円、50,001円 ⑀条件適合性 開催期間期間倖/期間内 参加有無゚ントリヌあり/なし 最䜎利甚金額(500円) クヌポン割匕埌の金額ず最䜎利甚金額の考慮 コンディションずアクションなのでデシゞョンテヌブルで敎理しおみる – – 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 条件 開催期間内 Y Y Y Y N Y Y N Y N N Y N N N N – ゚ントリヌあり Y Y Y N Y Y N Y N N Y N Y N N N – クヌポン利甚あり Y N Y Y Y N Y Y N Y N N N Y N N – 利甚金額は500円以䞊 Y Y N Y Y N N N Y Y Y N N N Y N 動䜜 ポむント倍率UPあり X X – – – – – – – – – – – – – – – ポむント倍率UPなし – – X X X X X X X X X X X X X X テストデヌタNo.1,3,4,5 No.1クヌポンを利甚しおポむント倍率UPされるケヌス No.3クヌポンを利甚したら金額が500円未満になっおしたったケヌス他条件は察象 No.4゚ントリヌを忘れおしたったケヌス他条件は察象 No.5察象期間前に利甚しおしたったケヌス他条件は察象 ※今回はプログラムが凊理される順序が䞍明なブラックボックステストを想定しお、デシゞョンテヌブルの動䜜単䜍で敎理はしおいたせん。 そのうえで、ひず぀の条件で察象倖になるケヌスは各条件が想定どおり動䜜する確認のために必芁ず考えたした。 テスト芳点を考えおいただくAI AIには、先ほどAIが抜出した埌に以䞋のプロンプトで指瀺をだしたした。 Chat GPTの回答 7぀のグルヌプにわけおテスト蚭蚈しおくれたしたが、グルヌプ2ポむント倍率アップに最適な商品は、ポむント倍率アップに最適な商品ずしお500円の商品が倚数ラむンナップされるこずであり、ポむントの増枛の芳点ではあたり有効ずは思えたせん。 たた、「開催期間」や「゚ントリヌの有無」ずいった条件がどのグルヌプにも珟れおいない結果になりたした。 人間ず同じような蚭蚈アりトプットが埗られたか 今回の蚭蚈アりトプットを比范するず䞋図のようになりたした。 グルヌピングに぀いお あたり有効ではない「グルヌプ2ポむント倍率アップに最適な商品」をグルヌピングしおいたす。たた、人間が蚭蚈した堎合は⑀条件適合性ずしお耇数条件をたずめおテスト蚭蚈しおいたすが、プロンプトを䞎えおいないので圓然ですが個別の考慮にずどたっおいたす。 考慮挏れ 芁玠で抜出した「開催期間」ず「゚ントリヌの有無」がなぜか欠萜したした。 テスト技法に぀いお AIのテスト蚭蚈では、7グルヌプ䞭6グルヌプでデシゞョンテヌブルが提案されおいたす。 しかしながら、デシゞョンテヌブル技法は耇数の条件のもず、それぞれの堎合の振る舞いを敎理するために掻甚する技法で、今回AIがグルヌピングしおくれた単䜍では、条件が少なすぎお有効ではないず考えられたす。 具䜓䟋ずしお、AIがテスト技法にデシゞョンテヌブルず同倀分割を提案したグルヌプ1で、デシゞョンテヌブルを䜜成しおもらいたした。 グルヌプ1に察するデシゞョンテヌブル䜜成のプロンプト Chat GPTの回答 グルヌプ1で䜜成しおくれたデシゞョンテヌブルでは条件が「䞊限倀未満」ず「䞊限倀超過」しかないので有効ではない結果ずなりたした。 たずめ 今回の怜蚌方法では、テスト分析では期埅したアりトプットに近い結果が埗られたしたが、テスト蚭蚈では人間ず同等のアりトプットは埗られたせんでした。原因は、テスト分析でAIが抜出した芁玠グルヌプ分けをそのたたテスト蚭蚈のむンプットずした事です。 AIはあくたでプロンプトに埓っお結果を生成しおいるので、テスト分析の結果から、テスト蚭蚈に萜ずし蟌む過皋で人間が考えた事をプロンプトに明確に指定する必芁があるず感じたした。 おわりに ECサむトの期間限定ポむント還元ずいう、比范的わかりやすいシステムを察象にした今回の怜蚌結果、いかがでしたでしょうか 抂芁レベルで出しおくれるアりトプットがそのたた䜿えそうじゃないかず飛び぀いお䜿甚しおみた生成AIですが、実際に掻甚しようずするず人間偎の指瀺がかなり重芁で、テスト分析やテスト蚭蚈ずいったフェヌズ事に䞀気通貫で掻甚するのは難しい結果になりたした。 フェヌズごずに人間が介入しお蚂正する事を前提に考えるず、テスト分析の結果はJSON圢匏などの人間にもわかりやすく、か぀AIにも䞀定の圢匏になっおいお加工しやすいデヌタ圢匏でアりトプットするこずで、テスト分析からテスト蚭蚈ぞの移行が楜になるかもしれたせん、うたく掻甚しおQCD改善しおいきたいですね。 最埌たで読んでいただき、ありがずうございたした。 力こそパワヌ ■AIを掻甚した゜フトりェアテストのサヌビス化を芖野に、AI技術の研究開発を行う「AGEST AI Lab.」を蚭立したした 詳しくは こちら から The post ChatGPTテスト蚭蚈できるのかいできないのかいどっちなんだい first appeared on Sqripts .
本連茉では、ブロックチェヌンの基本的な仕組みを解説しながら、オンチェヌンデヌタを分析するための基本的な手法に぀いお、党8回で玹介したす。 第3回ずなる今回は、暗号資産仮想通貚のなかでビットコむンに続き第2䜍の時䟡総額 ※1 を維持しおいるむヌサリアム ※2 に぀いお解説し、ブロックチェヌンの仕組みに぀いおの理解を深めたす。 ※1 CoinMarketCap 2023幎6月珟圚 ※2 Ethereum むヌサリアムずは むヌサリアムは、ブロックチェヌン技術を甚いお実装された、分散アプリケヌションのためのプラットフォヌムです。 ビットコむンの発明ずずもに登堎したブロックチェヌン技術は、 第2回 の連茉蚘事でも解説したずおり、「䞍特定倚数の参加者で構成されるネットワヌクで、悪意のある参加者が存圚したずしおも、党䜓ずしお正しく動き続ける分散アプリケヌション」を実珟するこずができたす。ビットコむンはそれをデゞタル通貚ずしお利甚したしたが、ブロックチェヌン技術は通貚以倖にもさたざたな応甚が考えられたす。 䟋えば、簡単なマむクロブログサヌビスを分散アプリケヌションずしお実装すれば、特定のプラットフォヌムに䟝存するこずなく、い぀でも自分の぀ぶやきを投皿するこずができ、誰かに怜閲されるこずもなければ、サヌビス終了ずずもにデヌタが消えおしたうずいうこずもありたせん。そのようなさたざたな分散アプリケヌションを簡単に実珟するためのプラットフォヌムがむヌサリアムです。 むヌサリアムの誕生 ブロックチェヌン黎明期の分散アプリケヌション開発の倚くは、ビットコむンのコヌドベヌスをフォヌクしおきお、䞀郚を修正するような圢でおこなわれおいたした。第1回の連茉蚘事でも玹介した、「ラむトコむン」 ※3 や「ネヌムコむン」 ※4 などがその兞型䟋です。ビットコむンのコヌドはオヌプン゜ヌスずしお䞀般に公開されおおり、誰でもダりンロヌドしお実行できるだけでなく、䞀郚を改倉しお独自のアプリケヌションずしお実行するこずも可胜です。 しかし、ビットコむンをフォヌクした圢のアプリケヌション実装では、そのアプリケヌションを動かし続けおくれるためのネットワヌク参加者を集めるこずにハヌドルがありたした。䞀般的なWebサヌビスなどのアプリケヌションであれば、開発者自身がサヌバヌを準備しおアプリケヌションを公開するだけで、䞖界䞭の人々がそのアプリケヌションにアクセスできたす。䞀方、ブロックチェヌンアプリケヌションの堎合、そのサヌビスを䜿いたい利甚者が自身のマシンにアプリケヌションをダりンロヌドしおきお、そのマシン䞊でプログラムを実行し続けなければなりたせん。もちろん、ビットコむンのようにある皋床の参加者が集たれば、既存のネットワヌク参加者のノヌドに察しお通信するだけでサヌビスを利甚できる圢になるのですが、安定したサヌビスを提䟛できるレベルたでネットワヌク参加者を集めるには、よほど共感されるアむデアやメリットがない限り困難でした。 そこで、すでに皌働しおいる既存のブロックチェヌンの䞊に、汎甚的なアプリケヌション局を構築するサヌビスも登堎しおきたした。䟋えば、ビットコむンの堎合、トランザクションのなかにビットコむンの送金だけでなく、メッセヌゞのような小さなデヌタを曞き蟌むこずができる仕様がありたした。ビットコむンのトランザクションにテキストを曞き蟌むこずで、䞊蚘の分散型マむクロブログのようなサヌビスは構築できたす。たた、より倧芏暡なデヌタを扱いたい堎合でも、そのデヌタをハッシュ関数で小さなデヌタに圧瞮するこずで、「過去にそのデヌタが存圚しおおり、それ以降改ざんもされおいない」ずいった存圚蚌明が可胜です。Blockcerts ※5 ずいうサヌビスでは、倧孊の卒業蚌明曞や民間の資栌蚌明曞などのハッシュ倀をビットコむンブロックチェヌンに刻み、存圚蚌明をおこなうこずで、誰もが簡単にブロックチェヌン技術を甚いた蚌明曞を発行するこずができたす。 しかし、既存のブロックチェヌンを他の甚途で䜿うずいう仕組みは、もずもず想定されおいないハック的な䜿い方のため、䜿い勝手や効率もよくありたせん。そこで、汎甚的な分散アプリケヌションを動かすために蚭蚈された新しいブロックチェヌンシステムずしお、むヌサリアムが登堎したした。 むヌサリアムは、圓時19歳の孊生であったノィタリック・ブテリンによっお考案されたした。そのアむデアがホワむトペヌパヌ ※6 ずしお公開されおいたす。2014幎ごろから開発が進められおいるEthereumは、2023幎珟圚たでに倧きなアップデヌトを䜕床も繰り返しおいるため、ホワむトペヌパヌだけを読んでも珟圚のEthereumの党貌を理解するこずは難しいのですが、圓時の背景やコアコンセプトを知るこずで珟圚の仕組みもより深く理解するこずができるず思いたすので、興味あるかたはぜひホワむトペヌパヌも読んでみおください。 ※3 Litecoin ※4 Namecoin ※5 Blockcerts ※6 Ethereum White Paper スマヌトコントラクト むヌサリアムの特城は、さたざたな分散アプリケヌションのロゞックを専甚のプログラミング蚀語で蚘述し、ブロックチェヌン䞊で実行できる点です。ブロックチェヌン䞊で実行する、ずいうのは、トランザクションを発行しおブロックチェヌン䞊の状態を倉曎できる、ずいう意味です。ビットコむンの堎合も、抜象的にはアカりントごずにビットコむン残高ずいう状態があり、トランザクションの実行埌にその状態残高が倉化する、ずいう圢で状態遷移をおこなっおいたす。たた、ビットコむンのトランザクションも、スクリプトず呌ばれるプログラミング蚀語でルヌルが蚘述されおいる、ずいう点も䌌おいたす。 しかし、ビットコむンのスクリプト蚀語は、通貚の送金ずいう甚途に特化しおおり、無限ルヌプなどを含む任意のロゞックを蚘述するこずはできたせんでした。むヌサリアムの堎合、無限ルヌプを含む任意のロゞックを専甚のプログラミング蚀語で蚘述し、ブロックチェヌンに配眮しおおくこずができたす。むヌサリアムの利甚者は、あらかじめ配眮されたプログラムの関数を呌び出すトランザクションを発行するこずで、通貚の送金だけではないさたざたな甚途の分散アプリケヌションを利甚するこずができたす。 この、むヌサリアムにおける汎甚的なプログラムを、「スマヌトコントラクト」ず呌びたす。スマヌトコントラクトずいうアむデアは、デゞタル通貚の研究者であるニック・サボが1997幎に提唱 ※7 しおいたす。ニックのアむデアは、珟実䞖界における自動販売機のような自動執行される契玄をデゞタル䞊でも実装するずいったものです。䟋えば、自動車を運転する暩利などを契玄に基づいお自動的に移転できるようになれば、自動車を担保にしたロヌンや、レンタカヌの運転暩利などを自動で暩利者に移転したりするこずができたす。 2023幎珟圚では、そのようなオンラむンで物理的なものの䜿甚暩を移転できるサヌビスも普及し぀぀ありたすが、倚くは特定䌁業によるサヌビス提䟛だず思われたす。むヌサリアムの堎合、このスマヌトコントラクトを、䞍特定倚数の誰もが参加できるブロックチェヌンネットワヌク䞊で実行し、特定のサヌビス䞻䜓に䟝存しない、次䞖代スマヌトコントラクトずしお提唱しおいたす。珟圚、䞀般的にスマヌトコントラクトず呌ぶず、むヌサリアムを代衚ずするブロックチェヌン䞊の分散プログラムのこずを指すこずが倚くなっおいたす。 ※7 The Idea of Smart Contracts ビットコむンずのデヌタ構造の違い 同じブロックチェヌン技術の応甚であっおも、ビットコむンずむヌサリアムにはさたざたな違いがありたす。デヌタ構造における䞡者の最も倧きな違いは、UTXOモデルずアカりントモデルです。 第2回の連茉蚘事でも解説したずおり、ビットコむンのトランザクションには「Inputs」ず「Outputs」ずいう抂念があり、Outputsのうちただどこにも送られおいないものが、自由に䜿える残高、ずいう考え方です。この未䜿甚トランザクションアりトプット(Unspent Transaction Output)をUTXOず呌びたす。 䞀方、むヌサリアムの堎合は、通貚の送金だけでなく、文字列や耇雑なデヌタ構造を含む汎甚的な状態を管理するため、アカりントに察しお通貚の残高デヌタが玐づくアカりントモデルずなっおいたす。 実デヌタを芳察する それでは、実際のデヌタを芳察しながら、これたでの解説を確認しおみたしょう。ビットコむンの堎合ず同様、むヌサリアムも自身でノヌドを立ち䞊げお、むヌサリアムネットワヌクから情報を取埗するこずもできたすし、むヌサリアム䞊のデヌタをデヌタベヌス化したオンラむンサヌビスも数倚く存圚したす。 Etherscan Etherscan ※8 は、むヌサリアムが登堎した黎明期から存圚し、機胜拡匵を繰り返し珟圚でも倚くのナヌザに利甚されおいる゚クスプロヌラヌサヌビスです。図1に、Etherscanのサヌビス画面䟋を瀺したす。 図1. Etherscanのサヌビス画面 ビットコむンの堎合ず同様に、生成された最新のブロックや、ブロックに含たれるトランザクションの䞀芧が確認できたす。ビットコむンの堎合は生成されるブロックの間隔は10分前埌でしたが、むヌサリアムの堎合は12秒前埌のため、頻繁に画面も曎新されたす。 ※8 Etherscan Dune むヌサリアムのオンチェヌンデヌタを甚いお簡単にデヌタ分析をおこなえるサヌビスずしお、Dune ※9 を玹介したす。第2回の連茉蚘事で玹介したBigQueryでも、䞀般公開デヌタセットにむヌサリアムのデヌタセットが含たれおおり、SQLを甚いお柔軟な分析が可胜です。Duneはそのブロックチェヌン特化版の分析サヌビスであり、ブロックチェヌン特有のデヌタ構造に现郚たで察応しおいたり、䜜成したク゚リやダッシュボヌドを他ナヌザに共有したり可胜な゜ヌシャル芁玠もあるスタヌトアップサヌビスです。 図2は、Duneの共同創業者である @hagaetc が䜜成したダッシュボヌド䟋です。 図2. Dune – @hagaetc / DEX metrics のダッシュボヌド䟋 ※9 Dune むヌサリアムのデヌタ構造 Etherscanの実デヌタを参照しながら、むヌサリアムのデヌタ構造に぀いお確認しおいきたしょう。 ブロック 倚くのブロックチェヌンでは、耇数のトランザクションをたずめたブロックが、前のブロックのハッシュ倀を参照しおいる、ずいうデヌタ構造は倉わりたせん。むヌサリアムの堎合も、ビットコむンず同様に、ブロックずトランザクションずいうデヌタ構造を持っおいたす。 図3. Etherscan – ブロックのサンプルデヌタ 図3に、Etherscanで衚瀺したむヌサリアムのブロックデヌタのサンプルを瀺したす。Block Heightは、そのブロックチェヌンが積み重ねおきたブロックの長さを衚したす。Transactionsの行を芋るず、このブロックには144のトランザクションず、43の内郚トランザクションが含たれおいるこずが分かりたす。 むヌサリアムのブロックも、むヌサリアムネットワヌクに参加しおいる䞍特定倚数のノヌドによっお自埋的に生成されおおり、ブロックの生成に成功した参加者が、所定の手数料を受け取れる仕組みになっおいたす。それらに関する情報が、Fee RecipientやBlock Rewardです。 むヌサリアムに特城的な仕組みずしお、ガスGasずいう抂念が存圚したす。これは、トランザクションを発行するための手数料を蚈算する仕組みに関連する抂念です。ビットコむンの堎合も、トランザクションを発行するために手数料を支払う必芁がありたすが、その金額は基本的にトランザクションのデヌタ量bytes数に比䟋したす。ただし、トランザクション手数料の蚭定はトランザクション発行者が任意に決めるこずができ、優先的に自身のトランザクションを取り蟌んでもらうために倚めの手数料を支払う、ずいったこずも可胜です。 むヌサリアムの堎合、トランザクション発行者が手数料を任意に決められる、ずいう点では同じですが、そのベヌスずなる倀はトランザクションのデヌタ量ではなく、トランザクションを蚈算するために消費するリ゜ヌス量ずなりたす。これは、むヌサリアムが無限ルヌプを含むようなプログラムの実行も蚱容する仕組みずなっおいるため、トランザクションのデヌタ量が少ない堎合でも、実行のために膚倧なリ゜ヌスを消費しおしたう可胜性があるためです。このトランザクション実行に必芁なリ゜ヌス量を、ガスずいう抂念で衚珟しおいたす。 あるトランザクションを実行するために必芁なガスは、あらかじめ厳密に蚈算するこずは難しいものの、同じ入力に察しおであれば基本的には䞀定のガスがかかりたす。このガスに察しお、1ガスあたりの手数料をトランザクション発行者が指定し、Ether(単䜍: ETH)ずいうむヌサリアムのネむティブ通貚で支払いたす。 トランザクション 図4は、あるブロックに含たれるトランザクションの䞀芧を衚瀺したサンプルデヌタです。トランザクションには固有のトランザクションハッシュTxn HashがIDずしお付䞎されおおり、誰がFrom、誰にTo、ETHを送った量Value、実行したメ゜ッドMethod、支払った手数料Txn Feeなどが共通の情報ずしお含たれたす。 図4. Etherscan – ブロックに含たれるトランザクション䞀芧のサンプルデヌタ たた、リンクずなっおいる適圓なトランザクションのハッシュをクリックするず、そのトランザクションの詳现ペヌゞを確認できたす。詳现ペヌゞに衚瀺される内容はトランザクションの皮類によっお異なるため、今回は詳现を割愛し、次回以降の連茉で必芁なトランザクションの皮類に぀いお深掘りしたす。 図5に、トランザクション詳现のサンプルペヌゞを瀺したす。Overviewのほかに、他のタブを遞択するこずで、衚瀺内容を切り替えるこずができたす。ここでは、Logsタブを開いおトランザクションの詳现なむベントログを衚瀺しおいたす。 図5. Etherscan –トランザクション詳现のサンプルデヌタ コントラクト Etherscanのペヌゞでは、䞀郚のコントラクトに぀いおは゜ヌスコヌドも含めお確認するこずができたす。図5のサむト䞊の「View Source」から遷移したコントラクトペヌゞのサンプルを図6に瀺したす。 図6. Etherscan – コントラクトコヌドのサンプルデヌタ むヌサリアムのトランザクションの詳现な内容を把握するには、こちらのコントラクトコヌドたで遡っお理解する必芁がある堎合もありたす。たた、Etherscanでは、コントラクトコヌドに実装しおいるメ゜ッドをサむト䞊で呌ぶ機胜もありたす。Read Contractタブでデヌタ取埗系のメ゜ッドを実行するこずで、そのコントラクトの珟圚の状態などをノヌコヌドで確認できたす。 たた、これはただベヌタ版の機胜ですが、ChatGPTのAPIを利甚しお、コントラクトコヌドの内容をAIによっお解説したり芁玄したりずいった利甚が可胜なCode Readerずいうサヌビスもアナりンスされたした ※10 。 ※10 Twitter – @etherscan コントラクト芏栌 むヌサリアムでは任意のコントラクトコヌドを実装しお実行できたすが、各自がバラバラの仕様でコントラクトを実装するず、他のコントラクトで統䞀的に扱ったり、デヌタの分析が困難になったりする可胜性がありたす。 そこで、むヌサリアムではよく利甚されるコントラクトの甚途に぀いお、暙準芏栌の策定が行われおいたす。その芏栌化は、むンタヌネットの技術仕様の暙準化に甚いられおいるRFC(Request For Comments)をもじっお、ERC(Ethereum Request for Comments)ず呌ばれおいたす。代衚的なERCのコントラクト芏栌には、ERC-20Token StandardやERC-721(Non-Fungible Token Standard)などがありたす。詳しくは、実際のデヌタ分析の回にお解説したす。 次回予告 むヌサリアムの登堎によっお、ブロックチェヌン技術を掻甚したスマヌトコントラクトの開発が容易ずなり、さたざたな皮類の分散アプリケヌションが登堎したした。たた、コントラクト芏栌の暙準化により、統䞀的なむンタヌフェヌスで、それらの分散アプリケヌションのトランザクションを分析するこずも可胜ずなりたした。 次回の蚘事では、ブロックチェヌン䞊のオンチェヌンデヌタを分析するためのク゚リ蚀語ずしお、SQLの基瀎に぀いお解説し、オンチェヌンデヌタ分析の準備を始めおいきたす。 【 第1回】ブロックチェヌンずは 【第2回】ビットコむンの仕組み The post 【第3回】むヌサリアムの仕組み first appeared on Sqripts .
みなさんこんにちは。゚リアマネヌゞメント郚のゆヌおぃです。 今回はテストを始める前にい぀も行っおいるこずを蚘事にしたいず思いたす。 芁求は人によっお様々 みなさんは買い物の時にどんなものがあるか芋おから決める時があるのではないでしょうか。時には店員さんに「こういう機胜が぀いおる物がほしい」、「●円の予算に収たる物がほしい」、「圚庫があっおすぐに持っお垰れる物から遞びたい」などの芁求を䌝えた䞊でアドバむスを聞くこずもあるず思いたす。 それはテストも同じこずで、テストの目的はプロゞェクトによっお様々で、「これらを満たすようにテストしたい」や「この予算内でテストしたい」、「い぀い぀たでに完了するようにテストしたい」ずいった内容もありたす。 「JSTQB Foundation Level シラバス」にも以䞋の蚘茉があるように、我々は店員の目線からしっかりず芁求事項を敎理した䞊でそのプロゞェクトにあったプランを怜蚎し、共通のゎヌルを明確にしお進めるこずが重芁だず考えおいたす。 以䞋、JSTQB FLシラバスから抜粋 「1.4.2 テストの掻動ずタスク」 テスト蚈画では、テストの目的ず、状況により課せられる制玄内でテストの目的を達成するためのアプロヌチを定矩する䟋えば、適切なテスト技法ずタスクを指定し、玍期に間に合うようにテストスケゞュヌルを䜜成する。 出兞 ISTQBテスト技術者資栌制床Foundation Level シラバス 日本語版 Version 2018V3.1.J03 では「倚端末テスト」に察しお「できるだけたくさんの端末でテストしたい」ずの芁求を䌺った堎合を䟋ずしお、日頃どのようにゎヌルを決めおいるか、䞀぀䞀぀説明しおいきたいず思いたす。 芁求事項を敎理 ・目的の確認 倚端末テストを行う目的ずしお「画面比が異なるこずによる衚瀺バグがないか確認したい」や「OS䟝存の䞍具合を芋぀けたい」、「䞀般ナヌザヌ向けに公開する掚奚環境を怜蚎したい」など目的は様々ありたす。 目的を理解しおいないず、目的にあった端末を遞定できず、テストアプロヌチも正しく怜蚎できたせん。目的から倖れた効果の薄いテストにならないよう、たずは目的を明確にしたす。 ・プロダクトタむプ、ナヌザヌ局の確認 テスト察象のプロダクトがどのようなもので、どのナヌザヌ局をタヌゲットずしおいるかで、テスト端末の遞定幅も倉わっおきたす。たずえば、BtoBなのであれば、ナヌザヌずなる䌁業で実際に䜿われおいる端末でテストするのが効果的ですし、BtoCなのであれば垂堎シェア率を考慮した遞定を行いたす。 たた、性別、幎代によっおシェア率は倉わりたすのでナヌザヌ局を把握した䞊で端末遞定を行うずより効果的になりたす。 ・制玄事項の確認 次にプロゞェクトの制玄事項に぀いお確認しおいきたす。 予算、玍期、リ゜ヌスのすべおに䜙裕があり、やりたいテストをすべお実行可胜なプロゞェクトはない。ず蚀っおも過蚀ではないず思いたす。制玄事項を把握するこずで正しい優先床付けができるず考えおいたす。 テストプランの怜蚎 ある皋床の情報が揃ったずころで䞀床テストプランを3パタヌン皋怜蚎したす。 ・パタヌン1 品質優先 のおすすめプラン 芁求をしっかり理解した䞊で、テストの知芋、実瞟ベヌスの過去デヌタをもずに品質を高めるこずを優先ずしたアプロヌチを怜蚎し、予算、玍期ぞの圱響を明確にしたす。 ・パタヌン2 品質、玍期をキヌプする プラン 目的の達成、䞔぀玍期に間に合うアプロヌチを怜蚎し、テスト内容、予算ぞの圱響を明確にしたす。 ・パタヌン3䞀郚目的を削り 制玄内でテスト するプラン 決められた予算、玍期の制玄内でテストを行った堎合のテスト内容、および品質に察するリスクを明確にしたす。 そしお、テストプランを怜蚎した埌は、各パタヌンの期埅される効果を説明した䞊ですり合わせを行いたす。もちろん我々ずしおは「品質優先のおすすめプラン」を掚奚したすが、プロゞェクトによっおマッチするものは倉わっおくるず思いたす。最埌はしっかりずすり合わせた埌、プランを遞択するこずで、共通のゎヌルが明確な状態でプロゞェクトを進めるこずができたす。 たずめ 今回はテストを始める前にい぀も行っおいるこずを「倚端末テスト」を䞀䟋ずしお蚘事にしおみたした。䜕れのプロゞェクトでも芁求は様々だず思いたすので、我々はスタヌト前にしっかりずゎヌルを決めた䞊で、プロゞェクトを進めるこずが重芁だずいうこずを日々念頭においお、業務を遂行したいず思いたす。 The post お客様満足床の高いテストプランの組み立お方3぀の確認でゎヌルを決めよう first appeared on Sqripts .
AGEST Academyです。 本蚘事では、゜フトりェアテストを始めたばかりの人、ただ゜フトりェアテストをやったこずがない人に向けお、「゜フトりェアテストずは」どういうものかに぀いおご玹介したす。 新米テスタヌの「ぱなも・ホワむト」 ずテスト経隓258幎の「ニャックス・ブラック」 が、それぞれの経隓に基づいお楜しくお話しおいたす。 本蚘事を通しお、皆さんの考える゜フトりェアテストに぀いお少しでも觊れられたしたら幞いでございたす。 (1)ニャックスの゜フトりェアテスト 新米テスタヌのぱなもでキュルン。 よろしくキュルン。 テスト経隓258幎のニャックスだ。 よろしく。 困っおるこずはあるか 先茩にずっお、テストっおどういうものキュルン どうした テストの話をしおも理解がなくお  うたく䌝わらないキュルン。 私も 孊校のテストずは 違うのか、問われたこずがある なんお答えたキュルン 孊校のテストは、こうなるべきずいう決められた解答がある。゜フトりェアテストには、 答えが䞀぀でない 堎合もある。 䞍確実で創造的 なものだ。 すごくわかるキュルン 実際は、孊校のテストでも「 生埒・教垫・保護者・それ以倖の関係者 」でそれぞれテストの捉え方が違うはずだ。 関係者が孊校のテストに぀いおどう向き合っおいるのか調べたものを玹介する。  ※ なぜ(孊校で)テストをするのか 芁玄「蚀語テスト研究」でよく蚀及される 「劥圓性」や「信頌性」ずいった基本抂念 をずっおみおも、教垫ずの思惑のずれが芋える。「劥圓性」ずは、「 枬ろうずしおいる胜力をテストが枬っおいるか 」を衚し、「信頌性」ずは「 枬ろうずしおいる胜力を安定しお枬っおいるか 」を衚しおいる。これらの抂念の倧前提は テストでは䜕らかの「胜力」を枬ろうずしおいる ずいうこずである。 出兞 䞉省堂 TEACHING ENGLISH NOW vol.27 劥圓性や信頌性 ずいう衚珟が非垞に興味深い。 このレポヌトずテストの思想は近い ものだ。 人によっおこんなにも捉え方が違うキュルン 面癜いキュルンっ 良いセンスだ。 私にずっおの゜フトりェアテストは、 䟡倀芳の違いが生む人のすれ違いを枛らす掻動 だ。 でも、先茩のようにうたく䌝えられる自信がないキュルン   (2)有識者の゜フトりェアテスト ゜フトりェアテスト技術者資栌認定で知られるJSTQBのテストを玹介する 「すべおのラむフサむクルを通じお実行する静的、動的なプロセスにおいお、成果物が特定の芁件を満足するかを刀定し、目的に合臎するこずを実蚌し、欠陥を芋぀けるため、゜フトりェアプロダクトや関連成果物に察し、蚈画、準備、評䟡するこず」 出兞 JSTQB甚語集 – テスト(testing) 難しいキュルン   文章は固いかもしれないな。 次に、IEEE Software誌の元線集長で知られるSteve McConnellのものを玹介する。 「゜フトりェアテストは、もっずもポピュラヌな品質改善方法である」 出兞 Steve McConnell 品質改善キュルン ぱなもくんには、苊手な教科があるだろうか 瀟䌚が苊手キュルン。 テストの結果はどうだった 特に悪かったキュルン  。 テストの結果から瀟䌚が特に苊手だずいうこずが客芳的にも分かる状況であるな。 このケヌスでは、テストの結果が良くないずころを重点的に勉匷しお、次のテストで結果を出せばいい。 キュルキュルン 良くないずころをピンポむントで良くしおいく、テストの結果が品質改善のきっかけになるキュルンね (3)高橋寿䞀さんの゜フトりェアテスト 興味深い話をしおいるね 寿䞀さんにずっお、゜フトりェアテストずはどういうものキュルン なくおはならないものだね。 そうだな  䟋えば、 品質マネゞメント は 品質保蚌ず品質コントロヌル に分類されるが、テストが密接に関わっおいる。 どちらの芖点で゜フトりェアテストを捉えるかでも議論の䜙地はあるね。 ぱなもくんだず  䟋えば、テスタヌずしおのテストは、補品の良くない事象䞍具合を芋぀けお、開発者に報告するだろう。そしお、修正された補品に良くない事象がなくなっおいるこずを確認し、補品の品質コントロヌルを手助けしおいくこずも倚いだろう。 その通りキュルン この堎合の゜フトりェアテストずは、 プロダクト補品ずその関係者をより良い方向に支揎しおいく仕事 ずいったずころだろうか。 Steve McConnellもいうように、テストはプロダクト補品ずその関係者双方の品質改善を担うず考えおいる。 すごい仕事キュルン すごい仕事だよ。 䟋えば、Glenford J Myersは以䞋のように蚀っおるね。 「テストずは、非垞に創造的であり、知的に挑戊しがいのある仕事である」 出兞 ゜フトりェア・テストの技法 第2版 Glenford J.Myers テストの仕事は、やりがいでいっぱいキュルン ははは、゜フトりェアテストで孊ぶべきこずはただただあるからね。応揎しおいるよ。 (4)たずめ ç«  説明 (1)ニャックスの゜フトりェアテスト ゜フトりェアテストは、答えが䞀぀でない堎合がある。もっず䞍確実性があり、創造的なもの。 (2)ニャックスの゜フトりェアテスト ゜フトりェアテストは、䟡倀芳の違いが生む人のすれ違いを枛らす掻動 (3)高橋寿䞀さんの゜フトりェアテスト ゜フトりェアテストずは、プロダクト補品ずその関係者をより良い方向に支揎しおいく仕事 出兞先 説明 曞籍 根岞雅史 ※孊校のテスト 「劥圓性」ずは「枬ろうずしおいる胜力をテストが枬っおいるか」を衚し「信頌性」ずは「枬ろうずしおいる胜力を安定しお枬っおいるか」を衚しおいる。これらの抂念の倧前提はテストでは䜕らかの「胜力」を枬ろうずしおいるずいうこずである。 䞉省堂 TEACHING ENGLISH NOW vol.27 JSTQB甚語集テスト(testing) すべおのラむフサむクルを通じお実行する静的、動的なプロセスにおいお、成果物が特定の芁件を満足するかを刀定し、目的に合臎するこずを実蚌し、欠陥を芋぀けるため、゜フトりェアプロダクトや関連成果物に察し、蚈画、準備、評䟡するこず ISTQB公匏 Steve McConnell ゜フトりェアテストは、もっずもポピュラヌな品質改善方法である 知識れロから孊ぶ゜フトりェアテスト【改蚂版】 高橋寿䞀 Glenford J.Myers テストずは、非垞に創造的であり、知的に挑戊しがいのある仕事である ゜フトりェア・テストの技法 第2版 悩みは解決できたか 倧䞈倫キュルン これからは、もっず自信を持っお話すキュルン♪ 良かった。 䞍安があればたた聞いおくれ。 本蚘事では、「゜フトりェアテストずは」ずいうテヌマに沿っお、様々な衚珟や解釈があるずいうこずをご玹介いたしたした。 今回内容に含たれなかった「 垂堎に出回った䞍具合による損倱 」ずいうものがありたす。 JSTQB_FLシラバスでは、これらの損倱を「(1)経枈的な損倱」「(2)時間の浪費」「(3)信甚の倱墜」「(4)障害や死亡事故」ずしお取り䞊げおいたす。このように 損倱 や リスク ずいった芖点からも、テストの有効性を蚌明するこずが可胜です。 本蚘事を通しお、゜フトりェアテストのやりがいを少しでもお䌝えできおいたしたら幞いです。 Sqriptsでは、゜フトりェアテストに関する技術や考え方をお圹立ち資料で玹介しおいたす。本蚘事の詳しい内容に぀いおは こちら からダりンロヌドいただけたす。 The post テストの基瀎゜フトりェアテストずは first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第5回目のテヌマは、「アゞャむル開発の誀解」です。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 よくある誀解 アゞャむル開発はドキュメントを䜜らない 有名な誀解ですが、これは間違っおいたす。 アゞャむルマニフェストにも曞かれおいるように、「ドキュメントよりも、動く゜フトりェアを䟡倀ずしよう」なので、ドキュメントを䞍芁ずしおいるわけではありたせん。 よっお、必芁なドキュメントがあれば䜜りたす。たた、プロダクトの芏暡が倧きくなればなるほど、必然的にコミュニケヌションコストがかさむため、ドキュメントが重芁になっおくるでしょう。 それでは、アゞャむル開発におけるドキュメントのむメヌゞを持っおいただくため、珟堎でよく芋かけるドキュメントをいく぀か玹介したす。 むンセプションデッキ アゞャむル開発版のプロゞェクト憲章のようなもので、プロダクトやプロゞェクトにおいお、自分たちのチヌムは同開発を進めおいくか チヌムの共通認識を生み出すための文曞です。 システム党䜓図 アゞャむル開発は小さく開発しおいきたすが、開発が進めば進むほどプロダクトは倧きくなっおいきたす。ちょっずず぀組み立おおいく過皋を経隓しおいれば、倧きくなっおもある皋床理解できたすが、途䞭から入っおきたメンバヌにずっおは、なかなか党䜓像が芋えないものです。そういった堎合、システム党䜓図のような高い芖点のドキュメントが圹に立ちたす。 耇雑な郚分の仕様曞 仕様は党郚敎理しおおきたいものですが、「仕様をドキュメントにたずめる」ず決めた堎合、それ自身が新しい仕事になりたす。そしおその仕事は、開発が続く限りずっず続いおいきたす。そのコストを払い続けおも、それに芋合ったリタヌンがあるなら良いず思いたす。もしそうずいえないのであれば、たずは重芁な郚分の仕様曞だけ敎理しおおくずいいず思いたす。 振り返りのログ アゞャむル開発では、定期的にふりかえりを行いたす。そのずきの孊びをWikiやホワむトボヌドツヌルなどに残しおおけば、過去の経緯や過去の孊びが情報ずしお溜たっおいきたす。 よくある誀解 アゞャむル開発なら芁件をい぀でも倉曎できる これもよく芋かける誀解です。 アゞャむル゜フトりェアの12の原則 にも曞かれおいるように、芁求の倉曎はたずえ開発の埌期であっおも歓迎したす。しかし、䜕でもかんでも倉曎しおいおは、どんな開発でも進んでいかないでしょう。 倉曎するずいうこずは、その時点で再蚈画が発生するずいう意味でもありたす。再蚈画無しの倉曎は無謀です。これも12の原則にもあるずおり、アゞャむル開発であれば、無理や無茶がない、持続可胜な開発を促進しなければなりたせん。 倉化の倚い珟堎であれば、開発サむクルを短くしたり、やるこずを小さくするずいいでしょう。倧きなものを倧きなたた開発しおいるのであれば、アゞャむル開発よりも埓来型の方がやりやすいかもしたせん。 よくある誀解 アゞャむル開発は優秀な人にしかできない 筆者の回答は「誰にでもできる」です。 12の原則にあるように、アゞャむル開発に必芁なのは、意欲に満ちた人々です。意欲がないずはじたりたせん。 たた、「詊しにやっおみよう」ぐらいの意欲だず倱敗する可胜性が高いです。きっかけずしお悪くはないのですが、「必ず成功させよう」ずいう意欲を持ったチヌムのほうが、成功率が高くなりたす。 優秀な人たちがチヌムにそろうずいいこずがありそうですが、個々の胜力が高くおも、チヌムの生産性が䞊がるわけでないずいう有名な研究結果が グヌグルからも出おいたす 。チヌムでの開発が䞻流のアゞャむル開発では、個人の胜力だけではだめで、チヌムずいう集団での知性が問われるのです。 よくある誀解 アゞャむル開発は蚈画を立おない アゞャむル開発でも蚈画を立おたす。ただ、蚈画の立お方が埓来型ずは異なりたす。 アゞャむル開発は短い期間で開発を繰り返したす。小さいものを積み䞊げおいく方法なので、党䜓像が芋えにくいずいう欠点がありたす。よっお、3ヶ月毎、半幎ごず、1幎毎、ずいうように、䞭長期的なリリヌス蚈画やロヌドマップが必芁になりたす。 蚈画ごずの解像床のむメヌゞ。濃い色になるほど解像床が高くなる。 泚意したいのは、蚈画の解像床です。アゞャむル開発は倉化に察応しおいきたいので、埓来型のようにかっちり蚈画をきめおしたうず、解像床は高たりたすが、倉化に匱くなりたす。倉曎があったずきに、たた解像床の高い蚈画を立おおいおは、スピヌドも出せたせん。 よっお、アゞャむル開発では、遠いものは芋えにくいので䜎い解像床。近いものははっきりみえるので高い解像床・・・ず、蚈画の解像床を倉えお察応しおいきたす。 ぀たり、遠くのものはざっくりず蚈画を管理し、珟圚に近づけば近づくほど解像床を高めおいくのです。 よくある誀解 アゞャむル開発は開発生産性を高める 埓来型でもアゞャむル開発でも、開発生産性を高められたす。よっお、埓来型よりアゞャむル開発のほうが開発生産性が高いずいうこずはないず思いたす。 アゞャむル開発は、埓来型の開発生産性の考え方をあたり適甚したせん。考え方が異なる方法同士なので、導入が難しいためです。 そのかわりずいっおはなんですが、アゞャむル開発では、ベロシティチヌムのアりトプット量やリヌドタむムアむデアがリリヌスされるたでの時間ずいった別の指暙を蚈枬しお、チヌムの状態を確認しおいきたす。 よくある誀解 アゞャむル開発にはプロゞェクトマネヌゞャは必芁ない アゞャむル開発でもプロゞェクト型の開発を行っおいるチヌムは倚いです。期限があるプロゞェクトをやるずいうよりは、プロゞェクトを繰り返しながら開発するむメヌゞです。 アゞャむル開発であろうず、チヌムの開発を運営は必芁なので、プロゞェクトマネゞメントの考え方は倧切だず思いたす。ただ、アゞャむル開発は自埋したチヌムですので、蚈画もチヌムで䜜り、進捗もチヌムで芋おいくので、チヌムが自埋しおしたえば、プロゞェクトマネヌゞャヌは必芁なくなるかもしれたせん。 もし、珟圚が、プロマネずいう圹割によっおチヌムが管理されおいる状況だずすれば、アゞャむルチヌムの目指す自埋性を阻害しおいる可胜性がありたす。 よくある誀解 アゞャむル開発では蚭蚈しない ゜フトりェア開発においお蚭蚈は重芁な掻動ですから、蚭蚈はしたす。 ただ、アゞャむル開発は短い開発サむクルをたわしおいくものなので、埓来型のような明確な蚭蚈フェヌズはないこずが倚いでしょう。 短い開発サむクルの䞭で、蚭蚈開発テスト・・・ず繰り返しおいくむメヌゞになりたすが、これだず小さなりォヌタヌフォヌルになっおしたい、期間の最埌にたずめおテストするこずになり、期間分の手戻りリスクが発生しおしたいたす。 これを回避するために、機胜  機胜  機胜 ず、期間の䞭で小さな開発を繰り返しおいく方法をずっおいるチヌムが倚いです。 よくある誀解 アゞャむル開発にQAは必芁 埓来型の開発の堎合、䜜るべきものが明確なケヌスが倚いので、品質を保蚌Quality Assurance QAしやすいず思いたす。ここでいう品質は、仕様通り䜜られおいるかが䞭心になりたす。 アゞャむル開発の堎合、小さくリリヌスしたものに察するフィヌドバックを元に軌道修正しおいくので、「これは䟡倀が倧きい」ずリリヌス前に保蚌するのは至難の業です。ここでいう品質は、リリヌスしたものの䟡倀の倧きさが倧きいほど品質が高いず蚀えたす。 よっお、アゞャむル開発に埓来型のQAずいう考え方を適甚するのは難しいず思いたす。おそらく、網矅性の高いテストをリリヌスごずに繰り返しおいく圢になるので、QAがフェヌズになり、QAフェヌズがボトルネックになる可胜性が高いでしょう。 アゞャむル開発には、アゞャむル開発に適したテストや品質の考え方が必芁です。たちがっおも、速く䜜るからテストをすっずばそうずはなりたせん。 よくある誀解 ナヌザの䟡倀、プロダクトの䟡倀が重芁 最埌の誀解は、「ナヌザの䟡倀、プロダクトの䟡倀が重芁」です。もちろん重芁なのですが、泚意したい点があるので、あえお最埌に解説したす。 たずえば、プロダクトを優先させるために、チヌムが犠牲になり、連日連倜デスマヌチを続け、チヌムが疲匊しお離脱者が増える・・・ずいったケヌスもたたに芋かけたす。 アゞャむル開発では、持続可胜な開発を倧切にしたす。プロダクトを優先させすぎお、それ以倖の䟡倀や原則が歪んでしたっおいないかを意識するようにしたいものです。䜕かを犠牲にしお䜕かを達成するのは、決しお持続可胜な開発ではありたせん。 たた、アゞャむル開発はチヌム開発が䞭心になりたすが、チヌムだけでなく個人も倧切です。こちらもチヌムのために、個人が犠牲になるようなこずがないようにチヌム運営しおいく必芁がありたす。 よくある誀解 アゞャむル開発を導入すればうたくいく 䞖の䞭には「これを導入しお売䞊UP」のような方法論やフレヌムワヌクがたくさんありたす。たしかに、そういうベストプラクティスを駆䜿すれば、珟状はよくなるかもしれたせん。 しかし、アゞャむル開発は、成功を玄束する方法論ではありたせん。あくたで成功率を高める手段です。 「アゞャむル開発を導入したが良くならなかった」ずいうケヌスがなくならないのは、この郚分を誀解しおいる可胜性がありたす。 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回 埓来型開発ずアゞャむル開発の違い その 第4回 埓来型開発ずアゞャむル開発の違い その The post 第5回 アゞャむル開発のよくある誀解を解いおいこう first appeared on Sqripts .
こんにちは、゚リアマネヌゞメント郚の 蟹乃䞭 味噌倪郎  です。 FacebookやTwitter、AmazonなどのWebサむトからExcel、Skypeずいった゜フトりェアなど様々な囜で利甚されおいるサヌビスがたくさん展開されおいたす。皆さんも䞀床は利甚経隓があるのではないでしょうか。 そのような耇数の囜・蚀語に察応した゜フトりェアをテストする機䌚もあるかず思いたす。ブラりザ、Webアプリケヌション、スマヌトフォンアプリなど、システムによっお芳点が倧きく異なるこずもありたすが、今回はブラりザに焊点を圓おお、私なりに泚意したいポむントなどをご玹介させおいただきたす。説明には私の所属䌚瀟AGESTずDIGITAL HERATS HOLDINGのホヌムペヌゞを䜿甚したす。 衚瀺蚀語 耇数の囜で展開されるWebサむトをテストする堎合、たず初めに初期衚瀺ずなるデフォルト蚀語に぀いお確認する必芁がありたす。 蚀語蚭定が未蚭定の堎合はデフォルト蚀語ずなりたすが、どのようにデフォルト蚀語が蚭定されおいるかを確認する必芁がありたす。 単玔にシステムのデフォルト蚀語で衚瀺されるパタヌンもあれば、䞊蚘のようにアカりント毎の蚭定された地域や囜を参照しおデフォルト蚀語が倉化するパタヌンもありたすので泚意が必芁です。 蚀語蚭定が行われおいる堎合は、デフォルト蚀語に圱響するこずなく蚭定した蚀語で衚瀺されるこずをテストする必芁がありたす。 たた、衚瀺される蚀語が異なれば圓然ながら単語や文章の長さが倉化したす。蚀語が倉化するこずによっおレむアりトが厩れおしたうこずがありたすので、各蚀語でレむアりトなどを確認するテストが必芁ずなっおきたす。 リンク蚭定 リンクの堎合、同じペヌゞに遷移するので、衚瀺蚀語に合わせた蚀語で衚瀺されるのではず思われるかもしれたせん。ですがリンクも衚瀺蚀語に合わせお蚭定されおいる必芁がありたすので泚意が必芁です。 日本語に蚭定しおいるはずなのにリンク先に遷移するず英語で衚瀺されたり、PDFの曞類をダりンロヌドするず衚瀺蚀語ず異なる曞類ずなっおいたりする堎合もありたす。なので、リンクに぀いおも各蚀語毎にテストするように泚意したいです。 実際にAGESTのホヌムペヌゞで確認しおみたす。 日本語のペヌゞだずURLが” https://agest.co.jp ”ずなっおいたすが、英語に切り替えるず URLが” https://agest.co.jp/en/ ” ずなっおいお、URLが少し倉化しおいたすね。次にヘッダにある「䌚瀟情報Corporate」を日本語ず英語の堎合で比范しおみたいず思いたす。 たず日本語のリンク蚭定は、 ” /corporate/ “ずなっおいたすね。次に英語では、 ” /en/corporate/ “ずなっおいたすので、”/en/ ”が぀くこずにより英語の䌚瀟情報ぞ遷移するように蚭定されおいたす。このように蚀語に合わせおリンクが蚭定されおいるため、遷移によっお蚀語が戻っおしたう様なこずもなく快適に利甚できるずいうわけです。逆に蚀語に合わせおリンクが蚭定されおいないず煩わしく䜿いづらいものずなっおしたいたす。 ゚ラヌメッセヌゞ衚瀺 バリデヌションで入力必須の゚ラヌメッセヌゞが衚瀺されるシステムの堎合、特定の画面のみ蚭定蚀語ずは異なる蚀語で衚瀺されおしたったり、特定の゚ラヌメッセヌゞが蚭定蚀語ず異なる蚀語で衚瀺されたりずいった䞍具合が朜んでいるこずがありたす。 ※䞊図はペヌゞ内のテキストは英語衚瀺なのに、゚ラヌメッセヌゞが日本語ずなっおいるむメヌゞ画像です。この堎合、゚ラヌメッセヌゞも英語で衚瀺されるのが望たしいでしょう。 ここでぱラヌメッセヌゞを䟋にしたしたが、゚ラヌメッセヌゞに限らず特定の操䜜によっお远加で衚瀺されるようなメッセヌゞやダむアログに぀いおは、蚭定蚀語に合わせお正しい蚀語で衚瀺されるかをテストする必芁がありたす。 日時衚瀺がある堎合 日時衚瀺がある堎合、どのような基準で衚瀺されおいるかに泚意を払う必芁がありたす。䟋えば、囜毎のタむムゟヌンに合わせお日時衚瀺が行われおいお、「協定䞖界時UTCを基準ずしおそれぞれのタむムゟヌンに倉換しお衚瀺」しおいる機胜があったずしたす。 “10:00:00(UTC) “をアメリカの日時に倉換する堎合 ここでは「CST米囜䞭郚暙準時」に倉換されるず仮定、CSTはUTC協定䞖界時から”-6:00:00”ずなるので、4:00:00CSTが正しい倉換ずなりたすが、 日時が協定䞖界時UTCのたたのパタヌン  【10:00:00(UTC)  ⇒ 10:00:00(UTC)】  日時が別のタむムゟヌンに倉換されおいるパタヌン  【10:00:00(UTC)  ⇒ 19:00:00(JST)】 ※JST日本暙準時はUTCから ”+9:00:00”なので19:00:00ずなりたす。 日時は合っおいるがタむムゟヌン衚瀺が異なるパタヌン 【10:00:00(UTC)  ⇒ 4:00:00(JST)】  䞊蚘のような䞍具合が朜んでいる可胜性が考えられたす。 さらに、日本ではあたりなじみがありたせんがサマヌタむムずいうものが囜によっおは蚭定されおいたす。サマヌタむムは特定の期間に適甚され、「協定䞖界時UTC基準で1時間進められる」ずいったものになり、タむムゟヌンもサマヌタむム甚のものに倉化したす。 「CST米囜䞭郚暙準時」を䟋に挙げるず、タむムゟヌンは「CDT米囜䞭郚暙準時の倏時間」ずなりたす。時間は「10:00:00(UTC)」を基準ずするず、CDTの堎合はUTCから”-5:00:00”ずなるので、「05:00:00CDT」ずなりたす。 そんなサマヌタむムですが、珟圚アメリカやペヌロッパで廃止する動きがありたす。廃止ずなれば、サマヌタむムを採甚しおいるシステムからも機胜が廃止されるこずが考えられたすので、それらの取り扱いに぀いおもしっかりず確認しおおきたいですね。 ちなみにアメリカでは、倏時間が恒久化される可胜性があるようです。 䟡栌の衚瀺に぀いお 通貚が囜によっお異なるこずは蚀うたでもありたせんが、囜によっお䟡栌衚瀺の桁数の衚珟も異なりたす。日本の堎合、小数点に察応しおいたせんが、アメリカでは小数点にあたるセントの単䜍がありたす。たた、日本では数字の区切りが ”カンマ” で区切られおおりたすが、囜によっおは ”ピリオド” や ”スペヌス”で区切られおいるこずがありたす。 䟡栌衚瀺に぀いおは、小数点の察応・非察応であったり、数字の区切りなどが囜によっお倉化するこずを考慮しおテストする必芁がありたす。さらに、これらはシステムの制埡や環境によっおも倉化するので、テスト察象毎にどのような振る舞いずなるのかを開発者やマネヌゞャに確認するなど、テストする際は事前確認を怠らないように泚意が必芁です。 少し実践 ではAGESTのホヌムペヌゞを䜿甚しお簡単なテストを行いたいず思いたす。ここでは、英語のTop Pageを䜿甚しお、ヘッダヌの各リンクからの遷移を䞭心にテストしたす。確認する芳点は以䞋の4぀で実行したいず思いたす。 英語の該圓ペヌゞに遷移するこず 特定の䜍眮が指定されおいる堎合は指定の䜍眮に遷移するこず 日本語で衚瀺されおいる箇所がないこず レむアりトなどの衚瀺が厩れおいないこず それでは始めたす。 Top Pageにあるヘッダヌの確認箇所は䞋図の赀枠で囲った郚分ずなりたす。 確認するアむテムは以䞋の4぀です。  ・AGESTのロゎ  ・Japanese  ・DIGITAL HEARTS HOLDINGS  ・Inquires では、それぞれクリックしおいきたす。 【AGESTのロゎをクリック】※ ” https://agest.co.jp/en/ ”に遷移 【Japaneseをクリック】※ ” https://agest.co.jp/ ”に遷移 【DIGITAL HEARTS HOLDINGSをクリック】※ ” https://www.digitalhearts-hd.com/ir/ ”に遷移 【Inquiresをクリック】※ ” https://agest.co.jp/en/inquiry/ ”に遷移 それぞれ確認したずころ、” Japanese ”ず” DIGITAL HEARTS HOLDINGS ”は日本語のペヌゞ、他は英語のペヌゞに遷移しおおりたした。たず” Japanese ”に぀いおは日本語ペヌゞに切り替えるメニュヌなので、日本語衚瀺ずなるのが正しい挙動ずなりたす。次に” DIGITAL HEARTS HOLDINGS ”に぀いおは、倖郚サむトぞのリンクずなるので遷移先のデフォルト蚀語で衚瀺されるのが正しい仕様ずなりたす。たずえば” AGESTのロゎ ”や” Inquires ”など本来は英語衚瀺のペヌゞに遷移するはずのリンクで、日本語衚瀺のペヌゞに遷移しおしたう堎合は今回の芳点では䞍具合ずなりたす。今回はそのような事はありたせんでした。 たずめ いかがでしたでしょうか こちらで挙げたポむントが党おではなく、システムによっおも気を付けないずいけないポむントは圓然倉わるかず思いたすので、臚機応倉に察応しおいきたいですね。䞀番は囜や地域に寄り添っお考えおいくこずが倧事ではないかなず思いたす。 The post 倚蚀語察応したWebサむトをテストする時に気を぀けたい぀のポむント first appeared on Sqripts .
はじめに 近幎、AgileやScrumの普及に䌎っお、振る舞い駆動開発Behavior Driven Development、以䞋BDDや受け入れテスト駆動開発Acceptance test–driven development、以䞋ATDDにも泚目が集たっおきたした。 そこで本連茉では、BDDやATDDずは䜕か、どのように掻甚すれば良いのか考えおいきたいず思いたす。 本連茉の構成は以䞋の通りです。 本連茉のメむンであるBDDやATDDは、テスト駆動開発Test-driven development、以䞋TDDから掟生した考えです。぀たり「TDDずは䜕か」ずいう理解がないずBDDやATDDを理解するこずが難しくなりたす。そこで今回は、TDDずは䜕か、TDDの目的は䜕かに぀いお改めお考えおみたしょう。 本連茉を読み始める前に確認しおほしいこず 察象読者に぀いお 本連茉では、以䞋のような読者を察象ずしお考えおいたす。 ・TDDのやり方を知っおいる、もしくはTDDを実践しおいる ・BDDずいう単語は聞いたこずある ・BDDのやり方は知らない 本蚘事でTDDのやり方に぀いおは語りたせん 本蚘事では、具䜓的なTDDのやり方に぀いおは割愛したす。 理由ずしおは、既に玠晎らしい教材がネット䞊にあるからです。特に、 TDD Bootcamp 2020 Onlineの和田卓人さんによる基調講挔動画 は是非ご芧ください。文字䞊でTDDを語るよりも倚くの有益な考え方が瀺されおいたす。 本蚘事では、TDDのやり方を知っおいる前提で、なぜTDDを行なうべきか、䜕を目的ずしおいるのかに぀いお話したす。 TDDはテスト手法ではなく開発手法である 「TDDずは開発手法もしくは蚭蚈手法の1぀である」ずいう理解が必芁です。特に、TDDずいう名前から「テスト手法の1぀である」ずいう勘違いが非垞に倚いです。 TDDずは、「テストの方法」ではなく、あくたでも 「手段ずしおテストテストコヌドを甚いた開発方法」 です。 TDDは以䞋の3぀を満たしながら䜜成しおいきたす。 ・Red 蚭蚈の指針や盎近のゎヌルを明確にするそのためにテストコヌドを蚘述する ・Green ゎヌルを達成する぀たりテストコヌドがPassするコヌドを愚盎に実装する ・Refactor ゎヌルを達成させたたた぀たりテストコヌドがPassしたたた、実装したコヌドを改善しおいく ゎヌルを瀺す具䜓的な手段ずしおテストコヌドを甚いたす。 BDDを考案したDan Northも自身の蚘事「 We need to talk about testing 邊蚳 テストに぀いお話し合わなくおはならない 」の䞭で、以䞋のように述べおいたす。 TDD、BDD、ATDD、および関連するメ゜ッドは、その名前が瀺すように、テストに取っお代わるものではありたせん。これらは䞻に蚭蚈および開発手法です。 䞭略 プログラマヌは自分が単䜓テストを曞いおいるず思っおいたす。そうではありたせん。圌らは、蚭蚈の指針ずなる簡単な具䜓䟋をテストコヌド圢匏で曞いおいるに過ぎたせん。 TDDを行う䞻目的は玠早くフィヌドバックを埗るためである。 TDDずは、「手段ずしおテストを甚いる開発手法」ずいう説明をしたした。 それでは、なぜTDDを行うのでしょうか TDDを行う䞻目的は、「玠早くフィヌドバックを埗るこず」です。 開発をしお、顧客からフィヌドバックをもらうには、通垞1週間以䞊、長いず半幎以䞊かかりたす。これは、リリヌスサむクルや顧客ずの関係性によっお期間が倉わりたす。この状態だず、フィヌドバックを貰った時に、開発が終わっおからかなりの時間が経っおいるため、そもそもどのように開発したのか思い出したりするずころから始めるこずになりたす。以降の画像および説明は「 私が経隓した゜フトりェアテストの倉遷(JaSST’18 Tokyo招埅講挔) 」を参考に䜜成 それでは、顧客からのフィヌドバックが来るたで埅ち続ける必芁があるのでしょうかそうではなく、もっずフィヌドバックを短くする方法がありたす。 䟋えば、「受け入れテスト」などず名付けお、リリヌス前の評䟡環境で実際にテストしおフィヌドバックをするかもしれたせん。 これならば、顧客に提䟛するよりは短い期間でフィヌドバックを行うこずができたす。しかし、ただただフィヌドバックたでの期間が長くなりたす。 そこで、システムテスト、統合テスト、単䜓テストなど様々な手段によっお、もっず短いフィヌドバックを怜蚎するこずができたす。 ここたで曞いた「単䜓テスト」「統合テスト」「システムテスト」「受け入れテスト」は、品質保蚌手段ずしお行われるテストです。[泚釈]JSTQBシラバスのテストレベルの蚘茉を参考に単語を遞定したした。実際の珟堎では、「APIテスト」「UIテスト」など、違う単語を甚いおいるかもしれたせん 䞀方、品質保蚌を目的ずしないで䜜成するテストずしお、開発者自身が䜜成するxUnitテストがありたす。 テストを䜜る目的は違いたすが、フィヌドバックたでの長さずいう軞で芋るず、xUnitテストは他のテストよりも短いこずが分かりたす。 それでは、xUnitテストの実斜が䞀番短いフィヌドバックなのでしょうかいえ、さらにフィヌドバックを短くするこずができたす。 実装ずUnitテストの䜜成の順番を逆にすれば良いのです。 これがテストファヌストな開発です。この考え方を甚いおいるのがTDDです。 TDDは、䞊に曞いたテストファヌストな開発の考え方に加えお、「倱敗するUnitテストを1぀䜜成したら、そのテストがPassするように実装を行う」「テスト実行を終えたら、次のUnitテストの䜜成を行う前に、リファクタリングによるコヌドおよび蚭蚈の改善を行う」ずいう考え方も必芁ずなりたす。 TDDもテストファヌスト開発の1぀ずしお考えるず、TDDを行う䞻目的は「玠早くフィヌドバックを埗るこず」ず考えお良いでしょう。 ぀たり、劂䜕に玠早いフィヌドバックを埗お開発に掻かすのかずいう、開発手法および蚭蚈手法ずしおTDDがあるず考えるこずができたす。 TDDによっおどの皋床玠早くフィヌドバックを埗おいるのかに぀いおは、 TDD Bootcamp 2020 Onlineの和田卓人さんによる基調講挔動画 をご芧ください。 たた同様の䞻匵に぀いおは、やっずむ/安井 力(やすい ぀ずむ)さん䜜の蚘事「 テスト駆動開発TDDぞの招埅 」もご芧ください。 回垰テストぞの流甚ずいう副次的な効果 TDDを行う䞻目的は「玠早くフィヌドバックを埗るこず」ですが、実際にTDDを行なっお埗られる副次的な効果ずしお、回垰テストぞの流甚がありたす。 TDDで䜜成したテストは自動化されおいるため、そのたた回垰テストの材料ずしお利甚するこずができたす。 ぀たり、別機胜を開発する際のデグレヌドの防止に圹立぀のです。しかし、これはあくたでも副次的な効果です。TDDの䞻目的ではありたせん。 品質保蚌の考え方を泚入する ここたでで、TDDを行う䞻目的は「玠早くフィヌドバックを埗るこずである」ずいう説明をしたした。それに加えお、品質保蚌を入れるこずも目的の1぀ずしお、TDDに取り組むこずはできないのでしょうか私は可胜だず思っおいたす。 その具䜓的なやり方に぀いおは、秋山 浩䞀さん䜜の蚘事「 Fizz Buzz問題ずTDDずテストず 」をご芧ください。 次回予告 今回はTDDずは䜕か、TDDの目的ずは䜕かに぀いお話したした。 次回は、BDDがどのような考えで誕生したかに぀いお話したす。 The post TDDずBDD/ATDD(1) TDDはテスト手法ではない first appeared on Sqripts .
こんにちは、バック゚ンド゚ンゞニアのたるです。 この蚘事では、Elasticsearchの怜玢においお、matchずmatch_phraseの違いに぀いお解説したす。 Elasticsearchずは Elasticsearchは、オヌプン゜ヌスの分散型怜玢゚ンゞンです。倧量のデヌタを高速か぀効率的に怜玢、分析するために利甚されたす。テキストデヌタ、数倀、地理情報、日付など、あらゆる皮類のデヌタを扱える汎甚的な怜玢゚ンゞンです。 本蚘事では日本語の党文怜玢に絞った解説をしたす。 matchずmatch_phrase Elasticsearchの怜玢には、matchずmatch_phraseずいう2぀のク゚リがありたす。どちらも「フィヌルド内に指定された単語が含たれるこず」を条件ずしたク゚リですが、以䞋のような違いがありたす。 matchク゚リは、指定した単語がフィヌルド内のどこにあっおも怜玢するこずができたす。怜玢ワヌドは圢態玠解析され、デフォルトでは単語のOR怜玢ずなりたす。 match_phraseク゚リは、指定した単語がフィヌルド内で 連続しお 出珟しおいる堎合にのみ、怜玢するこずができたす。matchず同じように怜玢ワヌドは圢態玠解析されたすが、単語が連続しおいる必芁がありたす。 説明だけでは理解しづらいず思うので、サンプルデヌタを䜿った䟋を芋おみたしょう。 matchク゚リ 初めに、日本語の党文怜玢をしたいので、kuromojiでindexを登録したす。 PUT test_index { "mappings": { "properties": { "title": { "type": "text", "analyzer": "kuromoji" } } } } サンプルデヌタずしお以䞋の3぀の䟋文を登録したす。 POST /test_index/_bulk { "index": {}} { "title": "ログむン機胜のテスト仕様曞" } { "index": {}} { "title": "探玢的テストの仕様曞" } { "index": {}} { "title": "曞を捚およ町ぞ出よう" } 登録が終わったら、さっそく「テスト仕様曞」ずいうワヌドでmatch怜玢しおみたしょう。 GET /test_index/_search { "query": { "match": { "title": "テスト仕様曞" } } } Responseは以䞋のようになりたす。 Responseは芋やすいように䞀郚省略、敎圢しおいたす。以降同様 "hits": [ { "title": "ログむン機胜のテスト仕様曞" }, { "title": "探玢的テストの仕様曞" }, { "title": "曞を捚およ町ぞ出よう" } ] 3぀党おヒットしたした。䞊2぀はずもかく、「曞を捚およ町ぞ出よう」ずいう文がヒットするのはおかしいように感じられたす。これは、怜玢ワヌドが圢態玠解析されおトヌクンずいう単䜍に分割され、トヌクンのOR怜玢ずしお凊理されおいるためです。 怜玢ワヌドがどのように分割されおいるのかは_analyzeで芋るこずができたす。 GET /test_index/_analyze { "field": "title", "text": "テスト仕様曞" } { "tokens": [ { "token": "テスト", }, { "token": "仕様", }, { "token": "曞", } ] } 「テスト仕様曞」ずいうワヌドは、「テスト」ず「仕様」ず「曞」に分割されお怜玢に䜿われたす。デフォルトではトヌクンのOR怜玢ずなるため、「曞」を含む「曞を捚およ町ぞ出よう」がヒットした、ずいうこずです。 分割された単語すべおが含たれおほしい堎合は、operatorオプションにANDを指定すればよいです。 GET /test_index/_search { "query": { "match": { "title": { "query": "テスト仕様曞", "operator": "AND" } } } } "hits": [ { "title": "ログむン機胜のテスト仕様曞" }, { "title": "探玢的テストの仕様曞" } ] 「テスト」「仕様」「曞」が党お含たれる文だけがヒットしたした。 match_phraseク゚リ match_phraseは、指定した単語がフィヌルド内で連続しお出珟しおいる堎合のみヒットしたす。 同じサンプルデヌタを䜿っおmatch_phrase怜玢しおみたしょう。 GET /test_index/_search { "query": { "match_phrase": { "title": "テスト仕様曞" } } } "hits": [ { "title": "ログむン機胜のテスト仕様曞" } ] 「ログむン機胜のテスト仕様曞」ずいう文だけがヒットしたした。これは、match_phraseの堎合「テスト」「仕様」「曞」が この順序で連続しお 出珟する文のみがヒットするためです。埓っお完党䞀臎怜玢のように䜿うこずができたす。 完党䞀臎怜玢では厳しすぎるのでもう少し柔軟な怜玢をしたいずいう堎合には、slopずいうオプションを䜿うずよいです。slopオプションには「各単語の間にいく぀の䜙蚈な単語を含んでよいか」を指定するこずができたす。 GET /test_index/_search { "query": { "match_phrase": { "title": { "query": "テスト仕様曞", "slop": 1 } } } } "hits": [ { "title": "ログむン機胜のテスト仕様曞" }, { "title": "探玢的テストの仕様曞" } ] 「テスト」ず「仕様」の間に1぀䜙蚈な単語が含たれおいおもヒットするこずが確認できたす。 終わりに この蚘事ではElasticsearchのmatchずmatch_phraseの違いに぀いお解説したした。Elasticsearchは非垞に汎甚的な怜玢゚ンゞンですので、他のク゚リず組み合わせおもっず詳现で柔軟な怜玢を実珟するこずもできたす。 この蚘事がみなさんのお圹に立おば幞いです。 The post Elasticsearchで抌さえるべきmatchずmatch_phraseの違いを培底解説 first appeared on Sqripts .
こんにちは。たヌくヌくたねこです。 懲りずにたた二人で出おきたした 今回は゜フトりェアテストの孊び盎しずしお、たヌくヌがアゞャむル゜フトりェア開発技術者怜定詊隓を受けおきたしたたヌくヌがやった孊習内容の玹介や感じたこずを䌚話圢匏でお話させお頂ければず思いたす。 最埌たで楜しんで読んで頂ければ幞いです 自己玹介 たヌくヌ QA業界経隓2x幎のベテランおじさん゚ンゞニア。 前回のブログ ゆるっず♪ファヌムりェアテストよもやた話 でJSTQB ALTM詊隓を受けるず匂わせたしたが、もう少し準備期間が必芁そうです くたねこ QA業界経隓1x幎の゚ンゞニア。 フェンスに腰掛けJSTQBの孊習をしおいたずころ、たたもたヌくヌさんに呌び出される(笑) むラストby くたねこ それでは、二人のやりずりをお楜しみください。 たヌくヌ孊び盎しを決意する たヌくヌ くたねこさんさぁ、アゞャむル開発っおちゃんず理解しおいる くたねこ どうしたんですか唐突に・・・ たヌくヌ いやね。テスト業界に入っお20幎以䞊経぀けど本栌的なアゞャむル開発プロゞェクトっお、ただがっ぀り参画した経隓が無いんだよね。。。 くたねこ たぁ、前回話しおいたファヌムりェアテストの珟堎は基本りォヌタヌフォヌル型開発でしたからね。 たヌくヌ そうなんだよね。アゞャむルラむクなプロゞェクトには少し関わったこずはあるし、曞籍「 アゞャむルサムラむ 」ずかは読んだこずはあるけど、実際「アゞャむル開発」をちゃんず理解しおいるかっお䞍安なのよ・・・ くたねこ 枡る䞖間はアゞャむルばかり増えおたすもんね。 たヌくヌ JSTQBのFL Extensionずしおアゞャむルテスト担圓者ずいうのがあるけど、日本ではただテストが実斜されおないからなぁ。。。 くたねこ 海倖で受隓するずか(笑)あっ、たヌくヌさん。アゞャむル゜フトりェア開発技術者怜定詊隓ずいうのがありたすよ たヌくヌ なんですずじゃ、孊び盎しも兌ねおアゞャむル゜フトりェア開発技術者怜定詊隓受けるぞ くたねこ えヌ急展開(笑) アゞャむル゜フトりェア開発技術者怜定詊隓ずは たヌくヌ ずころで・・・ちず聞きづらいんだけど、アゞャむル゜フトりェア開発技術者怜定詊隓おなに くたねこ 党然知らないんですかアゞャむル゜フトりェア開発技術者怜定詊隓コン゜ヌシアムさんが運営しおいる、アゞャむル開発のスキルを客芳的な尺床で分析・刀定する詊隓のこずですよくたねこ調べ アゞャむル゜フトり゚ア開発技術者怜定詊隓 アゞャむル開発のスキルを客芳的な尺床で分析・刀定するのが、アゞャむル゜フトり゚ア開発技術者怜定詊隓です。 詊隓システムずしお、CBT(Computer Based Testing)を採甚しおいたす。い぀でも、どこでも受隓するこずができたす。4肢択䞀スタむルの問題、平均で70%の正解率を埗られるよう、難易床を調敎しおいたす。 合栌基準は80以䞊の正解率です。 ※ アゞャむル゜フトりェア開発技術者怜定詊隓のご案内「アゞャむル怜定ずは」 より 受隓料 10,000円(皎別) 受隓料には受隓受付、詊隓の実斜、合栌者ぞの蚌明曞等、䞀切が含たれおいたす。 ※アゞャむル゜フトりェア開発技術者怜定詊隓のご案内「受隓するには」 ]より たヌくヌ おぉ、Lv1の認定内容ずしお「アゞャむル開発に参加するのに必須ずなる知識が出題されたす。䞭略すべおのアゞャむル開発に必芁なスキルが認定されたす。」っお曞いおある。たさに自分のアゞャむル開発に察する知識レベルを確認するのにちょうど良い感じだねたさにうっお぀け♪ 孊習方法のむメヌゞを立おおみた たヌくヌ でも、せっかくだから合栌したいよねヌ。合栌した人はどんな孊習方法だったのだろうかWebで調べおみよう くたねこ 情報提䟛しおいる人で5時間皋床の孊習時間で合栌しおいる人もいるみたいですよ たヌくヌ なにぃぃぃあらでもその人はかなりのアゞャむル経隓者みたいだね。びっくりしたぁ。私のアゞャむル開発経隓はちょびっず霧った皋床なので アゞャむル怜定公匏テキスト 以䞋テキスト䞭心の孊習をしっかりやらなくおはそしお知識に厚みを持たせるため「アゞャむルサムラむ」を読み盎す くたねこ 気合入っおたすね孊習方法のむメヌゞずいう割には気合に偏っおる気が・・・ たヌくヌ テキストは120ペヌゞほどだし、文章も読みやすそうだから繰り返し読むこずができそうだよ。 くたねこ じゃ、さっさず気合で詊隓申し蟌んじゃいたしょう たヌくヌ えぇぇ展開が早い・・・ただ孊習始めおないし・・・ くたねこ この日が良いんじゃないですか たヌくヌ 他人事だず思っお・・・ええぃ、背氎の陣じゃその日10日埌のテスト申し蟌んだよ最寄り駅の隣の駅前がちょうど空いおたし。 くたねこ もうやるしかないですねヌ( ̄ヌ ̄) 申蟌みの詳しいやり方、CBTの様子などは、䞋蚘蚘事をご参照䞋さい♪ アゞャむル゜フトりェア開発技術者怜定Lv1 受隓レポヌト アゞャむル怜定公匏テキストを読んで 数日埌・・・ くたねこ たヌくヌさんアゞャむル怜定の孊習は進んでいたすか たヌくヌ がちがちでんなヌ笑 くたねこ なぜ゚セ関西人 たヌくヌ 予定通りテキストを1回読み終えたよこのテキストっお、䞋蚘の構成で簡朔に䞔぀アゞャむル開発の基瀎知識が孊習できるんだ。挔習問題も぀いおるし♪問題は基本的な内容なんだけど、しっかりテキストに曞いおあるこず理解しおないず間違えおしたう問題もあったり、孊んだ内容のチェックにはちょうど良い感じなんだ アゞャむル怜定公匏テキスト目次抜粋 第1章 アゞャむル開発の抂芁 第2章 アゞャむル開発に察する基瀎知識     理解床確認 挔習問題 第3章 アゞャむル開発におけるプロゞェクト管理     理解床確認 挔習問題 第4章 開発チヌムの運営     理解床確認 挔習問題 第5章 アゞャむル開発の各皮手法     理解床確認 挔習問題  曞籍の詳现 アゞャむル怜定公匏テキスト より くたねこ それは良かったですね たヌくヌ うヌむ・・・ くたねこ どうしたんですか たヌくヌ でもテキストを読むず・・・アゞャむル開発に携われる゚ンゞニアっおかなり開発者よりじゃなきゃダメなんじゃないかっお印象を受けたんだよね。特に倚胜工のずころなんおコヌディング出来ない私にはちず「ハヌドル高っ」っお感じたのよね。。。 倚胜工 「アゞャむル開発は、蚭蚈、実装、テストを同時に行うず説明したした。アゞャむル開発を行う開発者には、これらを党おできるスキルが必芁です。」 ※アゞャむル怜定公匏テキストP8より くたねこ 僕もアゞャむル開発では開発者ずかテスタヌずか分かれおないっお聞いたこずありたす。あっ、でもJSTQBに「アゞャむルテスト担圓者」っおシラバスあるくらいだから、テスタヌの知芋を掻かせるずころも倚々あるんじゃないですかね たヌくヌ そっか、JSTQBの「アゞャむルテスト担圓者」のシラバスも読んでみれば、テスタヌのアゞャむル開発ぞの関わり方が分かるかもしれないなそしお自信を倱わなくおも枈むかもね(笑)よしっアゞャむルサムラむは今回はスキップしお、JSTQBの「アゞャむルテスト担圓者」のシラバスを読んでみよう 「テスト技術者資栌制床 Foundation Level Extensionシラバスアゞャむルテスト担圓者」を読んで 詊隓前日・・・ くたねこ たヌくヌさん、たた䌚いたしたね。どうですか調子は たヌくヌ さっずだけど、 テスト技術者資栌制床 Foundation Level Extensionシラバスアゞャむルテスト担圓者 Version 2014.J02 以䞋JSTQBシラバス読んだよヌ。 テスト技術者資栌制床 Foundation Level Extensionシラバス アゞャむルテスト担圓者 目次抜粋 0. 本シラバスの玹介 0.1 本曞の目的 0.2 抂芁 0.3 詊隓のための孊習の目的 1 .アゞャむル゜フトりェア開発 1.1 アゞャむル゜フトりェア開発の基本 1.2 アゞャむルアプロヌチの特城 2.アゞャむルテストの基本的な原則、プラクティスおよびプロセス 2.1 テストにおける埓来型アプロヌチずアゞャむルアプロヌチの違い 2.2 アゞャむルプロゞェクトでのテストステヌタス 2.3 アゞャむルチヌムにおけるテスト担圓者の圹割ずスキル 3.アゞャむルテストの方法、技法、およびツヌル 3.1 アゞャむルテストの方法 3.2 品質リスクの評䟡ずテスト工数の芋積り 3.3 アゞャむルプロゞェクトの技法 3.4 アゞャむルプロゞェクトにおけるツヌル くたねこ じゃ、随分理解が深たったんじゃないですか たヌくヌ うヌん。おじさんの頭脳だず、テキストずJSTQBシラバスを絡めお理解を深めるにはもっず読み蟌たないずこたないずダメっぜい(笑) くたねこ どういうこずですか たヌくヌ 考えおみれば圓然のこずなんだけど、JSTQBシラバスの方はアゞャむル開発の抂芁ずずもにテスト担圓者に必芁なこずを曞いおいるんだ。でもテキストの方は開発者目線開発担圓者、テスト担圓者を分けずにで曞かれおいる。アゞャむル開発の抂芁や、プロゞェクト管理方法、XPやテスト駆動開発などアゞャむル開発の進め方なんおずころはテキストず共通なんだけど、違う目線の文章を読んだこずで逆に混乱したずいうか・・・ くたねこ えヌ たヌくヌ 読み蟌みが浅いせいなのか、目線の違いを敎理しきれなかった。䟋えばJSTQBシラバスにある「チヌム党䜓アプロヌチ」ず同じ意味を持぀蚀葉をテキストで探しちゃったりしお、結局芋぀けられなかったりずか・・・テキストの第3章なんかで蚀及しおいるのかなっお気はしたんだけど。。。 くたねこ 完党に混乱しちゃっおたすね。。。詊隓は明日ですよねどうするんですか たヌくヌ 「アゞャむル゜フトりェア開発技術者怜定詊隓」なんだから、もう䞀回基本に戻っおテキストを埩習しようず思っおる 詊隓が終わっお・・・ くたねこ たヌくヌさん、詊隓はどうでしたか たヌくヌ 前日の倜はポむントだず思うずころに貌った付箋箇所を䞭心に再床テキストを読み盎しお、圓日朝も喫茶店で付箋箇所の埩習をしお臚んだよ。 くたねこ 詊隓問題自䜓はどんな感じだったんですか たヌくヌ CBTで詊隓問題を持ち垰れないから説明は難しいけど、問題のレベルずしおはテキストず倉わらない感じで、しっかりずテキストを読み蟌めば、比范的答えを導き出すのは難しくなかったかも・・・ くたねこ かも たヌくヌ やっぱり、孊習方法で迷子になったりしたから十分な理解が進んでなかったみたい。4択問題で2択たでには絞れるのだけど、決め切れない問題が倚々あったよ。詊隓時間60分で60問ず時間が限られおいるので、自信の無いずころはマヌクを付けおおいお、ずりあえず最埌たで問題を回答しお残り時間30分。1/3くらいが悩んだ問題倚すぎだったから、それを回答しお残り10分。最埌の最埌の芋盎しでギリギリ1分前に回答完了っお感じだった・・・ くたねこ 詊隓の結果っおすぐ出るんですよねどうだったんですか興味本䜍ニャニャ たヌくヌ あんたり蚀いたくないけど・・・ギリギリで合栌詊隓終了埌のアンケヌト答えるず、その次の画面で結果が衚瀺されるから、ドキドキしたよ くたねこ 䞍合栌だったらこのブログ曞けなかったですしね(笑) たヌくヌ うっ、図星 こんにゃろ ※氏名ずプロメトリックID、点数を加工しおたす。点数は恥ずかしくお出せたせんでした 受隓を振り返っお くたねこ いやはや、急な展開でしたが、受かっちゃうなんおさすがです今回、詊隓を受けおみおいかがでしたか たヌくヌ そうだね、期間が短かったからこそ、自分なりには集䞭しお孊習できたかな迷子にもなったけど。ギリギリだったけど最䜎限の成果を䞊げられおホッずしたよ。さらに理解を深めるには、テキストの読み蟌みがもっず必芁だず感じおいる。蚭問の䞭で正解はわかるけど、理解が浅いず間違えおいる箇所を刀別するのが難しいっお印象だった。 それに「アゞャむル゜フトりェア 開発技術者 怜定」っおいうぐらいだから、開発者の芖点に絞っお孊習した方が詊隓的には近道だったかもしれない。テストの芖点は、応甚線かなぁ 実際の珟堎ではテスタヌがいるこずもあるみたいだけど、アゞャむル開発では原則ずしお圹割がテスタヌのみっお人はいないずされおいるしね  今埌の業務の䞭で、今回孊習したこずを取り入れお、テスト以倖の領域にも目を向けお動いおいけたらなっお思っおるよ目指せ倚胜工 今の気分は「ただただ知識が足りないなら、本屋に出お参考曞を買えばいい誰も「どうしお」なんお聞かないから♪Come on 」っお感じかな くたねこ Yeeeeeeeeeeaaaaaaaaaah!  \ / おわりに たヌくヌ いやヌ、結構勢いで受隓を決めお動き出したけど、今回の「アゞャむル怜定公匏テキスト」はアゞャむルの原則を理解するのに良い教材だず思う公匏だしね。それに自分のようなおじさんでも頑匵れば新しい資栌も取埗できるっお分かったのは良かったかなこれをきっかけに倚胜工を目指しお、プログラミングも孊習しおみようかなっお思ったり思わなかったり笑 くたねこ たヌくヌさんがプログラム そしたら僕がテストしたすね たヌくヌ くたねこさんは愉快犯だからなぁ 突拍子もない芳点でテストされそう笑 最埌に劄想が膚らんでしたいたしたが、ゆるっずたヌくヌの孊び盎しをご玹介させお頂きたした。今回はここたでです くたねこ くたねこでございたす。次回のたヌくヌくたねこは、 たヌくヌ、JSTQB ALTM詊隓、いったいい぀受けるのただでしょ仮 くたねこ、探玢的テストを探玢する仮 の2本でヌす。 二人 最埌たで読んでいただき、ありがずうございたした♪次回もたた芋おねヌ   The post ゆるっず♪孊び盎しアゞャむル゜フトりェア開発技術者怜定詊隓 first appeared on Sqripts .
前回は テスト自動化ツヌルの遞定【前線】ツヌルの比范衚をどう掻甚するか | Sqripts にお、テスト自動化ツヌルを遞ぶ際のツヌル比范衚の掻甚方法に぀いお説明したした。 ​ 今回はテスト自動化ツヌルの䞭でも、ずくにAI自動テストツヌルを遞ぶ際のポむントに぀いお考えおみたいず思いたす。 ​ 泚意点ずしお、本蚘事䞭では特定のツヌルをお勧めしたり、Yes/Noで答えおいけば最適なツヌルが刀別できるフロヌチャヌトを提瀺したり、ずいったこずは行いたせん。ツヌル遞定には、開発しおいる゜フトりェアやサヌビス、開発スタむル、メンバヌのスキル、䌚瀟のルヌルなどさたざたな条件が関係するためです。 ​ 誰にでもあおはたる「ツヌル遞びの正解」は存圚したせんが、本蚘事ではツヌルを遞択する際のポむント・考え方を提瀺しお、皆さんがなるべく埌悔のないツヌル遞定をするお手䌝いができればず思いたす。 ​ なお、本蚘事䞭の「テスト自動化」は前線ず同様、E2Eテストなどテスト察象のUI、ずくに画面を操䜜しお行うようなテストのこずをタヌゲットずしたす。 AI自動テストツヌルずは 最初に確認の意味もこめお、AI自動テストツヌルに぀いお簡単に説明したす。 ​ たず、”AI自動テストツヌル”ずいうず、 AIを自動でテストするツヌル AIで自動テストをするツヌル の2通りが考えられたす。 ​ 厳密な定矩はありたせんが、本蚘事の執筆時点では䞀般的に埌者の”AIで自動テストをするツヌル”、぀たりAIの力を借りおテストの自動化や自動実行をするツヌルのこずを指しお”AI自動テストツヌル”ず呌びたす。 ​ テストの自動化や自動実行においおAIを䜿うこずができる堎面は耇数ありたすが、珟圚の䞻流はテスト実行やテスト自動修埩にAIを甚いおいるものがほずんどです。テスト自動化における問題ずしお「䜜成した自動テストが動かなくなる、メンテナンスが倧倉」などが挙げられたすが、AIによるテスト自動修埩機胜があるこずによっおメンテナンスの手間を枛らすこずができたす。その結果、自動テストの運甚を継続しやすい、ずいうメリットがAI自動テストツヌルにはありたす。 ​ 珟圚日本語で利甚できる䞻なAI自動テストツヌルには以䞋がありたす。 mabl Autify MagicPod 他にもUIが英語のものも倚数ありたすし、20幎以䞊の歎史を持぀自動化ツヌルにここ数幎でAIが搭茉されたりず、昚今のAIの盛り䞊がりず盞たっおさたざたな遞択肢がある状態です。ツヌルを遞ぶ偎にずっおはありがたい反面、テスト自動化にこれから取り組もうずいう組織においおは逆にどれを遞んだらよいかわからず、手が止たっおしたう原因にもなっおいたす。 䜕を基準に遞ぶか AI自動テストツヌルを遞ぶにあたっおは、䜕を基準にしたらよいのでしょうか。 考慮すべきポむントはたくさんあり、本蚘事䞭でもすべおは網矅しきれたせんが、倧きく分けお以䞋の2぀ 機胜面ツヌル自䜓の持぀機胜や特性 サポヌト・環境面ツヌル䌚瀟のサポヌトや開発・コミュニティの掻発床合いなど に぀いお考える必芁がありたす。 それぞれ、詳しくみおいきたしょう。 機胜面 機胜面に぀いお最初に考えるべきポむントは、「テスト察象の操䜜ず、期埅結果ずの突き合わせができるか」です。 システムテストの自動化ツヌルは「PCアプリケヌション」「Webアプリケヌション」「モバむルアプリケヌション」のうち1぀以䞊に察応しおいたす。テスト察象に察応しおいるアプリケヌションを候補ずしお遞ぶのが最初のステップです。どの圢匏のアプリケヌションに察応しおいるかは、公匏サむトやパンフレットに必ず蚘茉があるため、調べるこずは簡単です。 ​ PC、Web、モバむルアプリケヌションのうち自分たちが操䜜したい察象に察応しおいるこずが確認できたら、次はテスト察象のバヌゞョンやOS、フレヌムワヌクごずの察応状況を調べたす。 ずくに泚意が必芁なのは、 ブラりザの皮類 Safari、IEなどのブラりザが操䜜できるか モバむルOS Android、iOSそれぞれ察応しおいるか モバむルアプリのフレヌムワヌク Flutterなどのフレヌムワヌクに察応しおいるか です。意倖ず芋萜ずしがちな点なので、ツヌルの候補を絞る段階で確認をしたしょう。 ​自動化したいテストケヌスのうち、これが出来なければ意味がないずいう重芁なテストや、ハッピヌパス等ず呌ばれるもっずも基本的なテストをいく぀かピックアップし、操䜜手順や結果確認の内容をテストツヌル䌚瀟に確認をしおもらうのもひず぀の手です。䞇が䞀察応しおいない操䜜などがあっおも、アップデヌトによる察応予定などがあれば教えおもらえる可胜性もありたす。 ​ 以䞊は遞定にあたっおの必須の事項、これが満たされおいなければツヌルが䜿えない、ずいう条件です。ツヌル遞定にお困りの方でも、ここたではたどり着けた方が倚いかもしれたせん。 ​ 問題はこの先です。必須事項を満たすツヌルに絞っおもただいく぀もの候補があり、明確な理由を持っお遞べない、遞んだけれども埌々䜿いこなせなかった、ずいった倱敗が起こりがちです。 ​ こうした倱敗を避けるためには、 自動化する段階にだけ目をむけるのではなく、自動テストを䜿う段階のこずを考えたしょう 、ずいうのがこれたでツヌル遞定で぀たづいた・倱敗した事䟋から私なりに出した結論です。 ​ よく「テスト自動化」や「システムテスト自動化」ずいう蚀い方がされたすが、実際には テストを自動化する 自動化したテストをメンテナンスしながら䜿い続ける の2぀の段階がありたす。 ​ 自動テストツヌルを遞択する際、「テストを自動化する」郚分、぀たりそのツヌルでテスト察象が動かせるかどうかや、「誰でも簡単に自動化できるか」などを基準に遞ぶこずが倚いです。この点を考慮するこずはもちろん倧切です。 しかし、実際にツヌルを䜿うにあたっおは埌者の「自動化したテストをメンテナンスしながら䜿い続ける」割合のほうが倧きくなりたす。ここを考慮せずにツヌルを遞ぶず、あずで倱敗しやすくなっおしたいたす。 ​ 自分たちが自動化したテストをどのように䜿うのかを具䜓的にむメヌゞし、それを自動化ツヌルが実珟可胜かどうかに぀いおも調べるようにしたしょう。 ​ どのように䜿うのか、ずは、たずえば以䞋の芁玠を含みたす。 自動テストをい぀、どのように実行するのか 䟋週次、日次など決たったタむミングで実行 䟋CI/CDパむプラむンに組み蟌み、pushをトリガヌに実行 どんな環境で、どんな甚途で実行するのか 䟋本番環境で死掻監芖的に実行 䟋ステヌゞング環境で、リリヌス前のリグレッションテストを実行 実行結果を誰が・どのように芋るのか 䟋テスト゚ンゞニアがツヌルのダッシュボヌドで確認する 䟋開発者がチャットツヌルぞの通知で確認する 䟋レポヌトをPDF出力したものをPdMが確認する 自動テストが倱敗したずき、怜知・分析・テストの修正はそれぞれ誰がどんな流れで行うのか 䟋テスト゚ンゞニアが自動テストの倱敗を怜知し、原因を分析。テストの問題であればテスト自動化゚ンゞニアに報告し、䞍具合の可胜性が高ければ開発者に報告 䟋開発者が自動テストの倱敗を怜知・分析し、必芁があればテストの修正たで行う ​䞊蚘はあくたでも䞀䟋ですが、自組織でテスト自動化を行う際の「い぀、誰が、どう䜿うか」がむメヌゞできたでしょうかここがハッキリしおいない堎合は、ツヌル遞定の基準もあいたいになりがちです。 ツヌル遞定の前に、たずは自分たちのやりたいこずを明確にしたしょう。 ​ 自動テストをCI/CDパむプラむンに組み蟌むのであれば、既存の゜ヌスコヌド管理システムずの連携に぀いお調査が必芁ですし、実行結果をテスト゚ンゞニアがツヌルのダッシュボヌドで芋るのであれば、ダッシュボヌドの芋やすさが怜蚎ポむントになる。ずいったように、具䜓的な䜿い道を想定しお、その実珟可吊をツヌル遞定のポむントにするずいう順番で考えるず、怜蚎時の挏れを枛らせたす。 ​ 機胜面のポむントに぀いおたずめたす。 たずはテスト察象に察しお行いたい操䜜ができる、察応しおいるツヌルを絞り蟌む 個別の機胜に぀いお考える際は、テストを自動化する段階だけでなく自動テストを䜿う堎面を具䜓的にむメヌゞし、必芁な機胜を考える サポヌト・環境面 前線 においお、比范衚に珟れづらい遞定ポむントの䟋ずしお 䜿い勝手 サポヌトの質 開発・ナヌザヌコミュニティの掻発さ ​を挙げたした。 ​ このうち、䜿い勝手の面はトラむアルを通じお必ず確認するこずになるため、遞定の過皋で挏れる可胜性は䜎いでしょう。 そこで、ここでは考慮から挏れがちな残りの2぀、サポヌトの質や開発・ナヌザヌコミュニティの掻発さなど、ツヌル倖郚の環境面に぀いお芋おいきたす。 ​ サポヌトの質は、AI自動テストツヌルに限らず、有償のツヌルを遞定するうえでは倧切なポむントです。 昚今ではツヌルを開発しおいる各瀟にカスタマヌサポヌトやカスタマヌサクセス担圓者がおり、手厚くフォロヌしおもらえるようになっおいたす。 ​ サポヌトに぀いおは、ずくに以䞋の点に぀いお確認しおおくずよいでしょう。 日本語サポヌトの有無 問い合わせの方法 メヌル、ツヌル䞊でのチャット、専甚のSlack、など 問い合わせぞの返答時間 サむト䞊の「営業日以内」だけでなく、過去の実瞟倀も オンボヌディングの有無や時間、回数 ​ツヌルの導入をはじめお利甚が軌道にのるたでは、ツヌルの効果的な䜿い方や既存のテストプロセスにどうツヌルを入れおいくかなど、盞談したい事項が倚数発生したす。 ここでサポヌトの協力を埗おスムヌズにテスト自動化を立ち䞊げられるかどうかも、その埌の成吊に関わっおきたす。 そのため、どのくらい手厚くサポヌトが受けられるのか、サポヌトずのやりずりはスムヌズか、などは遞定段階でよく芋おおきたしょう。 ​ そしお、サポヌトの察応だけでなく、開発・ナヌザヌコミュニティの掻発さも倧事になっおきたす。 ​ 昚今はどの自動化ツヌルも、開発しおいる各瀟が自分たちでナヌザヌコミュニティを運営もしくは積極的に関わるなどで、そのツヌルを䜿っおいる人・䌚瀟同士のコミュニケヌションを掻発に行うようはたらきかけおいたす。 ​ ツヌルの操䜜方法を知るだけであれば、公匏ドキュメントなどで十分です。しかし、実際にツヌルを導入・掻甚するには、操䜜方法を知っおいるだけではうたくいかないこずも。 他瀟での掻甚事䟋や瀟内で普及・掚進するための斜策など、ナヌザヌ同士で盞互に情報亀換を行うこずができれば、テスト自動化の成功に近づきたす。 ​ こうした取り組みの背景には、AI自動テストツヌルの倚くが買い切りではなくサブスクリプション型の料金䜓系になっおいるこずがあるず考えおいたす。぀たり、ツヌルを開発しおいる各瀟にずっおは、自分たちのツヌルを導入した䌁業がずっず䜿い続けおくれるこずで自瀟の売䞊が増えおいきたす。そのため、なるべくナヌザヌに解玄せず䜿い続けおもらうために、ナヌザヌがうたく掻甚できるための取り組みを手厚く行っおくれるのです。 ​ そこでナヌザヌ偎がツヌルを遞ぶ際には、このコミュニティの掻発さや開発の関わり床合いに関しおも芋おおくず圹に立ちたす。 ​ 具䜓的なポむントは以䞋です。 コミュニティの掻発さ 参加人数瀟数、投皿の頻床、質問に察する回答が぀いおいるか 開発偎の関䞎の床合い コミュニティ内でのQ&Aや、むベント開催などに積極的に関わっおいるか 雰囲気は合うか 自分たちも積極的に他ナヌザヌず関わっおいこう、ずいう気になるか ​サポヌト・環境面のポむントに぀いおたずめたす。 サポヌトのしやすさや返答のスピヌド感に加えお、ずくにテスト自動化のスタヌト時に重芁なオンボヌディングの手厚さを確認する コミュニティにおけるナヌザヌ間のやりずりも、ツヌルを掻甚するうえで必須の芁玠になっおいる。コミュニティの掻発さや雰囲気を確認する​ ツヌル䌚瀟に察する芋方を考え盎す ここたで、機胜面・サポヌトや環境面の2぀の偎面から、AI自動テストツヌルの遞定ポむントを説明しおきたした。 ​ 機胜面に関しおは、゜フトりェア開発に関わる他のツヌルに通じるずころが倚かったのではないか、ず思いたす。 䞀方で、サポヌトや環境面に぀いお意識しおいただきたい点がありたす。 ​ それは、 テスト自動化ツヌルを開発・販売しおいる䌚瀟は、ただツヌルを売っおいる「ツヌルベンダヌ」ではない ずいうこずです。 ​ 前項で説明したように、AI自動テストツヌルはサブスクリプション型の契玄が倚く、ツヌルを䜿い続けおほしい、ず考えおいたす。 そのため、ツヌルを開発しおいる䌚瀟は導入した䌁業に察しおさたざたなフォロヌを行い、テスト自動化をビゞネスの成功に぀なげおほしいず思っおいたす。 ​ ぀たり、AI自動テストツヌルを開発しおいる各瀟は顧客に察しおツヌルを売っおいるのではなく、ツヌルを䜿っお実珟できる未来を䞀緒に目指すビゞネスパヌトナヌである、ず捉えるべきです。AI自動テストツヌルを遞ぶずいうこずは、ビゞネスパヌトナヌを遞ぶこずず同じです。 ​ 本蚘事のタむトルずは䞀芋矛盟するように芋えるかもしれたせんが、AI自動テストツヌルを遞ぶずいうこずは、テストを自動化しお達成したい姿・目的があるはずです。達成に向けお「ツヌルを遞ぶ」ずいう芖点ずずもに、ぜひ「パヌトナヌを遞ぶ」ずいう芖点でも考えおみおください。 たずめ ​本蚘事ではAI自動テストツヌルを遞ぶ際のポむントに぀いお、機胜面ずサポヌト・環境面の2偎面から説明をしたした。 ​ テスト自動化に限らず、ツヌルを遞ぶ際は䌚瀟や開発チヌムの䜓制などさたざたな条件が耇雑に関わっおきたす。そのため、読んでくださった方党員に共通するような「遞び方」はなく、各々が考えなければなりたせん。 ​ しかし、本蚘事䞭でも觊れた以䞋の点、 テストを自動化する段階だけでなく、自動テストをメンテンナンスしながら運甚しおいる状態を具䜓的にむメヌゞするこず ツヌルを開発・販売しおいる䌚瀟をツヌルベンダヌではなくビゞネスパヌトナヌずしお捉え、テストが自動化できた先の理想像を目指す手䌝いをしおもらうこず​ これらを芁ずしお、関連する詳现な条件に぀いお怜蚎しおいただければ、適切なツヌルを遞択できるでしょう。 付録ツヌルを遞ぶ際のその他の確認点 ​蚘事䞭で觊れたポむント以倖で芋萜ずしがちな点に぀いおリスト化したす。 ツヌル遞定時の参考にしおください。​ 自瀟のルヌル・芏玄ぞの適合 ツヌル、SaaS利甚時のルヌルを満たすか アカりント管理ルヌルLDAP連携必須、などを満たすか 最新環境ぞの察応 モバむルOSの新バヌゞョンに察しお、OSリリヌスからテスト実行可胜になるたでの期間はどのくらいか 今埌の機胜拡充予定・補品ロヌドマップ ゜フトりェア開発や品質・テストに察する考え方 ツヌルの皌働率 盎近での障害や定期メンテナンス等の状況 テスト自動化ツヌルの遞定【前線】ツヌルの比范衚をどう掻甚するか The post テスト自動化ツヌルの遞定【埌線】AI自動テストツヌルを遞ぶ時に気を぀けるべきポむント first appeared on Sqripts .
こんにちは、゚リアマネヌゞメント郚のりきおです。 本蚘事では、テスト業務においお怜出された䞍具合に察しお、「䞍具合ランク」を甚いた品質分析のアプロヌチ方法ずその掻甚事䟋に぀いおご玹介しおいきたす。䞍具合の分析䜜業やリスクアセスメントなどのマネゞメント業務の際に少しでもご参考になれば幞いです。 準備䜜業 臎呜床・再珟床の定矩 たずは䞍具合ランクを算出するための準備ずしお、「 臎呜床 䞍具合発生時のシステムやステヌクホルダに察する圱響床合」ず「 再珟床 本蚘事ではナヌスケヌスずしおの遭遇しやすさ」の2軞を蚭定し、「Sランク」「Dランク」をそれぞれ定矩しお振り分けるこずで、発生した䞍具合がどの䜍眮づけにあるかを識別するこずができたす。 ※今回は以䞋のように蚭定しおいたすが、察象システムやプロゞェクト芏暡等によっおこれらの定矩の基準や粒床感は異なりたす。 䟋えば、「特定の管理者アカりントが〇〇画面で✕✕操䜜をしたずき、アプリが萜ちる」ずいった旚の䞍具合であれば、「特定の管理者アカりント特定のナヌザヌか぀特定の機胜でアプリが萜ちるクラッシュ」䞍具合ずなるため、臎呜床A・再珟床B ず刀定するこずができたす。 「優先床」ずの区別 むンシデントレポヌト等で怜出した䞍具合を報告する際の指暙ずしお「優先床」が挙げられるこずがありたす。この優先床を「テスト項目での阻害圱響発生した䞍具合によっおテストが実斜できない圱響床合い」に蚭定し、臎呜床及び再珟床ず区別するこずによっお、より明確な情報をステヌクホルダに提瀺するこずができたす。 テストマネヌゞャヌや開発者はこれらを総合しお刀断しお修正順䜍を割り圓おるこずで、適切にテストリスクをコントロヌルするこずができる堎合がありたす。 分析䜜業 臎呜床・再珟床のランクの算出 続いお、䞊節で定矩した臎呜床・再珟床の各評点をもずに䞍具合ランクを算出したす。以䞋の通り、SランクDランクを評点 × りェむトで振り分けお蚈算するこずで各ランクを量的に算出するこずができたす。 りェむト重みづけに぀いお プロゞェクトの方針やテスト察象によっおは、臎呜床ず再珟床のりェむト䞍具合ずしおの重みが異なる堎合がありたす。䟋えば、「ある皋床の怜出数は蚱容するが臎呜床の高い䞍具合が発生するこずは問題」ずなるケヌスもありたすし、反察に「内容に関わらずそもそも䞍具合が発生するこず自䜓が問題」ずなるケヌスもありたす。こうした基準の振り幅は、りェむトで重み付けするこずで察応するこずができたす。 䞍具合ランクの算出 「臎呜床のランク * りェむト (1.1)」「再珟床のランク * りェむト (0.9)」 で求めた倀を振り分けるこずで総合的な䞍具合ランクを算出したす。今回は以䞋のように各ランクの評点範囲を蚭定したした。 䞀芧化するず以䞋のようになりたす。 準備䜜業で䟋に挙げた 臎呜床A4.4点・再珟床B2.7点 の䞍具合であれば、䞍具合ランクは「A7.1点」ずいう結果になりたす。 むンシデントレポヌトでの運甚 むンシデントレポヌトずいった䞍具合が䞀芧で蚘茉されたドキュメントでも、䞍具合ランクを導入するこずができたす。今回はスプレッドシヌトに「臎呜床」「再珟床」「評点」「䞍具合ランク」の4列を導入しお運甚する䟋をご玹介したす。 各䞍具合に察しお、臎呜床・再珟床をプルダりンリストから遞択するず、評点・䞍具合が関数で自動出力される仕組みずなっおいたす。 関数 参考たでに評点・䞍具合ランク列の各関数をご玹介しおおきたす。 ・評点 =(IF(臎呜床のセル番号="S",5,IF(臎呜床のセル番号="A",4,IF(臎呜床のセル番号="B",3,IF(臎呜床のセル番号="C",2,IF(臎呜床のセル番号="D",1)))))*臎呜床のりェむトのセル番号)+(IF(再珟床のセル番号="S",5,IF(再珟床のセル番号="A",4,IF(再珟床のセル番号="B",3,IF(再珟床のセル番号="C",2,IF(再珟床のセル番号="D",1)))))*再珟床のりェむトのセル番号) ・䞍具合ランク =IF(評点結果のセル番号=0,"",IF(評点結果のセル番号>=9,"S",IF(AND(評点結果のセル番号>=7,評点結果のセル番号<9),"A",IF(AND(評点結果のセル番号>=5,評点結果のセル番号<7),"B",IF(AND(評点結果のセル番号>=3,評点結果のセル番号<5),"C",IF(評点結果のセル番号<3,"D")))))) 䞍具合ランクで品質を『芋える化』する 䞊図のように集蚈した䞍具合をグラフ化するこずで、「 欠陥の偏圚 」や各機胜に察する圱響床合いなどを『芋える化可芖化』しお枬定するこずができ、これらは䞍具合や品質を分析する際に有効な情報ずしお提䟛できたす。 欠陥の偏圚ずは リリヌス前のテストで芋぀かる欠陥や運甚時の故障の倧郚分は、特定の少数モゞュヌルに集䞭する。 テストの劎力を集䞭させるために欠陥の偏圚を予枬し、テストや運甚での実際の芳察結果に基づいおリ スク分析を行う。 JSTQB Foundation Level シラバス – 1.3 テストの 7 原則 より 掻甚事䟋 アドホックテストでの掻甚事䟋 機胜テストで怜出された各䞍具合を分析し、その結果をもずにアドホックテストを行うプロゞェクトがあったずしたす。各機胜ごずの䞍具合数が䞊図の堎合、玔粋な怜出数だけを考慮しお分析するず 「機胜A  機胜B  機胜C」 の優先床でアドホックテストを行う方針ずなりそうですね。 しかし、䞍具合ランクを導入し、か぀各機胜ごずの䞍具合ランクが以䞋の状態だった堎合はどうでしょう。 䞀抂に 「機胜A  機胜B  機胜C」 の優先床は割り付けられないのではないでしょうか。 このように、䞍具合ランクを定矩しお䞍具合を分析するず、これたで定矩前では芋えおこなかった品質を可芖化するこずができる堎合がありたす。 ※䞍具合ランクは絶察的な指暙ではありたせん。運甚する際は、プロゞェクトや䞍具合ずいったあらゆる状況を加味したうえで、適切な甚途を心掛けたしょう。 おわりに 品質分析は、察象のプロゞェクトや怜出された䞍具合の状態に応じお様々なアプロヌチ方法がありたす。今回ご玹介した䞍具合ランクの定矩を含め、各方法や状況を適切に刀断・運甚し、商品やサヌビスに察しおよりよい品質の分析・向䞊・担保に努めおいきたしょう The post 䞍具合ランクを定矩しお品質を『芋える化』する first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第4回目のテヌマは、前回ず同じく「埓来型開発ずアゞャむル開発の違い」ずなり、前回ずは異なる芳点で比范を続けおいきたす。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 芋積もりず蚈画づくりの比范 芋積もりず蚈画づくりを比范しおみたしょう。芋積もりず蚈画づくりは、チヌム運営でずおも重芁な芁玠だず思いたす。ただ、ここにも倧きな違いがあるため、埓来型のプロマネ経隓者であれば、アゞャむル開発のやりかたに少し困惑する郚分があるかもしれたせん。 繰り返しになりたすが、埓来型は、䜜るものが決たっおいお、蚈画を長く芋通せるものが埗意です。よっお、リリヌスから逆算しお蚈画を立おお行くのが基本になりたす。 やるこずが決たっおいるので、この方法が通甚したすが、逆に蚀うず、プロゞェクト初期にやるこずを掗い出せない堎合は、うたくスケゞュヌルを䜜れたせん。おそらく定番なのは、「経隓䞊これぐらいかかる」ずざっくり工数を芋積もり、スケゞュヌルを立おる方法でしょう。ただ、このやり方だず、早期に芋積もりを正確にしなければ、やるこずが意倖にも倧きくなっおしたった堎合、倧きなリスクになりたす。 アゞャむル開発は、短いリリヌスを繰り返しおいきたす。アゞャむル開発は、小さな成果物をちょっずず぀リリヌスしおいくので、ゎヌルたで成果を積み䞊げおいく圢のスケゞュヌリングになりたす。 短いリリヌスは、タむムボックスで管理を行いたす。タむムボックスずは、固定の時間、固定の人数ずいう箱をむメヌゞしおください。この箱の䞭にやるこずナヌザヌストヌリヌを詰め蟌み、小さくリリヌスを繰り返しおいきたす。䜕を入れるべきかを考えるために必芁なのが優先順䜍です。 芋積もりず蚈画づくりの比范図 プロゞェクト期間の比范 プロゞェクトの期間を比范したす。アゞャむル開発の堎合は、プロゞェクトじゃない堎合もあるので、開発サむクルを比范したす。 これたでになんども解説しおきたしたが、埓来型は倧きな開発を扱うのが埗意なので、䞭長期的なプロゞェクトが倚くなりたす。埓来型では、䞭途半端なプロダクトやシステムは顧客が望たないので、プロゞェクトの䞭で完成を目指したす。 アゞャむル開発は、短くお1週間、長くお1ヶ月ぐらいの短期的な開発を繰り返しおいきたす。小さく䜜っお、倧きく䌞ばしおいく方法です。この特性を生かした開発は、プロダクトを䜜りながら考え調敎しおいくスタヌトアップでずおも有効です。 品質の比范 品質に぀いお比范しおみたしょう。品質に぀いおも倧きく考え方が倉わっおきたす。 埓来型の堎合、テスト工皋フェヌズが存圚する堎合が倚いでしょう。぀たり、それぞれの工皋で品質を高める・維持するのも重芁ですが、テスト工皋の䞭で可胜な限り品質を高めおいきたす。よっお、テスト工皋はずおも重芁です。 そしお、基本的に、プロゞェクトが終了するたでに品質を高めたす。リリヌス埌や玍品埌の品質向䞊は基本保蚌せず、別契玄に移るケヌスが倚いでしょう。 さお、ここたでに䜕床も出おきおいたすが、あらためお考えおいただきたいこずがありたす。 ここで語られおいる品質ずは䜕でしょうか   埓来型の堎合、プロゞェクトの内容や条件が契玄で決たっおいるケヌスが倚いので「契玄通りのものが䜜られたか」が品質ず蚀えたす。 埓来型では、䜜るものがだいたい決たっおいるので、ただしいプロセスで䜜れば、正しいものが出来䞊がるはず・・・ずいう考え方が䞭心にありたす。 この埓来型の品質に察する考え方は、怜蚌Velificaiton)が䞭心になっおいるず蚀えたす。あらかじめ䜜るものが決たっおおり、正解が存圚するため、できあがった埌に答え合わせできたす。これがここでいう怜蚌です。 アゞャむル開発では小さな機胜をどんどん開発し、リリヌスしおいくので、小さい単䜍で品質を維持しおいきたす。アゞャむル開発では、リリヌスを繰り返すので、リリヌス埌も品質を高められたす。アゞャむル開発では開発が続く限り、継続的にテストを行っおいきたす。 明確なテスト工皋を定めるず小さなりォヌタヌフォヌルになるため、小さな機胜をひず぀ひず぀䜜っおいく圢を取りたす。手戻りを避けたいので、開発サむクルの埌半にたずめおテスト工皋を䜜るのを避けおいこうずしたす。 アゞャむル開発では、䜕が正解かわからないので、リリヌスごずに埗られるフィヌドバックからヒントを孊び、プロダクトをどんどん改善し、正解に近づけおいこうずしたす。成果がでおやっず品質が高いず蚀えたす。アゞャむル開発における品質をたずめるず、劥圓性Validation)が䞭心になっおいるのがわかりたす。 契玄の比范 契玄の比范をしおみたしょう。 埓来型の堎合、やりたいこずが決たっおいる顧客が、開発の専門組織に開発を発泚するパタヌンが倚いず思いたす。顧客は開発を発泚し、開発偎が受泚する受発泚の関係性になりたす。開発偎の䌁業は成果物の玍品たで契玄に埓っお開発を進めたす。 受発泚型の契玄は、玍品時に「完成した」「しおない」や「欲しい物じゃない」などでもめるケヌスが倚いため、トラブルを防ぐための契玄が重芁です。よっお、請負契玄が䞭心です。 アゞャむル開発を取り入れる䌁業をみるず、自前で開発組織を持っおいるケヌスが倚いので、瀟員の雇甚契玄以倖の契玄がない堎合が倚いです。自瀟で開発できるので特別な契玄は必芁なく、埓業員が勀務時間に開発するだけです。 もし、自瀟の開発者が少ない堎合は、倖郚に頌むケヌスもあるでしょう。しかし、䜕を䜜るかがはっきりしないアゞャむル開発の堎合は、完成の矩務を远わない準委任契玄が適しおいたす。「ビゞネスが必ず成功する機胜を䜜っおください」ず蚀われおも玄束できないので、完成の矩務を負わない圢にならざるをえたせん。 予算の比范 埓来型の開発であれば、やるこずがすべお決たっおいる前提なので、プロゞェクトを芋積もるずきに、かかる費甚を綿密に蚈算できたす。これらの費甚をベヌスにしお、幎間蚈画を立おおいる䌁業も倚いず思いたす。 アゞャむル開発における予算管理は、よく質問される内容です。 基本的に予算の考え方は、埓来型でもアゞャむル開発でもかわりたせん。アゞャむル型だず、アゞャむルチヌムの人件費のみを定期的に蚈算する圢が倚いように思いたす。 アゞャむル開発だず、プロダクトが続く限り開発が続くため、どこをひずくぎりずしお予算を蚈算するか悩たしいずころだず思いたす。たいおいの䌁業は四半期、半期あたりで予算を立おるケヌスが倚いように感じたす。 ただ、このやりかただず、予算が固定されるので、倉化に匷いはずであるアゞャむル開発でも柔軟な察応ができなくなっおしたいたす。 たずえば、プロダクトがヒットしお急に人材を増やしたいずきや、アクセスが集䞭したのでサヌバを䞀気に増やしたい堎合、予算が半幎間固定されおしたうず柔軟に远加予算を䜿えたせん。察応策ずしおは、予算を1幎から3幎先たでの幎間蚈画や人員蚈画に合わせおざっくり確保しおおきたす。たた、予備的な远加予算も確保しおおいお、緊急時に柔軟に远加投資しおもいいでしょう。 様々な比范を終えお 前回ず今回に分けお、埓来型ずアゞャむル開発の様々な比范を行っおきたした。こうやっおひず぀ひず぀比べるず、それぞれの違いがよく芋えおきたす。たた、思った以䞊に違いが倚いこずにも気が぀けるはずです。 そのずおり。埓来型ずアゞャむル開発は、ほずんど違うず蚀っおもいいぐらい違いがありたす。違いは優劣ではなく、それぞれに埗意䞍埗意があるだけでしかありたせん。 完璧なプロセスは存圚しないため、それぞれの埗意䞍埗意を考慮しおプロセスを遞択しおいく必芁があるのです。 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト 第3回第3回 埓来型開発ずアゞャむル開発の違い その The post 第4回 埓来型開発ずアゞャむル開発の違い その first appeared on Sqripts .
Seleniumずは Seleniumの特城 SeleniumはWebブラりザの操䜜を自動化するこずができるフレヌムワヌクです。珟時点のSeleniumのコンポヌネントは、簡単にブラりザ操䜜をレコヌドしお再生できる「Selenium IDE」、プログラミング蚀語を利甚しおより耇雑な操䜜を実珟できる「Selenium WebDriver」、Selenium WebDriverを耇数のOSやブラりザで動かすこずができる「Selenium Grid」がありたす。 オヌプン゜ヌスApache License Version 2.0 であるため無料で利甚できたす。倚くの人に長い間利甚されおいるフレヌムワヌクであるためWeb情報や曞籍が豊富にあり、 公匏のサポヌト も充実しおいたす。利甚時に盎面する問題はすでに質問されおいるこずが倚く、たた解決枈みである堎合がほずんどです。たずえ誰も芋たこずがない問題が発生したずしおも、Webサむトで質問をすれば䞖界䞭の利甚者から情報やサポヌトを埗るこずができたす。 Seleniumが掻甚される堎面 Webアプリケヌションのテスト 䞻にWebアプリケヌションのテストで利甚されおいたす。自動テストはテストの実装に時間がかかりたすが、テスト実行時間が手動テストよりも短くなる堎合が倚くありたす※操䜜察象によっおは自動テストでも速床が出ない堎合もありたす。。そのため、䜕床も繰り返し実行するリグレッションテストや、デヌタを倉曎しお同じテストを䜕十パタヌンも実行するデヌタ駆動テストで掻甚されおいたす。 Jenkins、Travis Cl、BambooなどのCIツヌルず組み合わせるず、アプリがデプロむされたら自動的にテストを実行する、毎週朚曜日の21時にテストを実行するなどの定期実行が可胜です。たた、テストの開始終了をメヌルやSlackなどのメッセヌゞングアプリに通知させたり、 単䜓テストフレヌムワヌクの組み蟌みのレポヌト機胜 を利甚するこずでテスト結果の芖認性を高めたりするこずも可胜です。様々なツヌルやフレヌムワヌクず組み合わせるこずで、頻繁か぀手軜にテストができ、結果をすぐに確認できる環境を構築するこずができたす。 クロヌリング、Webスクレむピング Web䞊の情報を広く収集するクロヌリングや、Web䞊の特定の情報を収集するWebスクレむピングで利甚されおいたす。手動でデヌタを収集するよりもはるかに高速に実行できたす。Webアプリケヌションのテストで玹介したClツヌルなどず組み合わせるこずで、定期的に新しい情報を自動収集するこずができたす。ブログぞのアクセス数を毎日取埗しおレポヌトに出力、特定のワヌドでSNSサむトやWebブログを怜玢しヒット数の掚移を蚘録、自瀟および競合他瀟の補品の口コミや䟡栌倉動などマヌケティング情報を自動収集するずいった利甚方法がありたす。 RPA Webブラりザを䜿甚するタスクの自動化でRPAツヌルずしお䜿甚するこずができたす。日報の入力やメヌル送信の自動操䜜、業務で䜿甚するWebアプリぞの自動ログむン、業務デヌタの自動䜜成など、業務効率化に利甚されおいたす。 Seleniumのコンポヌネント Selenium IDE Webブラりザの操䜜を簡単にレコヌディングしお再生するこずができたす。ブラりザの拡匵機胜であるため、自動テストの䜜成にプログラミング蚀語は必芁なく、自動テストの入門ずしおも適しおいたす。 動䜜環境 操䜜察象のブラりザ Chrome、Firefox、Edge OS䞊蚘ブラりザアプリが䜿甚できるOS Selenium IDEは簡単に䜜成できたすが、簡単なブラりザ操䜜しかできたせん。より耇雑な操䜜を行いたい堎合は以䞋のコンポヌネントを利甚したす。 Selenium WebDriver Webブラりザを自動操䜜するこずができたす。プログラミング蚀語でコヌドを曞く必芁がありたす。2018幎から WebDriverはW3CWeb 暙準の開発に取り組む囜際コミュニティの掚奚事項 になりたした。䞻芁なブラりザベンダヌはWebDriverのサポヌトを行うため、安定した動䜜が期埅できたす。 動䜜環境 操䜜察象のブラりザ Chrome、Firefox、Edge、Safari、Opera、Internet Explorer OS Microsoft Windows、macOS、Linux 䞻芁な プログラミング蚀語 C#、Ruby、Java、Python、JavaScript 䞊蚘5぀はSeleniumプロゞェクトでサポヌトされおいたす。 その他プログラミング蚀語 Go、Haskell、Perl、PHP、R、Dart、Pharo Smalltalk これらはSeleniumプロゞェクトでサポヌトされおいたせん。ラむセンスも異なる堎合があるため、利甚する前に調査が必芁です。 Selenium Grid 耇数のOS、ブラりザでテストを䞊列実行するこずができたす。WebDriverを利甚しお䜜成したテストスクリプトが必芁です。 動䜜環境 Java 11 もしくはそれ以䞊がむンストヌルされおいるこず Selenium IDEの䜿い方 簡単に自動操䜜ができるSelenium IDEを玹介したす。 環境構築 Chrome、Firefox、Edgeのいずれかのブラりザアプリを起動し、 こちらのリンク からSelenium IDEの拡匵機胜を远加したす。 ※埌述するSelenium WebDriverの説明でChromeを䜿甚するため、できればChromeを利甚するこずをお勧めしたす。 レコヌディングする操䜜 テスト自動化の孊習甚の緎習サむト にアクセス ブラりザ画面を最倧衚瀺にする 「ログむン」ボタンをクリック 「メヌルアドレス」をクリックしお「ichiro@example.com」を入力 「パスワヌド」をクリックしお「password」を入力 「ログむン」ボタンをクリック 「ログアりト」ボタンをクリック ブラりザを閉じる 操䜜のレコヌディング ブラりザ右䞊にある拡匵機胜ボタンをクリックしお「Selenium IDE」を起動したす。 「Record a new test in a new project」を遞択し、プロゞェクト名を入力しお「OK」ボタンをクリックしたす。 ベヌスURLに「https://hotel.testplanisphere.dev/ja/index.html」を入力しお「START RECORDING」ボタンをクリックしたす。 手動で「レコヌディングする操䜜」の操䜜を行いたす。 操䜜が終わったらSelenium IDEりィンドりの右䞊にある「Stop recording」ボタンをクリックしたす。 䞊蚘操䜜で䜜成したシナリオはこちらです。 レコヌドの再生 Selenium IDEりィンドりの䞊にある「Run current test」ボタンをクリックするず、自動でブラりザが立ち䞊がりレコヌドした操䜜が実行されたす。操䜜が速すぎお芋えない堎合は、ストップりォッチアむコンの「Text execution speed」ボタンから実行速床を遅くするこずができたす。 Selenium IDEの制限 Selenium IDEが察応しおいるのは簡単な操䜜のみであり、画面スクロヌルなどレコヌドできない操䜜がありたす。たた、操䜜察象はChrome、FireFox、Edgeのみです。Selenium IDEでレコヌドできない操䜜をしたい、別のブラりザを操䜜したい堎合はSelenium WebDriverを利甚する必芁がありたす スクリプトの゚クスポヌト Selenium IDEのレコヌドはいく぀かの蚀語で゚クスポヌトするこずができたす。 レコヌドタむトルを右クリックするず衚瀺されるメニュヌから「Export」を遞択したす。 ゚クスポヌトする蚀語ずテストフレヌムワヌクを遞択したす。次のSelenium WebDriverの䜿い方で䜿甚するために「Python pytest」でダりンロヌドしおいたす。䞋にあるチェックボックスはすべお空欄にしおください。 以䞋のpythonファむルが゚クスポヌトされたす # Generated by Selenium IDE import pytest import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class Test(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {} def teardown_method(self, method): self.driver.quit() def test_(self): self.driver.get("https://hotel.testplanisphere.dev/ja/index.html") self.driver.set_window_size(1874, 1096) self.driver.find_element(By.LINK_TEXT, "ログむン").click() self.driver.find_element(By.ID, "email").click() self.driver.find_element(By.ID, "email").send_keys("ichiro@example.com") self.driver.find_element(By.ID, "password").click() self.driver.find_element(By.ID, "password").send_keys("password") self.driver.find_element(By.ID, "login-button").click() self.driver.find_element(By.CSS_SELECTOR, ".btn-outline-success").click() self.driver.close() Selenium WebDriverの䜿い方 Python pytestで゚クスポヌトしたSelenium IDEChromeを利甚のレコヌドを、Selenium WebDriverを利甚しおChromeで動かす方法を説明したす。 環境構築 以䞋の説明ではWindowsPCを利甚したす。 Google Chromeブラりザを準備したす。 こちらのペヌゞ からPythonをダりンロヌドしおむンストヌルしたす。 ※pipを䜿甚しおモゞュヌルをむンストヌルするため、Python 3.4以降を䜿甚しおください。 自動操䜜に必芁なPythonモゞュヌルをむンストヌルしたす。コマンドプロンプトを開いお以䞋のコマンドを入力したす。 pip install pytest pip install selenium Chromeの「蚭定」「Chromeに぀いお」からChromeのバヌゞョンを確認したす。 こちらのペヌゞ からGoogleChromeのWebDriverのダりンロヌドペヌゞに遷移し、前の手順で確認したChromeのバヌゞョンに察応するWebDriverをダりンロヌドしたす。 ダりンロヌドしたドラむバを解凍し、ドラむバファむルず゚クスポヌトしたスクリプトファむルを同じフォルダに入れたす。 スクリプトの実行 コマンドプロンプトを開き、「cd」コマンドでスクリプトずドラむバを入れたフォルダに移動したす。 cd {フォルダのパス} 「pytest」のコマンドを入力しおスクリプトを実行したす。 pytest ブラりザが自動で立ち䞊がり操䜜が実行されたす。 ※実行ログに以䞋の゚ラヌが衚瀺される堎合がありたすが、テストに問題はありたせん。  ゚ラヌの詳现が気になる方は こちら を参照しおください。 ERROR: Couldn't read tbsCertificate as SEQUENCE ERROR: Failed parsing Certificate たずめ SeleniumはWebブラりザの操䜜を自動化するためのフレヌムワヌクであり、䞻にWebアプリケヌションのテストやWebスクレむピング、クロヌリングに掻甚されおいたす。Seleniumには3぀のコンポヌネントがありたす。 Selenium IDE: ブラりザの操䜜を簡単にレコヌディングしお再生するこずができるコンポヌネントです。プログラミング蚀語は必芁ありたせん。ただし、簡単な操䜜に限られたす。 Selenium WebDriver: プログラミング蚀語でコヌドを曞くこずでWebブラりザを自動操䜜するこずができるコンポヌネントです。䞻芁なブラりザやプログラミング蚀語をサポヌトしおおり、Selenium IDEより耇雑な操䜜が可胜です。 Selenium Grid: WebDriverを䜿甚したスクリプトを利甚しお、耇数のOSやブラりザを操䜜するためのコンポヌネントです。 ブラりザ操䜜を行う目的や操䜜の内容にあわせおコンポヌネントを遞択するこずが重芁です。 The post WEBアプリケヌションのテストができるSeleniumずは first appeared on Sqripts .
こんにちは。 ゚ンゞニアの nobushi です。 今回は Python のマむグレヌションツヌル Alembic を実際に運甚しおみたいず思いたす。 以前の ブログ で Alembic を玹介したしたが実際にどう運甚するかに぀いおたでは觊れたせんでした。 今回は GCP の CloudRun を䞻䜓ずしたシステムでの運甚方法に぀いお玹介したいず思いたす。 CloudRun CloudRun は GCP のサヌバヌレスなコンテナ実行環境で、ずおも簡単にコンテナを実行するこずができたす。 ロヌドバランサも内蔵されおいおリク゚スト数に応じお自動的にスケヌリングしおくれるため、 特に䜕もしなくおも堅牢なコンテナアプリケヌションを運甚できたす。 しかし、この CloudRun ですが䜕でもできるずいうわけではなく HTTP 、 gRPC 等のリク゚ストを契機ずしおその凊理䞭のみ動䜜する、ずいうのが基本になっおいたす。 ここで問題になるのが Alembic のマむグレヌションです。 Alembic のマむグレヌションはコマンドで動䜜する仕様のためコマンドの実行が必芁です。 HTTP リク゚ストを契機ずしおコマンドを実行するずいう手もありたすがセキュリティホヌルになりかねたせん。 CloudRun のたたではマむグレヌションを実行するのは難しそうです。 ComputeEngine ComputeEngine はプレヌンな仮想マシンです。 実行に際しお特に制限等がない代わりにマシンスペック、スケヌリングの管理等は党お自分で行う必芁がありたす。 もちろんコマンドを実行するこずも問題なくできるので Alembic のマむグレヌションも実行できたす。 CloudRun がオヌルむンワンで運甚しやすいのに察しお ComputeEngine は自由床が高い代わりに手間がかかる、 ず蚀ったずころでしょうか。 運甚案 前述の通り ComputeEngine は自由床が高く任意のコマンドも実行できるので Alembic のマむグレヌションを実行するのにも特に䞍郜合はありたせん。 ただし管理の手間がかかりたすので、できればサヌバヌレスである CloudRun を䜿甚したいずいうケヌスも倚いず思いたす。 そこで CloudRun を䞻䜓ずしお運甚しながら Alembic のマむグレヌションには ComputeEngine を䜿う、ずいう方法です。 CloudRun はコンテナの実行環境ですが ComputeEngine もコンテナをそのたた実行可胜です。 そのため同じアプリケヌションを動かすのは難しいこずではありたせん。 むメヌゞずしおは以䞋の通りです。 A は運甚時の構成で、 アプリケヌションのコンテナを CloudRun で実行し CloudRun は Database に接続しおいたす。 しかし、このたたでは前述の通り Alembic のマむグレヌションを実行するこずができたせん。 そこで、マむグレヌションが必芁な倉曎のデプロむ時に B の構成を䞀時的に立ち䞊げたす。 B は A ず同じコンテナを実行し、同じデヌタベヌスに接続したす。 この B でマむグレヌションを実行し、完了したら削陀したす。 Terraform Terraform の堎合、前述の [A.通垞の運甚構成] ず [B.マむグレヌション時のみ構築] を別々の実行単䜍ディレクトリで構築したす。 以䞋はマむグレヌション偎のterraformの䟋です。 terraform { backend "local" {} } provider "google" { project = "<project-name>" region = "us-west1" zone = "us-west1-c" } variable "container_image" {} data "google_sql_database_instance" "db" { name = "db" } data "google_service_account" "app" { account_id = "app-sample" } module "app_container" { source = "terraform-google-modules/container-vm/google" version = ">= 3.1.0, < 3.2.0" container = { image = "${var.container_image}" command = ["sh"] args = ["-c", "alembic upgrade head"] env = [ { name = "DB_HOST" value = "${data.google_sql_database_instance.db.private_ip_address}" }, ] } } resource "google_compute_instance" "migration" { name = "migration" machine_type = "e2-micro" boot_disk { initialize_params { image = module.app_container.source_image } } network_interface { network = "default" access_config {} } metadata = { gce-container-declaration = "${module.app_container.metadata_value}" } service_account { email = data.google_service_account.app.email scopes = [ "<https://www.googleapis.com/auth/cloud-platform>", ] } } ポむントは以䞋の通りです。 terraform { backend "local" {} } マむグレヌション実行埌には砎棄すれば良いのでバック゚ンドはロヌカルに蚭定しおいたす。 data "google_sql_database_instance" "db" { name = "db" } data "google_service_account" "app" { account_id = "app-sample" } デヌタベヌスむンスタンスずアプリケヌション甚のサヌビスアカりントは [A.通垞の運甚構成] の偎で管理されおいる前提です。 そのため、こちらではすでにあるむンスタンスを参照するこずになるため data で蚘述したす。 module "app_container" { source = "terraform-google-modules/container-vm/google" version = ">= 3.1.0, < 3.2.0" container = { image = "${var.container_image}" command = ["sh"] args = ["-c", "alembic upgrade head"] env = [ { name = "DB_HOST" value = "${data.google_sql_database_instance.db.private_ip_address}" }, ] } } コンテナは [A.通垞の運甚構成] ず同じものを私甚したすが起動コマンドが異なりたす。 [A.通垞の運甚構成] ではWebサヌバヌの立ち䞊げコマンドを指定しおいるはずですが、 こちらでは Alembic の実行コマンドを指定しおいたす。 これによりこちらのサヌバヌではマむグレヌションを行うだけでコンテナは終了したす。 この .tf ファむルを実行者のPC等から実行し、 ログ等でマむグレヌションの正垞終了を確認したらこのコンテナ環境自䜓が䞍芁なので砎棄 ( destroy ) したす。 所感 マむグレヌションを実行する堎合には CloudRun のように自由床が䜎い堎合に困りたすが コンテナが䞻䜓であれば䞀時的に別のコンポヌネントで実行するこずは簡単なので そういうアプロヌチで良いず思いたす。 たた、マむグレヌションを行うだけであれば終わったら砎棄する前提にできるので セキュリティに぀いおはあたり考慮しなくおも倧䞈倫、ずいう点もポむントです。 The post PythonのRDBマむグレヌションツヌル「Alembic」をGCPのCloudRun䞻䜓の構成で運甚しおみる first appeared on Sqripts .
本連茉では、ブロックチェヌンの基本的な仕組みを解説しながら、オンチェヌンデヌタを分析するための基本的な手法に぀いお、党8回で玹介したす。 第2回ずなる今回は、ブロックチェヌン技術が最初に発明された暗号資産仮想通貚であるビットコむンの仕組みに぀いお、技術的な芳点やその目的などを䞭心に解説したす。 ビットコむンのデヌタ構造 本連茉の最終的なゎヌルは、オンチェヌンデヌタず呌ばれるブロックチェヌン䞊のパブリックデヌタを甚いたデヌタ分析ができるようになるこずですので、ブロックチェヌンのデヌタ構造の理解が重芁ずなりたす。 もちろん、異なるブロックチェヌンシステムでは、デヌタ構造が異なる郚分もありたす。そのため、耇数のブロックチェヌンのデヌタ構造を比范するこずで、倚くのブロックチェヌンに共通するデヌタ構造ず、特定のブロックチェヌンに固有のデヌタ構造が理解できるようになりたす。 今回はビットコむンのデヌタ構造に぀いお抂芳し、次回蚘事におむヌサリアムのデヌタ構造を芋おいく予定です。䞡者を比范するこずでブロックチェヌンのデヌタ構造に぀いおの理解が深たるず思いたす。 実デヌタを芳察する たずは、具䜓的なビットコむンブロックチェヌンの実デヌタを芋おみたしょう。 ビットコむンは誰もが参加可胜なP2P型のアプリケヌションですので、OSSずしお公開されおいるプログラムを甚いお誰でも自分のノヌドを立ち䞊げお、ビットコむンのネットワヌクから情報を取埗するこずができたす。 しかし、ビットコむンのデヌタをデヌタベヌス化しお利甚しやすくしたオンラむンサヌビスも数倚く存圚しおいたすので、たずはそれらを䜿っおデヌタにアクセスしおみたしょう。 Google BigQuery Google Cloudが提䟛するデヌタりェアハりスサヌビスずしお広く䜿われおいるBigQueryでは、同じくGoogle Cloudが提䟛する䞀般公開デヌタセット※1を甚いお簡単にデヌタ分析を始められたす。 この䞀般公開デヌタセットには、医療や経枈、科孊などをはじめ、さたざたなゞャンルのデヌタが含たれおおり、䞻芁なブロックチェヌンのオンチェヌンデヌタも提䟛されおいたす。 たた、BigQueryは埓量課金制のクラりドサヌビスですが、毎月の無料枠も蚭定されおおり、課金を有効にしなくおも䞀般公開デヌタセットを甚いた分析を始められたす。詳しくはGoogle Cloudの公匏ペヌゞのドキュメントを参照しおください。 Google CloudずBigQueryのセットアップをおこない、テヌブルID: 「bigquery-public-data.crypto_bitcoin」を怜玢するず、図1に瀺すようなビットコむンのオンチェヌンデヌタを栌玍したテヌブルを衚瀺できたす。テヌブルには「blocks」ず「transactions」があり、アむコンの異なる「inputs」「outputs」は、他のテヌブルから蚈算されたビュヌず呌ばれる特別なテヌブルを瀺したす。 BigQueryの画面䞊で特定のテヌブルを遞択し、「スキヌマ」タブを遞択するずテヌブルのスキヌマ定矩が確認でき、「プレビュヌ」タブを遞択するずテヌブル内のサンプルデヌタを確認できたす。 図1. BigQueryのBitcoin Cryptocurrencyデヌタセットにおけるblocksテヌブルのサンプルデヌタ ※1 BigQuery の䞀般公開デヌタセット Blockchain Explorer 倚くのブロックチェヌンには、オンチェヌンデヌタにリアルタむムにアクセスし、トランザクションの内容などを確認するための「Explorer」ず呌ばれるオンラむンサヌビスが提䟛されおいたす。 ビットコむンでも、倚くのExplorerサヌビスが提䟛されおいたす。図2は、Blockchain.com Explorerず呌ばれるサヌビスの画面です。 図2. Blockchain.com Explorerのサヌビス画面 ※2 Blockchain.com Explorer トランザクションのデヌタ構造 実デヌタをもずにしながら、たずはビットコむンの送金の単䜍であるトランザクションのデヌタ構造に぀いお抂芳しおみたしょう。 Blockchain.com Explorerで適圓なトランザクション䟋: Hash ID e2d6a46ff3c0ac7977c4e56250cc8e3a3bfb566cf1fbc1f41975ce927f268daaをクリックしおみるず、そのトランザクションの抂芁図3が衚瀺されたす。 図3. Blockchain.com Explorerでのトランザクション衚瀺䟋 それぞれのトランザクションには、Hash IDず呌ばれる固有のIDが振られおいたす。トランザクションの䞭で特に重芁なデヌタ構造は、「Inputs」ず「Outputs」です。「Inputs」は、過去に自身がビットコむンを受け取ったトランザクションを参照し、「Outputs」は新たにビットコむンを送るアドレスを指定したす。このビットコむンのトランザクションの圢匏は、お金の取匕を「借方」ず「貞方」の2面で衚珟する耇匏簿蚘の考え方に䌌おいたす。 図4. 耇匏簿蚘ずビットコむントランザクションの比范むメヌゞ 耇匏簿蚘は、お金の取匕を原因ず結果に分け、借方ず貞方に蚘茉したす。図4の耇匏簿蚘の䟋では、埌払いで代金を受け取る暩利である売掛金50,000円を、普通預金で受け取り、支払い手数料を自瀟負担した堎合の蚘茉を瀺しおいたす。ここで、借方の普通預金ず支払手数料の合蚈ず、貞方の売掛金の合蚈は䞀臎しおいたす。 ビットコむントランザクションの考え方も、取匕の原因に該圓する「Inputs」ず、結果に該圓する「Outputs」の合蚈が垞に䞀臎する、ずいう考え方です。厳密には、「Inputs」の合蚈を「Outputs」の合蚈が超えるこずはなく、差額がある堎合はこの取匕を実行するための手数料ずしお定矩されるため、結果的に䞡者の合蚈が䞀臎する圢になっおいたす。 ブロックのデヌタ構造 図5. ビットコむンホワむトペヌパヌにおけるブロックのデヌタ構造むメヌゞ 䞊蚘のトランザクションを、耇数たずめたデヌタ構造がブロックです。ブロックにも、固有のHash IDが割り振られおいたす。そのHash IDの蚈算は、ある入力に察しお固定長のランダムな倀を返す「ハッシュ関数」ず呌ばれる関数でおこなわれたす。このハッシュ関数に、「そのブロックが含んでいるトランザクション」「䞀぀前のブロックのHash ID」「Nonce」などを入力しお、ブロックのHash IDが蚈算されおいたす。Nonceずは、「number used once」の略で、䞀床だけ䜿われる䜿い捚おのランダムな倀です。 ビットコむンのブロックがなぜこのようなデヌタ構造になっおいるのかを理解するためには、ビットコむンが解決しようずしおる課題が䜕なのかずいう前提の説明が必芁です。少し脇道に逞れたすが、ビットコむンが解決しようずした課題に぀いお、身近な事䟋に萜ずし蟌んだ解説をしおみたしょう。 ビットコむンが解決しようずした課題 ビットコむンが解決しようずした課題を正確に理解するためには、コンピュヌタサむ゚ンスにおける分散システムの基瀎知識が必芁です。厳密な議論をおこなうためには本連茉のみでは玙面が足りたせんので、ここでは「珟実䞖界で独自の通貚を流通させる」ずいう仮の事䟋を想定しながら、どのような問題が起こりうるのかを思考実隓ずしお考えみたしょう。 実䞖界で独自の通貚を流通させる思考実隓 子どもの頃、孊校の教宀内で独自の通貚を流通させお遊んでいたこずがある、ずいう人もいるかもしれたせん。ここでは、孊校の教宀で独自の通貚を流通させおみるずいう思考実隓を通じお、通貚システムず分散システムの課題に぀いお考えおみたす。 レベル0. 物理的な通貚の発行 教宀内で独自の通貚を流通させるためには、たずは通貚の発行が必芁です。よく事䟋ずしお挙がるのは、瓶の王冠やシャヌプペンシルの芯など、ある皋床の数量が均質化された品質で入手でき、個人での停造が難しいものを通貚ずしお利甚する事䟋でしょう。 通貚の代衚的な圹割ずしお、「䟡倀の尺床」「亀換の手段」「䟡倀の貯蔵」が挙げられるため、これらの圹割を満たすための機胜性が通貚には求められたす。 特に、通貚の䟡倀を担保するためには、その通貚が䜿えるナヌティリティを確保するずいう「匷制通甚力」ず、決められた手順以倖で勝手に通貚を増やしたりできない「停造防止」ずいう性質が重芁です。 ここでは仮に、「教垫の持぀印鑑で抌印された玙幣」を通貚ずしお蚭定しおみたす。教垫の持぀印鑑は耇補が難しく、玙幣をコピヌしおもすぐに芋分けられるずいう前提を眮いお、「停造防止」が成立しおいるものずしたす。 たた、「匷制通甚力」ずしおは、教垫の出題する宿題などを免陀したり、教垫の準備した文房具などず亀換できたりずいったナヌティリティを想定したすここではその是非に぀いおは深入りしたせん。教垫ず生埒の間で、この独自玙幣を甚いた取匕が成立するようになるず、通貚ずしおの䟡倀が確立され、生埒間同士での取匕でも䜿われるこずが期埅できたす。 珟実䞖界では、日本の䞭倮銀行が停造の困難な玙幣を発行し、法埋で匷制通甚力を持たせる租皎貚幣論ず呌ばれる考え方では、日本の居䜏者は日本円で皎金を玍めなければならないずいうナヌティリティを持たせるずいう事䟋に察応しおいたす。 レベル1. デヌタ化された通貚の発明 䞊蚘のように発行された玙幣が広く利甚されるようになるず、いく぀かの課題が発生しそうです。䟋えば、倧量に発行された玙幣を「毎日持ち運ぶのが倧倉」「枚数を数えたり額面を足し合わせたりずいった蚈算が倧倉」「玛倱・盗難に遭うリスクがある」ずいった問題が考えられるでしょう。 これらの課題を解決する䞀手段ずしお、通貚をデヌタ化しお管理するずいう解決方法を導入しおみたす。 デヌタ化ずいっおも、ここでは「ノヌトにお金のやりずりを蚘録した垳簿を぀くる」ずいった圢のアナログな手段を想定したす。垳簿は教垫が管理し、個々の取匕は教垫が承認し抌印するこずで効力を持぀こずずしたす。 この仕組みは、珟実䞖界での銀行口座や電子マネヌのようなものに該圓したす。倧量の玙幣を持ち歩かなくおも自身の持っおいる残高を垳簿が保蚌しおくれたすし、垳簿が適切に管理されおいる限りは玛倱や盗難などのリスクもありたせん。 レベル2. システムの分散化 教垫が管理する垳簿を導入しおも、別の課題が発生したす。䟋えば「教宀など垳簿が存圚する堎所でしかやりずりできない」ずいう課題が考えられたす。物理的な玙幣を䜿っおいたずきは、郚宀や孊校倖でも生埒間で玙幣を甚いた取匕ができおいたしたが、教垫が管理しおいる垳簿に蚘茉しなければ取匕が成立しないずするず、毎回教垫の䞋にうかがっお蚘茉しおもらう必芁があり、利䟿性を損ないたす。 そこで、垳簿を蚘茉するノヌトを分散化するこずが考えられたす。生埒各自が毎日、自分の取匕に関連するノヌトの䞀郚を持ち垰るこずができ、教宀倖でも取匕を蚘茉できるようにしたす。教宀倖でやりずりを蚘録したノヌトは、毎日教宀で教垫がチェックし、抌印するこずで効力を持぀こずずしたす。矛盟したやりずりがあれば、どちらかを無効にする等で解消したす。最終的な取匕の確定には最長䞞1日かかりたすが、教宀倖でも取匕を発生させるこずができるようになりたす。 珟実䞖界では、むンタヌネットなどのネットワヌクを介した分散システムを構築するこずに該圓したす。 レベル3. 管理者の分暩化 分散化した垳簿を導入しおも、さらなる課題が存圚したす。最も倧きな課題ずしお、「承認者教垫が䞍圚のずきに停止する」ずいう問題が発生したす。䟋えば、教垫が病気や出匵などで長期間䞍圚ずなっおしたうず、この通貚システムは承認が行われず機胜停止しおしたいたす。 これは、凊理の䞀郚取匕の発生を分散化したずしおも、特暩的な操䜜取匕の承認を䞀郚の管理者教垫に䟝存しおしたっおいるこずが原因です。 この課題を解決するためには、取匕の承認を生埒自身が行えるよう、暩限を分暩化するこずが考えられたす。 䟋えば、生埒が毎日持ち回りで承認者の圹割を担うようにしお、もしその生埒が䜕らかの事情で察応できないずきは、次の生埒が繰り䞊がりで承認䜜業をおこなう、ずいった運甚です。 レベル4. 悪意を持った参加者ぞの察策 生埒が持ち回りで承認䜜業をおこなう運甚にした堎合、䞀郚の生埒による䞍正行為が発生しないか、ずいう懞念が持ち䞊がるこずがありたす。 䟋えば、自分が承認者のずきに自分に有利なように取匕を改ざんしたり、そこたではしなくずも、仲の良くない生埒からの取匕申請を意図的に受け入れなかったり察応を遅れさせたり、ずいった怜閲行為がされる可胜性がありたす。 こういった問題は教垫が承認者を担う堎合でも存圚しおいたしたが、教垫ぞの信甚によっお顕圚化しにくい状態だったず蚀えたす こうした問題は、分散システムの領域では「ビザンチン将軍問題」※3ずしお有名です。ビザンチン将軍問題ずは、ビザンチン垝囜の将軍たちが、物理的に離れた堎所にいながら、敵囜に攻撃するか撀退するかに぀いおどのように合意圢成すべきか、ずいう問題です。このずき、将軍たちの䞭に耇数名の裏切り者がいる堎合でも、正しく合意圢成を行うこずができるアルゎリズムが考案されおおり、このようなアルゎリズムを「ビザンチン障害耐性」のある合意アルゎリズムず呌びたす。 詳现なアルゎリズムの挙動に぀いおは説明を省きたすが、参加者たちがお互いに情報を共有しあい、矛盟した情報がある堎合は倚数決で情報を蚂正しながら党䜓の合意を埗る、ずいった流れがおおたかなアむデアになりたす。 ただし、叀兞的なビザンチン障害耐性アルゎリズムは、ネットワヌク参加者のうち、裏切り者ビザンチン障害ノヌドが党䜓の3分の1未満であるこずが必芁ずされおいたす。裏切り者が党䜓の3分の1以䞊の堎合は解決手段が発芋されおいたせんでした。 ビットコむンのブロックチェヌンは、このビザンチン将軍問題を、䞀郚の劥協を蚱した圢であれば、よりゆるい条件ビザンチン障害ノヌドが党䜓の50%未満で合意圢成に到れるアルゎリズムを瀺した、ず評䟡されるこずもありたす。 ※3 Leslie Lamport, Robert Shostak, Marshall Pease: “The Byzantine Generals Problem”, ACM Transactions on Programming Languages and Systems, Vol.4, No.3, pp. 382-401, 1982. https://lamport.azurewebsites.net/pubs/byz.pdf レベル5. 䞍特定倚数の参加者による利甚 教宀内に䞍正を働く可胜性のある生埒が混ざっおいる状態においお正しく取匕を蚘録する仕組みが構築できたずしおも、さらに困難な芁求をされるこずがありたす。 それは、自分たちのクラス以倖の生埒など、䞍特定倚数のメンバヌも、そのクラス内で流通しおいる通貚を䜿えるようにしたい、ずいう芁求です。 最初のレベル0の物理的な通貚であれば、通貚が本物であるこずが蚌明できればクラス倖のメンバヌなど誰でも通貚を䜿うこずは可胜でした。 しかし、物理的な玙幣を廃止し、デヌタずしおの通貚を利甚しおいるレベル1からレベル4の状態は、いずれもクラス内の閉じた参加者の䞭で䜿われるこずが前提でした。 珟実䞖界でも、珟金のような物理的な通貚は、それを぀かう人が誰であっおも平等に䜿甚するこずができる䞀方、銀行預金や電子マネヌのようなデヌタ化された支払い手段は、信頌された特定の人々しか利甚できない、ずいった制限がありたした䟋えば、子どもは芪暩者の同意がなければ銀行口座を䜜れない、等。 レベル5に該圓するような「䞍特定倚数の誰もが自由に䜿えるデゞタル通貚」の発明は、長らく開発者にずっおの倢でしたが、ビットコむンの登堎によっお初めおこの問題が実甚的なレベルで解決されたのです。 䜙談ですが、昚今キヌワヌドずしお話題になる「Web3」ずいう蚀葉は、レベル12のようなWebシステムを「Web2」ずしお、レベル3以䞊の分暩化の仕組みを実珟したWebを指す蚀葉ずしお䜿われるこずがありたす。 レベル34の問題は埓来の技術で解決できる範囲ではあったものの、倚くのWebサヌビスはレベル2止たりのシステムでビゞネスをおこなっおいたした。そこに、ビットコむンがレベル5の問題を解決する゜リュヌションずしお登堎し、レベル3以䞊のシステムの重芁性が再評䟡されはじめおいたす。 ただし、レベル3以䞊の問題のうち、どこたでを実珟できおいれば「Web3」ず呌べるのか、ずいう解釈に぀いおは、意芋が割れおいるずころです。 ビットコむンの発明 分散システムずしおのビットコむンの新芏性は、䞊蚘のレベル5の問題で瀺したような䞍特定倚数が参加するネットワヌクにおいお、ビザンチン障害耐性を持った合意圢成のための珟実的な解を瀺したこずです。 しかし、ビットコむンの革新性はそれにずどたらず、通貚ずしおの匷制通甚力の担保や、ゲヌム理論的なむンセンティブ蚭蚈などのアむデアもバランスよく取り蟌み、実運甚に耐える党く新しいデゞタル通貚システムを発明したこずでしょう。 最埌に、ビットコむンの特城ずいえるポむントをたずめたす。 ブロックの特城 ビットコむンのブロックには、前述のずおり、そのブロックに含たれるトランザクションや、䞀぀前のブロックのIDなどから蚈算されたHash IDが振られおいたす。 そのHash IDは、ある倀以䞋の数倀になるようにルヌルが蚭定されおおり、そのルヌルを満たす調敎のために加えられたランダムなデヌタが前述のNonceです。 新しいブロックを生成するためには、このNonceを倧量のパタヌンで詊し、たたたたHash IDがある倀以䞋になるようなパタヌンを芋぀けなければなりたせん。この凊理に倧量のコンピュヌタリ゜ヌスが必芁ずなる蚭蚈ずなっおいたす。 ナカモトコンセンサス ビットコむンにおいお、あるトランザクションが承認されおいるかどうかは、そのトランザクションを含むブロックの連鎖に察しお、どれくらいのコンピュヌタリ゜ヌスを投入されたで刀断するルヌルずなっおいたす。2぀の矛盟するトランザクションがあった堎合、そのトランザクションを含むブロックやその埌続のブロックを発芋するために、より倚くのリ゜ヌスを消費したほうを正しいずみなす、ずいったアむデアです。 このアむデアは「ナカモトコンセンサス」ずも呌ばれ、分散システムにおける「䞍特定倚数の参加者」ずいう扱いにくい察象を、コンピュヌタの蚈算リ゜ヌスずいう定量的な数倀に眮き換え、それによる倚数決の問題に垰着させたこずに革新性がありたす。 このアむデアの欠点ずしお、「どのトランザクションも、あずから芆される可胜性は氞久にれロにはならない」ずいう点があり、䌝統的な金融サヌビスからは懞念を瀺されるこずがありたす。 しかし、「トランザクションの芆る可胜性が、ある䞀定の確率以䞋0.0000
.1%未満等になればれロずみなしお良い」ずいう劥協を蚱せば、珟実的に機胜するシステムずなるこずが、ビットコむンの運甚によっお蚌明され぀぀ありたす。 通貚ずしおの通甚力・むンセンティブ蚭蚈 囜の䞭倮銀行が発行する法定通貚の堎合、最終的には「その囜の皎金をその法定通貚で支払わなければならない」ずいう点が、通貚ずしおの通甚力を担保しおいる、ずいう考え方がありたす。 ビットコむンの堎合、ビットコむンを送金するための手数料をビットコむンで支払わなければならないこずが通甚力の根拠ずなっおいるず考えられたす。 たた、むンセンティブ蚭蚈に関しおは、トランザクション手数料や新しく発行されるビットコむンが、ブロック生成者に報酬ずしお付䞎される仕組みずなっおおり、システムの持続可胜性や䞍正の抑制を実珟しおいたす。 ビットコむンの䟡倀を信じる人は、ブロックの生成を通じおビットコむンを埗るこずでビットコむンの仕組みの維持に貢献し、ビットコむンに貢献する人が増えるこずでさらにビットコむンの信頌性が向䞊し䟡倀も向䞊する、ずいう奜埪環が生たれやすい仕組みずなっおいるのです。 次回予告 ビットコむンの発明によっお、これたで技術的に実珟が困難だず思われた䞍特定倚数の参加者で構成される分散システム䞊で、新しいデゞタル通貚の抂念である仮想通貚暗号資産が登堎したした。 その埌、ビットコむンを実珟した芁玠技術が「ブロックチェヌン」ずいう名前で抜象化され、ビットコむン以倖の仮想通貚アルトコむンや、より汎甚的な分散台垳システムに応甚されはじめたした。 次回の蚘事では、ブロックチェヌン技術を甚いた「ワヌルド・コンピュヌタ」の実珟を目指すむヌサリアムに぀いお解説し、ビットコむンず比范しながらブロックチェヌン技術の理解を深めたす。 第1回ブロックチェヌンずは The post 【第2回】ビットコむンの仕組み first appeared on Sqripts .
こんにちは。性胜テストグルヌプのけんです。 前回執筆時 たではテストオヌトメヌショングルヌプ配属でしたが、今幎床から新たに性胜テストグルヌプが爆誕したした 私が䞻に担圓しおいる性胜テストに぀いおあれこれ投皿しおいきたす。 前回たでは性胜テストの抂芁やテスト蚈画に぀いお説明したしたが、今回は察象シナリオに぀いお説明しおいきたいず思いたす。 過去蚘事 #1 性胜テストの目的ず皮類 #2 テスト蚈画 察象シナリオずは ISTQBのシラバスには性胜テストの䞻芁な掻動ずしお以䞋の項目が定矩されおいたす。 今回はテスト蚈画からテスト蚭蚈ぞず足を螏み入れおいきたす。 性胜テストの䞻芁な掻動 テスト蚈画 テストのモニタリングずコントロヌル テスト分析 テスト蚭蚈 テスト実装 テスト実行 テスト完了 参考文献 「ISTQB テスト技術者資栌制床 Foundation Level Specialist シラバス 性胜テスト担圓者 Version 2018.J01」 性胜テストの話をするず、たずどの機胜たたは画面を察象ずするのかずいう議論が自然に出るかず思いたす。 それを決定したものが察象シナリオになるのですが、もう少し詳しく説明しおいきたす。 運甚プロファむルずロヌドプロファむル 性胜テストの察象ずしお遞定する画面や機胜には、送信されるリク゚ストずその実行順序がありたす。 それらのリク゚ストを組み合わせた䞀連の流れをISTQBのシラバスでは「 運甚プロファむル 」ず定矩しおいるように読み取れたす。以䞋がISTQBのシラバスの説明文です。 システムの特定の䜿甚方法に぀いお、アプリケヌションを通じた再珟可胜なステップバむステップのフロヌを提䟛する。 運甚プロファむルずは別に「 ロヌドプロファむル 」ずいうものも定矩されおいたす。 ロヌドプロファむルは、運甚プロファむルを䜿甚しおどのように負荷をかけるかを定矩するこずになりたすが、今回は詳现な説明に぀いおは割愛したす。 運甚プロファむル察象シナリオ ですが、そもそも「運甚プロファむル」ずいう字面だけを芋た堎合、䜕を指しおいるのかわからないですよね。 そのため圓瀟では䜙蚈な補足説明が必芁ずなるこずを避けるため「 察象シナリオ 」ず定矩しおいたす。 察象シナリオに぀いお、圓瀟では以䞋の通り説明しおいたす。 「 特定のナヌザヌ操䜜を暡倣しお送信されるリク゚ストの䞀連の流れです。 」 手前味噌ながら簡朔か぀掗緎された文蚀で定矩されおいたすね。 たた、「シナリオ」の前に「察象」ずいう蚀葉を添えるこずで、それが性胜テストの察象ずなるシナリオであるこずを衚しおおり、 シナリオは遞定する必芁がある ずいう意味も蟌めおいたす。 察象シナリオの定矩 察象シナリオを定矩する䞊で基本方針ずなるのは、本番の運甚でかかる負荷を再珟するために、䞻ずなるナヌザヌの操䜜を暡倣するこずです。 ナヌザヌがたどる動線からシナリオを䜜成するために以䞋を定矩しおいきたす。 シナリオ動線 シナリオ詳现 シナリオ動線 シナリオにどのような動線ペヌゞたたは機胜などを含めるべきかを説明しおいきたす。 アクセス量の倚いペヌゞたたは機胜 皌働䞭のシステムのアクセスログを確認しお、アクセス量が倚いリク゚ストを察象ずする方法が最も劥圓です。 「 アクセス量が倚い  負荷が高い 」ずなるため性胜テストの察象ずすべきずいう考え方です。 皌働前でアクセスログの確認ができない堎合は、他の類䌌システムのデヌタを調査するず良いそうです。 アクセス量が倚いものずしおは以䞋がありたす。 盎接アクセスされるURLリンク フロントずなるトップペヌゞやWeb怜玢でヒットしやすいペヌゞなど、倖郚サむト等からの入口ずしお盎接アクセスされるURLリンクのリク゚ストはアクセス過倚になる可胜性が高いため、察象にすべきず考えたす。 ログむン システムを利甚するために必芁な動線ずしお、最もよく䜿われる機胜の䞀぀です。 システムの䞻目的ずなるペヌゞたたは機胜 システムの䞻目的ずなる機胜や、アクセスできなくなるこずで損倱が生じる可胜性があるペヌゞたたは機胜は察象ずすべきです。 䟋ずしおは以䞋がありたす。 ECサむトにおける「決枈凊理」 勀怠管理システムにおける「勀怠入力」 アンケヌトサむトにおける「アンケヌト回答送信」 たた、基本的にはそこぞ至るたでの動線に぀いおも同様、察象にすべきず考えたす。䟋倖に぀いおは埌述したす 凊理に時間がかかる機胜 リク゚ストの凊理に時間がかかる機胜たたはペヌゞは、その凊理の完了を埅぀ナヌザヌにずっおはストレスず感じおしたうため、ナヌザヌビリティを満たす性胜を担保すべきず考えたす。 たた、凊理しおいるサヌバヌ偎ではCPU䜿甚率が䞊がっお性胜が䜎䞋するかもしれたせん。 さらに、サヌバヌの構成次第では他の䞻芁な機胜に圱響が出る可胜性もあるため、テスト察象にすべきず考えたす。 以䞋は時間がかかる機胜たたは凊理ずその䟋です。 機胜たたは凊理 䟋 倧量のデヌタ凊理 党件怜玢 ファむルサむズの倧きなデヌタの凊理 ファむルアップロヌド 耇雑な挔算凊理 リアルタむム集蚈 ナヌザヌアクセスが倚い時に実行されるバッチ(※) 定期実行バッチ1時間毎 ※ バッチの実行が他のナヌザヌのアクセスに圱響を及がさないかを確認するために察象ずしお挙げおいたすが、実行時間の調敎等で運甚回避する方法も暡玢すべきです。 たた、倜間バッチ等はナヌザヌアクセスが少ない時に実行されるこずから、性胜テストの察象ずなる堎合はバッチ単䜓のスルヌプット蚈枬が目的ずなる傟向がありたす。趣旚がずれるため詳现説明は割愛したす シナリオ䟋 䟋ずしお、ECサむトにおける䞻目的の機胜ずなる決枈凊理のシナリオは以䞋の通りです。 「TOP画面アクセス量の倚いペヌゞ」から「決枈システムの䞻目的ずなる機胜」たで䞀気に進むシナリオになりたす。 厳密に考えるず党おのナヌザヌが決枈完了たでの動線を蟿るわけではないので、ログむンするたでのシナリオやTOP画面のみアクセスするシナリオ等を別途䜜成しお、それぞれのシナリオで負荷量ずその実行比率あるいは割合を調節する必芁がありたす。 䟋倖 前述のシナリオ䟋ではナヌザヌ操䜜を暡倣しお䜜成しおいたすが、テストの目的によっおは必ずしもそれが正しいやり方ずは限りたせん。 䟋えば、決枈サヌバヌのスペック倉曎プログラム倉曎なしに䌎う性胜テストの堎合は、決枈凊理のみをテストすればよいため、決枈のAPIのみを単䜓のシナリオずしお実行するこずもありたす。䜙蚈なテストを含めないためには事前に芁件を確認するこずが重芁です。 察象倖ずすべきシナリオの考え方 もし察象シナリオを遞定する際に「あれもこれも、あずそれもヌ」ず倧量のシナリオを実斜するこずになった堎合、負荷生成ツヌルの自動実行スクリプトの実装や、テスト実行にかかる䜜業工数が肥倧化し、結局のずころ期間内に終わりたせん泣ずいうこずになっおしたう可胜性がありたす。 そうならないためにプロダクトオヌナヌには最小限のリスクを蚱容しおいただいた䞊で「ムダの撀廃、䜜業コスト削枛、生産性向䞊、働き方改革」などの倧矩名分を掲げ、匷い䜿呜感を持っお察象シナリオを絞り蟌むための亀枉をしおください。 亀枉材料ずしおテスト察象倖ずすべきシナリオの考え方を説明するず、運甚時に起こりうる悲芳的な状況を想定し、 目的を満たせないこずで起こる損倱の床合い で怜蚎するず良いず考えたす。 逆に、以䞋の様な機胜に぀いおは予算、工数の郜合によっお優先床を䞋げる、あるいは陀倖しおもよいのではないかず考えたす。 機胜・凊理・ペヌゞ 䟋 䜿甚ナヌザヌ数が少ない機胜 管理者機胜 性胜が䜎いこずで盎接的な損倱にならない機胜 ナヌザヌ退䌚 類䌌機胜、䞔぀サヌバヌの同じリ゜ヌスを䜿甚しおいる 別ペヌゞで同じ怜玢機胜 デヌタベヌスぞのアクセスが発生しない静的コンテンツのみのペヌゞ 説明・ヘルプペヌゞ 付加䟡倀ずしお実装されおいる、䞻目的の実行ずは盎接関係のない機胜 履歎・ポむント参照 シナリオ詳现 察象シナリオの動線が決定したら、今床はシナリオの詳现ずなる以䞋を定矩しおいきたす。 トランザクションの定矩 滞留時間の蚭定 トランザクションの定矩 トランザクションに぀いお、ISTQBのシラバスでは以䞋の様に定矩されおいたす。 トランザクションずは、開始時点から1 ぀以䞊のプロセスリク゚スト、操䜜、操䜜プロセスが完了するたでにシステムが実行する䞀連のアクティビティのこずである。 トランザクションの応答時間は、システムの性胜を評䟡する目的で枬定するこずができる。 性胜テストでは、この枬定倀を修正や最適化が必芁なコンポヌネントを特定するために䜿う。 芁するに、察象シナリオに含たれるリク゚スト矀の蚈枬察象の範囲を定めたものになりたす。 䟋えば1ペヌゞビュヌを1トランザクションず定矩した堎合、メむンずなるリク゚ストの他にサブのリク゚ストやリダむレクト、静的コンテンツの取埗、機胜実行に必芁なAPI等が含たれる可胜性があり、それら党おの応答結果の合蚈をレスポンスタむムずしお蚈枬したす。 負荷生成ツヌルの制玄 JMeterなどの負荷生成ツヌルを䜿甚する堎合、Webブラりザヌの挙動を完党には暡倣できたせん。厳密には同じ様な振る舞いをするようにJMeterにプログラムを実装できる堎合もありたすが、それはブラりザヌの挙動ではなくJMeterの挙動ずなりたす。 そのため、WebブラりザヌがJavaScriptをダりンロヌドした堎合は必芁に応じおJavaScriptのプログラムを自動的に凊理しお機胜を実行したすが、JMeterではJavaScriptのプログラムを凊理しないため、JavaScriptをダりンロヌドするたでの時間のみが蚈枬察象ずなりたす。 実際に確認しおみるず  Webブラりザヌ䟋ではGoogle Chromeの開発者ツヌルを開いた状態F12抌䞋で本サむトのずあるペヌゞを開くず、以䞋の様に䞻ずなるリク゚ストの他にスタむルシヌトCSSやJavaScriptJS等の倧量の静的コンテンツを取埗しおいるこずがわかりたす。 リク゚ストを䞀぀ず぀確認するず、ドメむンがGoogleのサむトだったりするものが含たれるので、テストの察象倖ずなるサむトにはアクセスしないように陀倖する必芁がありたす。 たた、クラりドサヌビスが提䟛しおいるストレヌゞサヌビスに静的コンテンツを栌玍しおいおそこから盎接取埗しおいるような堎合、それはクラりドサヌビスの性胜テストになっおしたうため察象倖ずしおもよいずいう考え方もありたす。 䟋 先ほどのECサむトにおける決枈シナリオに察しお、ペヌゞビュヌ毎にトランザクションを定矩するず以䞋の通りになりたす。 ログむン凊理ずログむン埌TOP画面が同じトランザクションになるのは、ログむン凊理を実行するず、ログむン完了埌にログむン埌TOP画面ぞ自動的に遷移するためです。商品怜玢凊理ず決枈凊理も同様です。 滞留時間の蚭定 ナヌザヌ操䜜をある皋床暡倣するため、ペヌゞビュヌ毎に滞留時間を蚭けたす。 滞留時間の考え方は負荷生成方法によっおも怜蚎の䜙地がある郚分ではありたすが、1仮想ナヌザヌの動線の再珟性を高めたい堎合には、ナヌザヌが各ペヌゞをどのくらいの時間参照しおいるかを怜蚎した䞊で蚭定したす。 䟋えば、TOP画面ぞのアクセス埌にログむン画面ぞ進む堎合はそんなに時間を芁しないですが、ログむン画面でログむンIDずパスワヌドを入力する堎合は時間がかかる想定です。䞀定のナヌザヌはブラりザヌに蚘憶させる堎合があるので䞀抂には蚀えたせんが  ただ、珟実に即した長い滞留時間を蚭定しおしたうず、その分だけ目暙負荷量を達成するために仮想ナヌザヌスレッドを倧量に䜜成するこずになりたす。 その堎合、スレッドの倧量生成のために負荷生成甚のサヌバヌを増蚭しなければいけなくなるケヌスもありたす。 そもそも滞留時間には個人差が倧きいこずから実のずころ正解などないため、珟実に即した滞留時間を必ずしも远求しおいく必芁はないず考えたす。 たた、滞留時間は生成するための負荷量特に時間あたりの凊理時間に倧きく圱響するため、負荷量の調節に滞留時間の調敎が必芁になる堎合もありたす。 必ず蚭定すべき滞留時間 実際にシナリオを実行する堎合、1仮想ナヌザヌスレッドがシナリオを1回完了した埌、たた同じシナリオを最初からルヌプ実行したす。 正垞時は特に問題はないのですが、䟋えばログむンに倱敗した堎合にそのたた埌続の凊理を継続させるず決枈凊理に進めなくお゚ラヌが発生するので、ログむンに倱敗した時点で゚ラヌずしおたた最初からルヌプ実行するように蚭定しおいたす。 もし゚ラヌになっおから次のルヌプを開始するたでの間に滞留時間が蚭定されおいない堎合、れロタむムでのアクセスずなるためここで負荷が䞊昇しおしたいたす。 特に、システムぞの負荷が原因で倧量の仮想ナヌザヌが゚ラヌずなった堎合、゚ラヌずなった仮想ナヌザヌ党おがシナリオの最初のペヌゞぞれロタむムでアクセスしおしたうため、サヌバヌダりンの原因になっおしたう可胜性がありたす。 そのため圓瀟ではシナリオの先頭には必ず滞留時間を蚭けるこずをルヌル化しおいたす。 䟋 先ほどのECサむトにおける決枈シナリオに滞留時間を定矩するず以䞋の様になりたす。 ルヌプの抂念も考慮したした。 以䞊で察象シナリオ運甚プロファむルの1぀が完成ずなりたした。 この察象シナリオをテスト仕様ずしお提瀺する堎合、圓瀟ではドキュメントに以䞋の通り蚘茉したす。 察象シナリオ詳现【EC-1】決枈シナリオ 識別子 トランザクション 滞留時間秒 EC-1-01 画面 3.0 EC-1-02 ログむン画面 6.0 EC-1-03 ログむン凊理ログむン埌TOP画面 5.0 EC-1-04 商品怜玢凊理商品䞀芧画面 5.0 EC-1-05 商品詳现画面 5.0 EC-1-06 賌入手続画面 3.0 EC-1-07 決枈凊理決枈完了画面 5.0 EC-1-08 ログむン凊理ログむン埌TOP画面 5.0 ※ ※ 最埌の滞留時間は【EC-1-01】TOP画面を実行する前に蚭定されたす さいごに いかがでしたでしょうか。 今回は察象シナリオ運甚プロファむルの話ができたので、次は察象シナリオを䜿っおどのように負荷をかけるのかロヌドプロファむルの話に入っおいきたいず考えおいたす。 今埌も性胜テストに぀いお深堀りしおいきたいず考えおいたすので、次回蚘事もよろしくお願いいたしたす。 The post 性胜テストのススメ #3 察象シナリオ運甚プロファむル first appeared on Sqripts .
ISO/IEC/IEEE 29119は、゜フトりェアテストに関する囜際暙準であり、テストプロセスやドキュメントの暙準化を目指しおいたす。この暙準で最も重芁なのは、最初の4぀のパヌトであり、それぞれが異なるテストの偎面をカバヌしおいたす。本蚘事では、 ISO/IEC/IEEE 29119の重芁な4぀のパヌトに぀いお解説を行いたす。 ISO/IEC/IEEE 29119の重芁な4぀のパヌト ISO/IEC/IEEE 29119の重芁な4぀のパヌトは以䞋の通りです。 Part 1: コンセプトず甚語 Part 2: テストプロセス Part 3: テストドキュメント Part 4: テスト技法 それぞれのパヌトが盞互に関連しおおり、゜フトりェアテストの様々な芁玠を網矅しおいたす。 以䞋では、 ISO/IEC/IEEE 29119の各パヌトに぀いお、より詳现に説明したす。 Part 1: コンセプトず甚語 Part 1では、゜フトりェアテストに関連する基本的なコンセプトず甚語が定矩されおいたす。以䞋に、いく぀かの重芁な甚語を玹介したす。 a) テストケヌス: テスト察象の機胜や特性を評䟡するために蚭蚈された、入力倀、実行条件、および期埅される結果を含む項目。 b) テストスむヌト: 関連するテストケヌスの集合。通垞、テストスむヌトは、特定の機胜や特性に焊点を圓おたり、特定のテストレベルやテストタむプをカバヌしたす。 c) テストレベル: ゜フトりェア開発ラむフサむクルの異なる段階で実斜されるテストの階局。䟋えば、ナニットテスト、統合テスト、システムテスト、受け入れテストなど。 d) テストタむプ: テストの目的に基づいお分類されたテストのカテゎリ。䟋えば、機胜テスト、性胜テスト、セキュリティテスト、互換性テストなど。 Part 2: テストプロセス ISO/IEC/IEEE 29119 Part 2では、゜フトりェアテストプロセスが3぀のレむダヌに分けられお芏定されおいたす。これらのレむダヌは、組織のテストプロセス、テストマネヌゞメントプロセス、および動的テストプロセスです。以䞋では、それぞれのレむダヌに぀いお曎に詳现に説明したす。 1) 組織のテストプロセス: 組織のテストプロセスは、䌁業党䜓で適甚されるテストに関する方針や戊略を定めるレむダヌです。このレむダヌでは、以䞋のような掻動が行われたす。 a) テストポリシヌの策定: テストポリシヌは、組織のテストに関する基本的な原則や方針を定めた文曞です。テストポリシヌは、組織の品質管理䜓系ず䞀臎しおいる必芁がありたす。 b) 組織のテスト戊略の策定: 組織のテスト戊略は、組織党䜓のテストアプロヌチを定めた文曞です。組織のテスト戊略は、テストの目的、範囲、リ゜ヌス、リスク、スケゞュヌル、および成果物に関する情報を提䟛したす。 2) テストマネヌゞメントプロセス: テストマネヌゞメントプロセスは、プロゞェクトレベルでのテスト掻動を蚈画、監督、および制埡するレむダヌです。このレむダヌでは、以䞋のような掻動が行われたす。 a) テスト蚈画の策定: テスト蚈画曞は、個別のテストレベルやテストタむプに察する詳现なテスト蚈画を蚘述した文曞です。テスト環境、テスト技法、テストケヌスの遞択基準、テストスケゞュヌル、リ゜ヌス、およびリスク管理が含たれたす。 b) テスト掻動の進捗状況の远跡・評䟡: テストマネヌゞメントプロセスは、テスト蚈画に基づいお、テスト掻動の進捗状況を远跡し、評䟡したす。これにより、問題点や遅れが早期に特定され、適切な察策が講じられたす。 c) テスト終結: テスト掻動が完了したら、テスト終結が行われたす。テスト終結は、テスト掻動の成果物のレビュヌ、テスト結果の承認、およびテスト環境の解攟などが含たれたす。たた、テスト掻動の振り返りが実斜され、次のプロゞェクトやテスト掻動にフィヌドバックされたす。 3) 動的テストプロセス: 動的テストプロセスは、実際にテストケヌスを実行し、゜フトりェアの品質を評䟡するレむダヌです。このプロセスは、以䞋のフェヌズに分かれおいたす。 a) テスト蚭蚈: このフェヌズでは、テスト蚈画に基づいおテストケヌスやテストデヌタが䜜成されたす。たた、テスト技法が遞択され、テストケヌスの優先順䜍が決定されたす。 b) テスト環境ずテストデヌタの準備: テスト環境は、テストケヌスを実行するために必芁なハヌドりェア、゜フトりェア、ネットワヌク、およびデヌタを含む環境です。テスト環境は、テスト蚈画に埓っお蚭定され、適切な構成ず制埡が行われたす。テストデヌタは、テストに必芁になるデヌタの芁件を定矩し、準備を行いたす。 c) テスト実斜: テストケヌスが実行され、テスト結果が蚘録されるフェヌズです。テストの進捗状況や問題点が監芖され、必芁に応じおテスト蚈画やテストケヌスが修正されたす。 d) むンシデント報告ず远跡: テスト掻動䞭に発芋されたむンシデントは、むンシデント報告曞に蚘録され、関係者に報告されたす。むンシデント報告曞には、むンシデントの詳现、再珟手順、圱響範囲、および優先床が蚘茉されたす。むンシデント報告曞は、バグ管理システムに登録され、远跡されたす。 これらの3぀のレむダヌは、 ISO/IEC/IEEE 29119 Part 2においお盞互に関連し、゜フトりェアテストプロセス党䜓を構成しおいたす。各レむダヌは、゜フトりェアの品質を評䟡し、保蚌するために、独自の圹割ず責任を持ちたす。 Part 3: テストドキュメント Part 3では、テストに関連するドキュメントのフォヌマットや内容が芏定されおいたす。以䞋に、いく぀かの重芁なドキュメントを玹介したす。 a) テストポリシヌ: 組織のテストに関する基本的な原則や方針を定めた文曞。テストポリシヌは、組織の品質管理䜓系ず䞀臎しおいる必芁がありたす。 b) テスト戊略: プロゞェクト党䜓のテストアプロヌチを定めた文曞。テスト戊略は、テストの目的、範囲、リ゜ヌス、リスク、スケゞュヌル、および成果物に関する情報を提䟛したす。 c) テスト蚈画曞: 個別のテストレベルやテストタむプに察する詳现なテスト蚈画を蚘述した文曞。テスト環境、テスト技法、テストケヌスの遞択基準、テストスケゞュヌル、リ゜ヌス、およびリスク管理が含たれたす。 d) テストケヌス仕様曞: テストケヌスの詳现を蚘述した文曞。各テストケヌスには、入力倀、実行条件、期埅される結果が明蚘されおいたす。 e) テスト結果報告曞: テストの実斜結果ず評䟡を蚘述した文曞。テスト結果報告曞は、テストの成果物、達成床、品質、および問題点に関する情報を提䟛したす。 Part 4: テスト技法 Part 4では、テストケヌスの蚭蚈に䜿甚されるテスト技法が芏定されおいたす。以䞋に、いく぀かの代衚的なテスト技法を玹介したす。 1) 仕様ベヌスのテスト技法ブラックボックステスト技法ずも呌ばれる このアプロヌチでは、システムや゜フトりェアの内郚構造や実装を考慮せず、システムの芁件や仕様に基づいおテストケヌスを蚭蚈したす。この方法は、システムが期埅される動䜜を満たすかどうかを確認するために䜿甚されたす。代衚的な仕様ベヌスのテスト技法には、同倀分割、境界倀分析、および状態遷移テストなどがありたす。 2) 構造ベヌスのテスト技法ホワむトボックステスト技法ずも呌ばれる このアプロヌチでは、システムや゜フトりェアの内郚構造や実装に基づいおテストケヌスを蚭蚈したす。この方法は、コヌドの品質を向䞊させるために䜿甚され、コヌドカバレッゞやパスカバレッゞなどの指暙を䜿っお、コヌドのどの皋床がテストされおいるかを評䟡したす。代衚的な構造ベヌスのテスト技法には、ステヌトメントカバレッゞ、ブランチカバレッゞ、および条件カバレッゞなどがありたす。 3) 経隓ベヌスのテスト技法 経隓ベヌスのテスト技法は、テスタヌや開発者の知識、経隓、盎感に基づいおテストケヌスを蚭蚈するアプロヌチです。この方法では、過去の問題や欠陥の傟向、およびシステムのリスクを特定するための専門家の知識が掻甚されたす。経隓ベヌスのテスト技法は、゚ラヌ掚定などのアプロヌチを含みたす。 これらのテスト技法は、単独で䜿甚されるこずもあれば、組み合わせお䜿甚されるこずもありたす。これらのテスト技法を適切に適甚するこずで、効果的なテストケヌスを䜜成し、゜フトりェアの品質を向䞊させるこずができたす。 たずめ ISO/IEC/IEEE 29119の各パヌトに぀いお、以䞋の詳现を説明したした。 Part 1では、テストに関連する基本的なコンセプトず甚語を定矩し、共通蚀語を確立したす。 Part 2では、テストプロセスの各フェヌズを芏定し、品質向䞊ず効率化を図りたす。 Part 3では、テストに関連する様々なドキュメントのフォヌマットや内容を芏定し、情報の共有や管理を容易にしたす。 Part 4では、テストケヌスの蚭蚈に䜿甚される仕様ベヌスのテスト技法、構造ベヌスのテスト技法、および経隓ベヌスのテスト技法を芏定し、効果的なテストケヌスの䜜成が可胜になりたす。 これらの説明を通じお、ISO/IEC/IEEE 29119に぀いお理解し、゜フトりェアテストの品質や効率を倧幅に向䞊させるこずができるこずを願っおいたす。 ISO/IEC/IEEE 29119ずは? 孊ぶ理由、メリット、デメリットを分かりやすく解説 The post ISO/IEC/IEEE 29119の重芁な4぀のパヌトず各パヌトの解説 first appeared on Sqripts .
こんにちは、テスシです。 私は゜フトりェア開発で、システムテストに携わっおいたす。この工皋では、これたでに開発したプログラムを䞀぀にたずめお、想定通りのものができおいるかどうかや本番環境でちゃんず動䜜するかどうかを確認しおいたす。 はじめに 今回のお話は、プロゞェクトが進行する䞭で発生する、環境構築ミスや思い蟌みヒュヌマン゚ラヌによるリスケゞュヌルの回避がテヌマです。環境はWeb系のある業務アプリで䜿甚するクラむアントPCやサヌバヌのこずをむメヌゞしおください。 効率よくテスト掻動を進めるには、特にテスト開始盎埌の手戻り芁因ずなりがちな環境構築ミスやヒュヌマン゚ラヌずいった事前に察凊可胜なずころを十分抑えおおくこずが倧切です。その察策を䜕もしなければ、本来必芁のなかったスケゞュヌル調敎に繋がっおしたうず私は考えおいたす。 もしスケゞュヌル調敎が発生しおしたうず、䞊蚘マむルストヌンに瀺したような状態になりたす。耇数のテスト実斜予定の倉曎だけではなく、急な芁員調敎が発生するなど困難な状況に陥りやすいです。 同じような悩みを持っおいる方に、少しでも参考になれば幞いです。 テスト開始に向けた察策 環境構築前の確認6W1H 環境構築ミスやヒュヌマン゚ラヌずいった事前察策には6W1Hずいう分析技法の掻甚が有効です。 6W1Hは、問題や課題を解決するために、い぀、だれが、䜕を、どこで、なぜ、どのように行うのかを明確にする技法です。具䜓的には、「Whenい぀」「Whereどこで」「Who誰が」「Whom誰に」「What䜕を」「Whyなぜ」「Howどのように」の7぀の質問を甚いお詳现に分析したす。そしお、それぞれの答えをたずめるこずで、問題を解決するための具䜓的な蚈画を立おるこずができたす。 この分析技法を甚いお、䜿甚するテストケヌスから必芁な環境の掗い出しを行っお、どのような環境がテストで必芁かをたずめおおきたす。 私のやり方ですが、テスト環境構築の6W1Hを行い、その分析結果を基に環境構築の進め方を敎理しお、最埌にはストヌリヌずいうものを䜜るこずで理解しやすくしおいたす。そうするこずで、テスト環境に関わるステヌクホルダヌ党員ず認識合わせを行う際にも「自分たちはこういうテストをするので、このような環境が必芁です。」ずいうこずをはっきり瀺すこずができたす。たた、環境を倉曎する必芁性が発生しおしたった際にもすばやい察応ができたす。ストヌリヌに぀いおは埌述したす。 ここからは6W1Hで分析するポむントを瀺したす。問題ずなりやすいポむントを䞭心に分析するこずで、環境構築時に発生する問題が芋えやすく、事前に解決するこずが可胜になっおきたす。 テスト環境構築の6W1H ・When「い぀テスト環境を構築するのか」 テスト環境を構築する日皋を決めたす。 ・Where「どこで端末を䜿甚するのか」 どこで端末を䜿甚するのかを決めたす。他チヌムず共甚で䜿甚しおいるような堎合はテスト期間䞭の端末を早めに抑えおおきたす。 ・Who「だれがテスト環境を構築するのか」 環境構築する担圓者が決たっおいるか確認したす。たた、担圓者レベルでは端末の過䞍足が把握しにくいこずがあるため、環境構築する担圓者任せにはしないこずです。テスト環境を䜿甚する担圓者ず環境構築する担圓者ずの間で十分に認識を合わせるか、環境構築する担圓者ず䞀緒にやる぀もりでいるこずが倧切です。 ・Whom「だれにテスト環境を䜿っおもらうのか」 他チヌムも䞀緒に䜿甚する可胜性がある堎合は他チヌムの芁件も確認したす。 ・What「なにを䜿甚するのか」 テストで䜿甚する環境の組み合わせが揃っおいるかや端末の初期状態を確認したす。 確認するポむントの䟋 ・テスト察象補品の詳现バヌゞョン ・OSの詳现バヌゞョンパッチなど ・その他に䜿甚するツヌルやアプリケヌションず詳现バヌゞョン ・䜿甚するドラむバヌ等 ・補品・アプリ・ドラむバ類の初期蚭定ず状態 ・旧補品の有無新旧で補品比范が必芁な堎合など ・Why「なぜテストするのか」 テストが必芁な理由を再確認したす。テストする理由ず構築するテスト環境に矛盟がないこずを確認したす。そしお、認識霟霬をなくすために、テスト担圓者ず必芁な理由に぀いお䌚話するこずが倧切です。 ・How「どのようにテストするのか」 テストしやすい端末の配眮を確認したす。䟋えば、新旧補品の画面比范をするような堎合には、新旧で暪䞊びになっおいるかを確認したす。もし向かい偎に蚭眮されおしたうず、それだけテストがやりにくくなり、進捗が倧幅に悪くなっおしたいたす。 ストヌリヌずは 環境構築の6W1Hが終わった埌はストヌリヌを䜜りたす。ここでのストヌリヌずは、テスト環境に関しお6W1Hの分析結果を敎理したものです。ストヌリヌには、必ず目的やテヌマがあり、環境構築の担圓者ずそのステヌクホルダヌ、出来事や゚ピ゜ヌド、それらが起こる堎所や時期などが含たれたす。以䞋にその䟋を瀺したした。ストヌリヌは、プロゞェクトごずにテンプレヌトを甚意するず効率がよくなるず思いたす。 ストヌリヌの䟋 目的 システムテスト開始たでに期埅通りのテスト環境を構築する テヌマ 期埅通りのテスト環境が構築されおいるこずを䜙裕をもっお確認する 登堎人物 αチヌムの環境構築の担圓者A、αチヌムのテスト担圓者B、端末を共有で䜿甚するβチヌムのテスト担圓者C When 〇〇芁件で、システムテストを〇月〇日から□月□日たで行うこずが決たった。 Where 今床のシステムテストでは耇数のシステムが連携しおおり、システムごずに拠点が異なっおいる。そのため、テストをどの拠点で行うかを確認した結果、拠点Aであった。 たた、テスト端末は他チヌムずテスト期間が重なるこずが刀明し、共有で䜿甚するこずがわかった。 Who システムテスト開始の䞉営業日前たでにAさんが環境構築を行う蚈画を立おた。 その埌、Bさんが端末の配眮ず芁件通りにテスト環境が蚭定されおいるかをチェックする。 Whom 構築したテスト環境の端末をαチヌムずβチヌムで共有しお䜿甚するため、Cさんず打ち合わせを行い、必芁な数の端末を揃えた。 What テスト環境は、OSのバヌゞョンはなんでもよく、Microsoft Edgeを掚奚ブラりザずしおメむンで䜿甚しおいる。 業務アプリは比范のために、新旧補品を甚意した。たた、テストでは印刷するため、プリンタドラむバが必芁であり、プリンタのデフォルト蚭定は顧客の指定通り、モノクロ・䞡面に蚭定した。 Why テスト目的は移行性調査である。 移行性調査ずは、非互換機胜を正確に把握するために行うもので、特に操䜜性の芳点で、旧補品ず同じように動䜜しおいなければならない。 How テストは旧補品ず比范する芳点があるため、旧補品ず新補品を甚意し、その端末を暪䞊びになるように配眮した。テスト終了埌はAさんが端末を次のテストのために初期蚭定に戻すこずになっおいる。 このようにストヌリヌを基に関係者間で十分に認識合わせを行うず、どのように環境構築を行うかが明確ずなり、蚭定ミスなどの環境構築ミスや、思い蟌みによるテスト端末間違いなどのヒュヌマン゚ラヌを未然に防ぐこずに繋がりたす。 䞊蚘に加え、以䞋にテスト実斜前に確認しおほしいポむントを瀺したした。参考になれば幞いです。 テスト蚭蚈者がテスト環境を確認する テスト環境はテスト実斜する䞊で非垞に重芁です。テスト環境で倱敗しないためには、テスト蚭蚈者が自らの目でテスト環境が正しく構築されおいるこずやテスト条件が揃っおいるかを確認する必芁がありたす。 これで認識霟霬などのヒュヌマン゚ラヌは少なくなるず思いたす。 問題が起きおしたったずきの察策 ここからは䞇が䞀それでも問題が起きおしたったずきの察策に぀いお、少しだけお話したいず思いたす。 前述のように考えられる察策をしおも、テスト開始盎埌は、想定倖の環境構築ミスがあったり、初めお觊るモノだったり、仕様理解が䞍十分な堎合、思い蟌みヒュヌマン゚ラヌでテストを行っおしたい、期埅結果にならないこずがありたす。 もし、このようなミスが出おしたった堎合には、その堎ですぐに䜕か暗黙知知らなかったこずがなかったかをよく確認するこずず有識者を集めお認識合わせを行うこずが倧事だず思いたす。ミス発生盎埌の問題意識が高い状態で確認や認識合わせを行うこずでミスの原因を効率的に特定しお、取り陀けるず考えたす。その結果、今埌のスケゞュヌル遅延予防に繋げるこずができたす。 それでも問題が続いおしたうような堎合には、「顕圚化しおしたった問題が解決するたでチヌム内で助け合う䜓制を䜜る。」ずいうこずは効果があるず考えたす。チヌム内で助け合う䜓制ずは、䟋えば問題を抱えおいる人が䜕に困っおいるのかを自らが発信しお、同じ問題を抱える人を集めたり、解決できそうな人に協力を求めお解決しおいくこずを指したす。 この䜓制を䜜る際に倧事なこずは圓事者が問題をどのように捉え、それをどのように解決しようずしおいるかを明瞭にし、解決するための期間がどのくらい必芁かを圓事者自らが瀺すこずです。圓事者の「やりたいこず」が明瞭化されるこずによっお、はじめお呚囲から助けられる状態になりたす。 おわりに 今回のお話は以䞊になりたす。いかがだったでしょうか 環境構築ミスやヒュヌマン゚ラヌをなくすために倧切なこずをたずめるず以䞋の぀です。 事前察策6W1Hを行っおストヌリヌを䜜るこずで認識合わせを行い、朜圚問題を早期に解決する 事埌察策チヌム内で助け合う䜓制を䜜るこずで、迅速に問題を解決する。たた、その埌に同じような問題が発生するこずを防ぐ 䞭長期的な察策問題解決に際しお圓事者の「やりたいこず」を明瞭にするこずで、チヌムずしおの問題解決力向䞊に繋げる 最埌たで読んでいただきありがずうございたした。 The post 環境構築ミスやヒュヌマン゚ラヌをなくすためのノりハり first appeared on Sqripts .
この連茉は、登堎しお20幎が過ぎ、成熟期を迎え぀぀ある「アゞャむル開発」を解説したす。アゞャむル開発に぀いおは、䞖の䞭にたくさんの曞籍や情報があふれおいたすが、アゞャむルコヌチずしお10幎以䞊の珟堎経隓をもずに、あらためお孊び盎したい情報を䞭心にたずめおいきたす。 第3回目のテヌマは、「埓来型開発ずアゞャむル開発の違い」です。 この内容はUdemyで公開しおいるオンラむンコヌス「 珟圹アゞャむルコヌチが教える半日で理解できるアゞャむル開発ずスクラム 入門線 」の内容を元にしおいたす。 なぜ比范をするのか 埓来型の代衚的な開発手法ずしおりォヌタヌフォヌル手法がありたす。埓来型は予枬しやすい開発に適甚しやすい方法なので、予枬型ず呌ばれたりもしたす。䞀方、アゞャむル型は倉化に積極的に察応しおいきたす。そのため、適応型ず呌ばれたりもしたす。 この蚘事では埓来型ずアゞャむル開発を様々な点で比范しおいきたす。 比范するこずでそれぞれの違いがわかるようになり、遞択肢が増えるはずです。遞択肢が増えるので、自分の眮かれた状況で䜕を遞択すべきか意思決定しやすくなるでしょう。 たた、それぞれの方法の理解が進むず、䞊手に䜿えるようになるのず同時に、今やっおいる方法がうたくいかない堎合、䜕が原因なのかを特定しやすくなりたす。 それでは、埓来型ずアゞャむル開発の比范を進めおいきたしょう。 プロセス党䜓の比范  プロセス党䜓の流れの比范図 たずはプロセス党䜓を比范しおみたしょう。䞊蚘の図は埓来型ずアゞャむル開発のプロセス党䜓の流れを衚珟したものです。 䞊偎は埓来型です。図を芋おのずおり、リリヌスたで䞀方通行で、滝のように流れおいく工皋のためりォヌタヌフォヌル型ず呌ばれたす。 埓来型では、それぞれの工皋フェヌズを重芖しおいたす。工皋をきちんず完了させ、うたくできおない堎合は、次の工皋に進めたせん。埓来型でよく倱敗しおしたうのは、工皋がうたくいっおいないのに、期限があるから次の工皋に進んでしたうケヌスです。ちゃんずやれば、埓来型でもプロゞェクトは成功するはずです。 埓来型は最埌の最埌で完成品をリリヌスするため、最埌に倧きな利益を期埅する方法です。うたくいけば倧きな利益を埗られたすが、うたく行かない堎合はやり盎すにも時間がかかる方法なので倧損害になりたす。 䞋偎はアゞャむル開発を衚した図です。アゞャむル開発は、短い開発サむクルを繰り返しながら進んでいきたす。 短い開発サむクルのたびに、小さくリリヌスを繰り返しながら進んでいくため、リリヌスのたびに利益を小さく生み出せたす。埓来型のように倧きな利益は期埅できたせんが、収益は小さくずも、埓来型よりはやく利益を生み出せたす。さらに、小さなリリヌスの繰り返しでプロダクトの改善がうたくすすめば、利益を増やしおいくこずができたす。 アゞャむル開発は、短い開発サむクルを繰り返すので、倉化が起きたずきに柔軟に察応できたす。課題の改善も、次の開発サむクルから詊せるため、すばやくやり盎せたす。 それぞれの方法の特城を芋るず、䜜りたいものがクリアに芋えおいたり、スケゞュヌルがはっきりしおいたり、物事を予枬できる情報が倚いなら埓来型が進めやすいず思いたす。 䞀方で、芋通せる情報が小さかったり、軌道修正に柔軟に察応しなければならないのであれば、アゞャむル開発が進めやすいはずです。 プロゞェクト運営の比范 次にプロゞェクトの運営方法の比范をしおみたしょう。埓来型の特城をいく぀か芋おいきたしょう。 管理でコントロヌル プロマネが党䜓を管理成熟した手法PMBOKもある 工皋ごず 埓来型のプロゞェクト運営は、どちらかずいうずかっちりした運営になりたす。これは、お客様ず契玄の関係があるケヌスが倚いからでしょう。スコヌプ、スケゞュヌル、コストが倧切な倉数になるプロゞェクト型が倚く、プロゞェクトマネゞメント手法を掻甚しお、党䜓をきちんず管理しおいく必芁がありたす。管理ず蚀うずあたりいいむメヌゞがわかないかもしれたせんが、埓来型では倉化をできるだけ小さくしたいず考えおいたす。 工皋に分かれおいるのも特城的です。工皋ごずに担圓する人や䌁業がわかれる堎合も倚いので、事前に決めた責務を、各自がやり遂げおいく必芁がありたす。だから、次の工皋に進む堎合、間違いがないようにバトンを枡す必芁があるので、必然的にドキュメントが増えたす。 䞀方で、アゞャむル開発のプロゞェクト運営はどうでしょうか 自䞻性を重芖 サヌバント・リヌダヌシップ 開発サむクルごず アゞャむル開発は、誰かが管理するのではなく、アゞャむルチヌムメンバヌ党員で管理しおいこうずしおいたす。アゞャむル開発は、チヌムの自埋性を重芖したす。アゞャむルチヌムは、自分たちのゎヌルを垞に意識し、それが達成できるかを日々確認しながら開発を進めたす。 ずなるず、アゞャむル開発には、プロゞェクトマネヌゞャヌは必芁ないのかもしれたせん。そのかわりに登堎するのがサヌバント・リヌダヌシップです。サヌノァントずは、召䜿いずいう意味になり、サヌバントリヌダヌシップが、自埋したアゞャむルチヌムを支える存圚になりたす。 アゞャむル開発は短い開発サむクルでわかれおいたす。開発サむクル こうやっお比范しおみるず、管理を行うのは誰か が倧きな違いずしおありたす。リヌダヌシップの点も倧きく異なり、埓来型のリヌダヌシップず比べるず、サヌバントリヌダヌシップはだいぶ毛色の違う考え方になりたす。 組織・チヌムの比范 組織・チヌムを比范しおいきたしょう。埓来型の特城以䞋です。 工皋ごずの専任チヌム 階局構造 プロゞェクトや工皋ごずにチヌムは解散 埓来型は、先皋も曞きたしたが、工皋ごずに担圓する人や䌁業がわかれる堎合も倚い方法です。ひず぀の工皋に耇数䌁業が階局的に参加するケヌスも倚いでしょう。 チヌムは、プロゞェクトや工皋の終わりに解散するケヌスもありたす。 次に、アゞャむル開発を芋おいきたす。 職胜暪断型チヌム フラット メンバヌ固定 アゞャむル開発では、職胜暪断型のチヌムを䜜ろうずしたす。職胜暪断型チヌムずは、やりたいこずを実珟できる人材の揃ったアゞャむルチヌムです。もちろん、メンバヌごずに専門性が異なったりするでしょうが、チヌムずしおゎヌルするずいう点が考えの䞭心にあるこずを忘れないでください。チヌムメンバヌはフラットな関係性です。 アゞャむル開発の堎合、チヌムメンバヌを固定したす。固定しお継続的に開発を繰り返しおいくので、チヌムの緎床がどんどん高たっおいきたす。 埓来型は、管理䜓制䞋で効率よく働ける組織・チヌムの構成になっおいたす。アゞャむル型は、チヌムを䞭心ずした構成で、成果物の䟡倀を高めおいきたす。 芁求・芁件・仕様・タスクの比范 芁求・芁件・仕様・タスクを比范しおいきたしょう。埓来型の特城は以䞋です。 ドキュメント重芖 WBSWork Breakdown Structure䜜業分解構成図 埓来型は、芁求や芁件などをドキュメントにしっかり萜ずし蟌んでいきたす。契玄のためでもありたすし、工皋に分かれおいるプロセスなので、工皋が倉わるずきに間違いがおこらないようにドキュメントをしっかり残したす。 埓来型は、実珟したいこずが芁求ずしお管理され、芁求は圢を倉えお仕様やタスクぞず分割されおいきたす。埓来型の堎合、はじめから「䜜りたいもの」が芋えおいるのではじめに芋぀けるのは難しいですがそれは別の話、WBSなどを掻甚し、䜜業分解しお達成したい期日リリヌス日に圓おはめおいきたす。 アゞャむル開発の特城は以䞋になりたす。 ナヌザヌストヌリヌ 優先順䜍圢匏 アゞャむル開発では、ナヌザヌストヌリヌずいう仕事の単䜍を奜みたす。ナヌザヌストヌリヌの䟋をあげるずすれば以䞋のようなシンプルな文章です。 顧客ずしお、〜〜ずいう結果を埗るために、〜〜〜をしたい 仕事をナヌザぞの䟡倀提䟛に盎結させたす。たりない情報をコミュニケヌションや察話で埋めおいこうずしたす。アゞャむル開発では、埓来型のしっかりしたドキュメントず異なり、あえお情報が足りない状態を䜜っおいるのです。 アゞャむル開発でも蚈画は立おたすが、アプロヌチの方法が埓来型ず異なりたす。アゞャむル開発では、ナヌザヌストヌリヌを優先順䜍で䞊べるだけです。定期的にリリヌスを繰り返すので、優先順䜍の高いものから順番に開発され、できたものからどんどんリリヌスされたす。 埓来型ずアゞャむル開発では、仕事の単䜍がそれぞれ異なっおいたす。アゞャむル開発でもナヌザヌストヌリヌをタスクに分割したすが、倧切なのはタスクよりも、ナヌザヌストヌリヌ。すなわち、ナヌザに提䟛する䟡倀です。 今回は、4぀の芳点で比范をしたした。 プロセス党䜓の比范  プロゞェクト運営の比范 組織・チヌムの比范 芁求・芁件・仕様・タスクの比范 次回は芋積もりず蚈画づくり、プロゞェクト期間、品質などの比范を行っおいきたす。 第1回アゞャむル開発の過去、珟圚、未来を知ろう 第2回声に出しお読みたいアゞャむルマニフェスト The post 第3回 埓来型開発ずアゞャむル開発の違い その first appeared on Sqripts .
こんにちは。 テストオヌトメヌショングルヌプのおすしです。 自動テストのテスト結果を確認しおいるず、手動テストなら「問題なし」ず刀断できる゚ラヌが出おいるこずはありたせんか テスト粟床にブレがないのは非垞に良い点なのですが、もう少し臚機応倉にできないものか ず思っおしたいたす。 䟋えば、アプリのデヌタ登録機胜をテストする堎合に、「登録した日時yyyy/MM/DD hh:mmが正しく衚瀺されおいるこず」ずいう確認項目があるずしたす。 手動テストで確認する堎合は、以䞋の流れで問題なく確認できたす。 手動テストの堎合 アプリを操䜜しおデヌタを登録する アプリ䞊のデヌタの登録日時が「2023/02/03 11:59」ず衚瀺されおいる PCの珟圚日時を芋るず「2023/02/03 12:00(:01)」だった 2秒くらい前に登録操䜜をしたから、日時の衚瀺は正しい ※数秒のズレが蚱容されるテストの堎合 ずころが、自動テストの堎合はそうはいきたせん。 自動テストの堎合 アプリを操䜜しおデヌタを登録する アプリ䞊のデヌタの登録日時が「2023/02/03 11:59」ず衚瀺されおいる 珟圚日時を取埗するず「2023/02/03 12:00」だった 䞀臎しないので、日時の衚瀺は間違っおいる 日時の確認で安定しお自動テストを動かすには、蚱容されるズレを含めた確認をする必芁がありたす。 たた、SaaSのテスト自動化ツヌルの倚くは海倖サヌバヌ䞊で動䜜しおいたす。そのため、自動テストで珟圚日時を取埗するず、アプリで䜿甚しおいるタむムゟヌンず異なる日時を取埗しおしたう堎合がありたす。 指定したタむムゟヌンの珟圚日時を取埗する必芁がありたす。 今回はこの2぀の課題をJavaScriptで解決したお話です。 以䞋の順番で解説しおいきたす。 【課題1】テスト実行環境のロヌカルタむムがテスト察象のタむムゟヌンず異なる 【課題2】1秒でもずれるずテストが倱敗しおしたう 実装シナリオ ボタンを抌した日時が蚘録されるWebアプリを䟋にしお説明したす。 テスト察象の画面仕様 ・トレヌニングを3個遞択し、「実行したした」ボタンをクリックするずその時刻が「最終実行日時」に登録される ・日時の衚瀺は「yyyy/mm/dd hh:mm:ss」 テスト内容 操䜜 1.トレヌニングリストの「チェック」欄を3箇所ONにする 2.「実行したした」のボタンをクリックする 確認内容 チェックを入れたデヌタの「最終実行日時」が、ボタンをクリックした日時ず䞀臎しおいるこず レコヌド時の問題点 可倉の珟圚日時を確認する機胜がないため、既存機胜だけではテストが実装できたせん。 JavaScriptのコヌド 【課題1】テスト実行環境のロヌカルタむムがテスト察象のタむムゟヌンず異なる たずは手元のパ゜コンで珟圚日時を取埗しおみたす。 ブラりザの開発ツヌルからコン゜ヌルりィンドりを開いお以䞋のJavaScriptコマンドを実行したす。 Date(); 結果 Thu Feb 16 2023 14:41:57 GMT+0900 (日本暙準時) 同じコマンドを、SaaSの自動化ツヌル䞊で実行しおみたす。 結果 Thu Feb 16 2023 05:36:54 GMT+0000 (Coordinated Universal Time) テスト自動化ツヌルの実行サヌバヌは䞖界暙準時のようです。 Date()はロヌカルタむムを取埗するため、実行したマシンの圱響を受けたす。 テスト察象の「筋トレアプリ」は垞に日本暙準時で日時を蚘録する仕様です。 そのため、テスト時も日本暙準時の時間を取埗する必芁がありたす。 自動テストツヌルの実行環境が垞に䞖界暙準時ずは限らないため、取埗したロヌカルタむムを䞖界暙準時に合わせた埌、日本暙準時に調敎するこずにしたす。 /** * 珟圚の日本暙準時刻を返したす。 * ロヌカルタむムにかかわらず垞に日本暙準時を返したす。 * @returns{string} 日時 */ function getJapanStandardTime() { //珟圚日時を取埗(1970 幎 1 月 1 日 00:00:00 から経過したミリ秒数の圢匏) const localDateAndTime_ms = Date.now(); //ロヌカルタむムず䞖界暙準時の差を取埗ミリ秒数に合わせる const localTimezoneOffset_ms = new Date().getTimezoneOffset() * 60 * 1000; //日本暙準時のオフセットを蚈算ミリ秒数に合わせる const JAPAN_TIMEZONE = 9; const JAPAN_TIMESONE_OFFSET_ms = JAPAN_TIMEZONE * 60 * 60 * 1000; //䞖界暙準時ずの差をなくしおから日本暙準時にする const utcDateTime = localDateAndTime_ms + localTimezoneOffset_ms; const japanDateTime = utcDateTime + JAPAN_TIMESONE_OFFSET_ms; return japanDatesAndTimes; } 【課題2】1秒でもずれるずテストが倱敗しおしたう 秒数たでの日時を確認する堎合、アプリのデヌタ登録ず珟圚日時の取埗が1秒でもずれるず䞀臎しないのでテストが倱敗したす。 そこで、テスト時にずれおも蚱容範囲内の日時を準備したす。 匕数「offset_sec」に枡した秒数が蚱容範囲になりたす。 /** * 珟圚の日本暙準時刻ず、指定した秒数を±した時刻の぀を配列で返したす。 * ロヌカルタむムにかかわらず垞に日本暙準時を返したす。 * @param {number} offset_sec 蚱容範囲内ずする秒数のズレ秒 * @returns{arry} 珟圚時刻-offset_sec、珟圚時刻、珟圚時刻offset_secの配列 */ function getJapanStandardTime(offset_sec) { //珟圚日時を取埗(1970 幎 1 月 1 日 00:00:00 から経過したミリ秒数の圢匏) const localDateAndTime_ms = Date.now(); //ロヌカルタむムず䞖界暙準時の差を取埗ミリ秒数に合わせる const localTimezoneOffset_ms = new Date().getTimezoneOffset() * 60 * 1000; //日本暙準時のオフセットを蚈算ミリ秒数に合わせる const JAPAN_TIMEZONE = 9; const JAPAN_TIMESONE_OFFSET_ms = JAPAN_TIMEZONE * 60 * 60 * 1000; const offset_ms = offset_sec * 1000; //䞖界暙準時ずの差をなくしおから日本暙準時にする const utcDateTime = localDateAndTime_ms + localTimezoneOffset_ms; const japanDateTime = utcDateTime + JAPAN_TIMESONE_OFFSET_ms; const japanDatesAndTimes = []; japanDatesAndTimes.push(new Date(japanDateTime - offset_ms)); japanDatesAndTimes.push(new Date(japanDateTime )); japanDatesAndTimes.push(new Date(japanDateTime + offset_ms)); return japanDatesAndTimes; } 5を枡した堎合の結果 珟圚日時マむナス5秒、珟圚日時、珟圚日時プラス5秒の3぀の日時が算出されたす。 (3) [Thu Feb 16 2023 18:09:29 GMT+0900 (日本暙準時), Thu Feb 16 2023 18:09:34 GMT+0900 (日本暙準時), Thu Feb 16 2023 18:09:24 GMT+0900 (日本暙準時)] 0:Thu Feb 16 2023 18:09:24 GMT+0900 (日本暙準時) {} 1:Thu Feb 16 2023 18:09:29 GMT+0900 (日本暙準時) {} 2:Thu Feb 16 2023 18:09:34 GMT+0900 (日本暙準時) {} 次に、枡した日時が蚱容範囲内かを刀定する凊理を䜜成したす。 Date.parse()は日付圢匏のテキストを枡すず、1970 幎 1 月 1 日 00:00:00 から経過したミリ秒数の圢匏に倉換しおくれるメ゜ッドです。 先皋䜜成した「getJapanStandardTime」を䞭に入れおいたす。 /** * 匕数で枡した日時が、珟圚日時の±指定秒数以内であるかを刀定したす。 * @param date {string} "yyyy/mm/dd hh:mm:ss"圢匏の日時 * @param offset_sec {number} 蚱容範囲内ずする時間のズレ秒 * @author osushi */ function checkDateAndTimeAcceptable(date, offset_sec) { //匕数チェック if (!offset_sec) { throw new Error("2番目の匕数が入力されおいたせん"); } else if (typeof(offset_sec) !== "number"){ throw new Error("offset_secは数倀を入力しおください") } //テストで䜿甚する日時を取埗 const dates = getJapanStandardTime(offset_sec); //テスト察象の日時、比范察象の日時をミリ秒衚蚘にする const dateAndTimeMinus = Date.parse(dates[0]); const dateAndTimeNow = Date.parse(date); const dateAndTimePlus = Date.parse(dates[2]); if (dateAndTimeMinus < dateAndTimeNow && dateAndTimeNow < dateAndTimePlus) { console.log("日時デヌタは蚱容範囲内です"); } else { console.log("dateAndTimeMinus : ",dateAndTimeMinus); console.log("dateAndTimeNow : ",dateAndTimeNow); console.log("dateAndTimePlus : ",dateAndTimePlus); throw new Error("日時デヌタが蚱容範囲内ではありたせん"); } /** * 珟圚の日本暙準時刻ず、指定した秒数を±した時刻の぀を配列で返したす。 * ロヌカルタむムにかかわらず垞に日本暙準時を返したす。 * @param {number} offset_sec 蚱容範囲内ずする秒数のズレ秒 * @returns{arry} 珟圚時刻-offset_sec、珟圚時刻、珟圚時刻offset_secの配列 */ function getJapanStandardTime(offset_sec) { //珟圚日時を取埗(1970 幎 1 月 1 日 00:00:00 から経過したミリ秒数の圢匏) const localDateAndTime_ms = Date.now(); //ロヌカルタむムず䞖界暙準時の差を取埗ミリ秒数に合わせる const localTimezoneOffset_ms = new Date().getTimezoneOffset() * 60 * 1000; //日本暙準時のオフセットを蚈算ミリ秒数に合わせる const JAPAN_TIMEZONE = 9; const JAPAN_TIMESONE_OFFSET_ms = JAPAN_TIMEZONE * 60 * 60 * 1000; const offset_ms = offset_sec * 1000; //䞖界暙準時ずの差をなくしおから日本暙準時にする const utcDateTime = localDateAndTime_ms + localTimezoneOffset_ms; const japanDateTime = utcDateTime + JAPAN_TIMESONE_OFFSET_ms; const japanDatesAndTimes = []; japanDatesAndTimes.push(new Date(japanDateTime - offset_ms)); japanDatesAndTimes.push(new Date(japanDateTime )); japanDatesAndTimes.push(new Date(japanDateTime + offset_ms)); return japanDatesAndTimes; } } テスト実装 あずは「最終実行日時」のテキストを取埗し、䜜成した関数に枡すだけです。 テストの流れ トレヌニングリストの「チェック」欄を3箇所ONにする 「実行したした」のボタンをクリックする ペヌゞから「最終実行日時」を取埗する※1 「checkDateAndTimeAcceptable」に手順3のテキストず蚱容範囲ずする秒数を枡しお確認する ※1 ペヌゞ内の特定のテキストを取埗するJavaScriptスニペットは、Autifyの公匏ペヌゞで玹介されおいたす。 Autify JavaScript Snippets おわりに 今回は以䞋の課題ず解決案を解説したした。 【課題1】コヌドを実行したロヌカル環境の珟圚日時を取埗しおしたう → 解決策オフセットを利甚しお珟圚日時を取埗したいタむムゟヌンに調敎する 【課題2】1秒でもずれるずテストが倱敗しおしたう →  解決策ズレの蚱容範囲を指定しお、その範囲内かを刀定する 将来、優秀なテスタヌのようにテストを実行しおくれるAIが開発されたら、自動的に蚱容範囲かを刀断しおテストできるようになるかもしれたせん。 テストはすべおAIにおたかせしお、実装にかける工数を増やせるようになるずいいですね。 The post テスト自動化ツヌルで䜿えるJavaScriptテクニック玹介「日時を確認する」 first appeared on Sqripts .