分かりやすく伝えるってなんだ?(小ネタ)
経緯
ちょうど先日、仲間内で「あいつ何言ってるかわからん」という話題が上がったため、説明が分かりにくくなる原因を考えました。
今日はそこからさらに発展させて読みやすい文章について考えてみました。
※注意:本記事は私がお客様先に常駐して QAエンジニアをしている都合でその視点での記事になっています
わかりにくい文章 3か条
なぜ相手に言いたいことが伝わらないのか。
と考えたときに、以下の 3つに区分してみました。
- 伝える相手が何を知りたいのかわからない、知らない
- 純粋な語彙力(知識)不足・日本語力(文章構成力やら文法、敬語やら)不足
- そもそも実は伝えようと思ってなくて、実は単なるつぶやき
おまけで、思考すっ飛び型(本人の中では連想ゲーム的につながっているけど、それが全く言葉になってないので前後のつながりが破綻する)というのもあるかなという話も。
2,3つ目に関しては、頑張れ!としか言えないし、おそらく本人は自覚がないと思います。
2つ目はもし業務で必要な人材なのであれば、周りの人間がちょっと細かいかなっていうレベルで指摘してあげる必要があります。
正直自覚がないと、違和感にも気づかないので一生成長はしないです。
いつか気づいてくれるは幻想です。
どうしたら伝わりやすい文章になるんだろう?
ちょっとかんがえてみました。
目的や読み手を明確にする
全体の構成や流れを考える
語彙力や日本語力を磨き、違和感に気付く
例えばこんな感じでしょうか。
目的や情報の受取手を明確にする
テストの各工程において、何らかの情報を伝えることはどの立場であってもついて回りますよね。
- 対自社のマネージャー
- 対メンバー
- 対お客様のマネージャー
- 対開発者
- etc...
相手に何を求めているのか、相手は何を知りたいのか。
そこを意識できているでしょうか。
また、あえて立場に限った話をしましたが、同じマネージャーでも気にするポイントは違うと思います。
相手が気にするポイントを把握しようとしていますか?
例えばメール一つとっても、誤字脱字が気になって気になってしまう人と、とにかく1秒でも早く情報が欲しい人など、様々です。
... まあ、誤字脱字は無いに越したことはないのですが、それを置いてもすぐ情報が欲しい人、というのもいると思います。そういう場合、推敲に1時間もかけて情報を渡すのではナンセンスです。
受け手の意識や心情に配慮できるとよいですね
全体の構成や流れを考える
最近よく現場で「報告書を読み上げるんじゃなくて、何を伝えたいのか考えて話すように」と言われます。
自分が一番伝えたいことは何か、相手が一番知りたいことは何かを考えて予め構成を考えておきましょう。
報告内容によっても構成を変える必要があります。
時系列順
結論から経緯
etc..
例えばセキュリティインシデントの場合は、とにかく時系列順に伝える必要がありますし、時間のないマネージャー向けの説明の場合は結論から話すなどの工夫が必要です。
語彙力や日本語力を磨き、違和感に気付く
本を読め!話はそれからだ。
…だとあまりにもひどいので、長くなり過ぎない程度にポイントを。
読むほうは慣れるまでテンパる可能性があるので、経験上、まずは書く文章から気を付けるようにしたほうがよいと思います。
読み返し方
- 時間をおく
- 印刷して読む
- 音読する
- 読み手の立場で読み返す
読み返すポイント
- 日本語が正しいか
- 誤字脱字はないか
- 文章全体の表記ゆれはないか
- スペースの使い方は適切か
- 違和感のあるところはないか
- やたらと読点、句点が多くはないか
- 接続詞は多くないか、間違ってないか
- 逆接の接続詞から入っていないか
- 必要ない言葉が含まれていないか
例
- 蒸気は私が現場で出荷判定会の場で報告するときに気を付けるポイントです。
- 上記は、私が、現場で、出荷判定会の場で、報告するときに、気を付けるポイントです。
- 上記は、私が現場で気を付けているポイントです。
まとめ
どうです?どの文章が一番読みやすかったですか?
あるいはどれも響かなかったですか?
情報の受け手を意識して、日本語力を磨いて、素敵なエンジニアライフを過ごしましょう!
開発者と作るテスト観点(小ネタ)
開発者と作るテスト観点
2019年にとあるプロジェクトで行った取り組みについて、備忘録がわりにまとめます。
そのものずばり、テストのための観点出しを開発チームと一緒になって行うことで、観点の過不足を補ったりや合意を取って進めることができました、というお話。
経緯
今回の評価対象は非常に難易度の高いものでした。
理由はいくつかあって
- 新サービスであること (e.g. ノウハウがまとまってない)
- テストチーム内に前任者がいないこと (e.g. すぐに頼れる人がいない)
- 環境が多岐に渡ること (e.g. 不具合の切り分けが難しい)
- ドメイン知識そのものの難易度が高いこと (e.g. 理解そのものが難しい)
- ボリュームが大きい
- メンバーに類似サービスの知見がない
etc....
のような感じでした。
取り組み
従来の進め方は以下の通りです
- [テストチーム内] テスト対象の分析を行う
- [テストチーム内] テスト計画を立てる
- [テストチーム内] テスト観点出しをする
- [開発チームに向けて] 概要レベルの観点レビューを行う
- 基本的には 1回 こちらが観点を読みあげて、その場でチェックしてもらう
- [テストチーム内] テスト詳細設計をする
- [テストチーム内] テスト実装をする
- [テストチーム内] テスト実施をする
今回は、まずテスト対象の分析に時間がかかったこと、開発物が出てくるのと仕様の FIX が計画時点ですでにテスト実施が始まってからでないと難しそうな予感を漂わせていたこと、その他もろもろの理由で、従来の進め方ではテストの遂行が行えないだろうと思われました。
そのため、以下の工夫を行いました。
- 開発チーム、運用チーム、(必須ではないが) サポートチームを招いた「仕様理解MTG」を週次で実施
- 仕様ができた(もしくはできる)順番にテスト観点だしをテストチームで行い、私(類似サービスの経験あり)がレビューをする
- 観点をマインドマップの形にして、かなり細かいレベルで書く(必要に応じてテストデータ、パラメータも当てはめた)
- レビューが済んだもののうち、不安が残るものは週次のMTGで対面で説明し、不明点を埋める
- それ以外のものについては開発チーム側の見える場所に集約し、非対面で指摘をもらう
よかったこと
上記の取り組みを行うことで、開発チームの持つノウハウの吸収が行えました。
また、テスト観点漏れをかなり防げました。
悪かったこと
開発計画時点で考えていたことではなかったため、開発側の工数をだいぶ食ってしまった。
今回が初だったので、次回からは早い段階でこういう取り組みがしたい旨を共有しておく必要がある、と思った。
悪かったとは言われませんでしたが、反省点の一つです。
システムテスト自動化カンファレンス2019 (中編 1)(後で編集するよ)
概要
7回目のシステムテストの自動化に特化したカンファレンス
私の確認する 講演会場2 テーブル
テスト自動化プロジェクトを支える技術と仕組み / 伊藤由貴さん
ベリサーブでは、品質・検証会社として様々な業種や対象のテスト自動化を行っています。 今回は、テスト自動化プロジェクトを成功させるために整備してきた
ガイドライン テスト自動化プロセス エンジニアのロールとスキル定義 教育体制 などのノウハウ・仕組みについてご紹介します。
シュゴイ…
テストの専門会社らしいなあという平凡な感想も抱きました。
中にいる人は目指すところがわかりやすくてとても良いですね。
会社レベルの「テスト自動化普及」ミッションに立ち向かう話 / 松木直之さん
社内のSEの開発活動において「テスト自動化を普及させる」というミッションを背負って仕事をしています。SI、PKG・サービス開発など幅広く多数の組織があるなかで、会社としてテスト自動化が十分に進んでいることを目指しています。ですが「どんなテストを自動化する話なの?」「どこまですれば普及になるの?」「現場はそんな余裕ないんだよ」など、まったく簡単な話ではありません。私も道半ばですが、そういう活動の状況や施策についてご紹介します。うまくいくこと/いかないこと含め、同じ立場の人のヒントになれば幸いです。
共通部門や自動化普及推進担当のような人はぜひ 個々のプロジェクトではなく複数組織横断、マスでとらえる活動です ミッションの考え方、説明の仕方、何をKPIにするか、など 施策例(ツール、教育、ナレッジ、など)
前のセッションと似ているようで違う話。
同じような話になるのかなと思っていたのでちょっと意外。
QAの専門会社と,超大企業の中の自動推進部隊だと、目的もやりたいこともその先に待っているものも違うもんなあ。
自動テスト≠コスト削減
って話はよく聞くけど、じゃあどういう風に表現するの、ってところはちょっと面白かった。
具体的に表現しつつ、簡単にコスト削減、って書かないようにしよう。
休憩中に tweet まとめ。
ターゲット:自動化を始める人。うまくいってない自動化の人。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
テスト自動化≒テスト実行自動化 として話す。
#stac2019
テスト自動化サービス
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
エンジニア数名が客先常駐し自動テストの要件定義、トライなる、システム構築、コーディングなどを行う。 #stac2019
理想:お客様の製品の QCD向上に寄与したい
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
一部のPRJの現実:炎上。QCD が上がらない
#stac2019
問題
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
社内の横連携不足
テスト自動化スキル不足
マネージャの自動テスト知見不足
#stac2019
スキルがなくて仕事ができなくてスキルが身につかない
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
既存の資料も役には立つが、初見の人がうまく使えていない現状もあった。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
具体的な仕組みがもっと必要ではないか。 #stac2019
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ナレッジって、実は使いこなすにもある程度知識が必要だったりするよねー。
施策
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
テスト自動化プロジェクトガイドライン策定
実際の事例やシラバス、社外の事例が載っている
#stac2019
テスト自動化の目的、成功要因と失敗要因
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
gTAA, TAA, TAS
マネジメント方法
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
個々の技術やツールに引っ張られがち。あるある。
実際今そうだしなあ…。楽しいんだけども。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
エンジニアのロールとスキル定義
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
何をどれくらい身につけたらいいのかわからない!
ロールを設定し、ロールに求められるスキルを定義した。 #stac2019
上のロールの人は、下のロールはできてるよね、という前提。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動テストシステムアーキテクト。プロジェクトマネージャ。プランナーなどなど。#stac2019 #room2
目指す姿:うちのエンジニアはみんなテスト自動化当たり前にできます#stac2019 #room2
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
テスト自動化の改善・導入に関するご相談お受けします。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動化エンジニア募集中。#stac2019 #room2
質問
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
教育期間と育つスピードは?
現状のロールごとの人の数が知りたい
回答
言える範囲で目標値:現場の数だけ必要なので、その数だけ目標#stac2019 #room2
もおおおおおおおおお!ツイッターが問題を起こすのでたびたびツイートが飛ぶ!
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
質問
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動化を推進するジャッジポイント
回答
リスクと自動化のしやすさを加味してマトリクスを作る
まずはハッピーパス?#stac2019 #room2
会社レベルの「テスト自動化普及」ミッションに立ち向かう話 / 松木直之さん (30分)
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ミッション!
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自社にアプリケーション開発で、自動テストに取り組んでk愛初作業を改善できる
#stac2019
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
富士通さんで先進技術共通技術が 5人…?!
自動テストが当然となる環境や時代への危機感。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
競争力の低下、SE価値の低下
テストにフォーカスできないことへの危機感
技術的負債
成長不安 #stac2019
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
逆にめっちゃ大きな企業だから、人海戦術が容易に可能なのか…。
寒いですね…。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
500人にアンケートって規模がでかいwwww
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
それでも 2割近く自動テストやってるんだ。
アンケート521人分で、半分くらいがぎっしりみっちりアンケートを書いてくれた。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動テストができない理由
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
人がいない、難しい、コストに見込めない、外注体制
できないこともある。。 #stac2019
前の話でも聞いたような話…w
ちゃんと知らない
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
互いによく知る
知らせる相手に興味がないなど#stac2019
どこかで聞いた話だな?
普及って何だろう?
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
どんなテストを?
どれくらいすれば普及?
どうなればいいのか明確に宣言ができない
ゴールを決めて計測する
定義、KPI、計測方法
#stac2019
なにを計測しても、腹落ちしない感はある。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
... とはいっても、計測は大事。
自動テストの実施率
受講率、理解度
状況の変化 #stac2019
ありがとうございますーーー!気持ち暖かくなってきました!
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
普及率の計測の先は、"効果の計測"が大事。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
効果は価値の表示。 #stac2019
普及活動の存続がかかっている。(売上ない、コスト削減対象になりがち)
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
開き直ってはいけない
説明責任がある
高いモチベーションをもってやる
#stac2019
おすすめ施策
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ツール
教育
事例 #stac2019
ツール
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
作るか定めたほうがいい
KPI
利用率
DL数、購入数
自動化対応率
自動化対象とするテスト作業のカバー率 #stac2019
社内ツールを自作するのはやっぱり会社規模かねえ。。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
テストツールハンズオン。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ハンズオン大事。手を動かさないとわからないことってある。
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
教育参加はハードルが低い…?
低いかなあ…。
事例
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動テストをしているプロジェクトにヒアリング
どれくらい見られているかも計測するの大事。
現場からの要求は高い
手始めに、具体的な事例が見られる。他はやってるのか?も大事。
事例集めは大事だけど、相手の負担にならないようにする必要がある
#stac2019
自動テストの効果=コスト改善:は危険。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
コストの話は効果に書かないようにする。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
KPI を複数持つ
コスト、と一言にしないで、人数、費用、単価、期間、どれの話かを明確にする。 #stac2019
活動スケールを広げすぎない。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
エンジニアすべてが自動化できる必要があるか?
どのドメインにも適用できるか?ということかな。
システムテスト自動化カンファレンス2019 (前半) 後でいっぱい書き換える予定
概要
7回目のシステムテストの自動化に特化したカンファレンス
私の確認する 講演会場2 テーブル
AIを活用した交通事故削減サービスのテスト自動化(仮) / 鈴木翔太さん、馬 立東さん
AI をちゃんと理解できてなくて難しかった。
なんとなくやっていることはわかる気がするのだが、いずれのことについてもそれが「なぜ」必要になるのかがわからなかった。
EM×QA視点で進めるテスト自動化への取り組み / 斉藤健太さん
ウエディングパークでEM(エンジニアリングマネージャー)とQAチームの責任者をしております。 両役割の視点から、QAで考えるテスト計画や設計をもとに、エンジニアリングでテスト自動化を進めていく取り組みを始めました。 弊社ではテスト自動化が、ほぼ標準化されておらずゼロからの取り組みとなり、そこに向けてどういうアプローチで進めていってるか、どういう全体構成や技術で基盤作りをしようとしているかなど、具体的な事例を交えてお話します! QAチーム自体も、私が約1年半前に完全内製化で立ち上げたチームですので、これからテスト自動化を進めていこうと思っている皆さんの参考になればと思います!
▼キーワード
思ったよりわかりやすかった。自動テスト関係なく大事なことも話してた。
Serverless automation UI testing by using AWS Fargate / 引持力哉さん
弊社LIFULLではサービスの回帰テストを目的として自動システムテストを利用しています。 リリース前に約800ケースの自動システムテストを定期的に行っています。 先日、テスト実行環境をEC2インスタンスからAWS Fargateへ移行しました。 これにより、効率的なテスト実行環境を作り上げることができました。 具体的には以下のものです
サーバコストの効率化
課金発生がテスト実行時のみになったため。 テスト実行時間の短縮
実行環境のスケールアップによる実行時間の短縮 実行の並列化による実行時間の短縮 AWS Fargateでのテスト実行環境アーキテクチャと、構築時に得た知見等をお話できたら良いと思っております。
コスト削減(性能的な部分の)に成功した話。
めんどくさいことが、タスク定義を書くだけで解決できるようになった。
問題解決の時に、ツールのオプションに頼りすぎず、ChromeDriver で解決したところとても好感度高い。
休憩中に tweet まとめ
講演会場2 に入った~。#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
サポート不足の具体的な内容は何でしょうか?
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
30-35% が問題を抱えている。
品質不足の具体的な内容
自動テストが不安定が多かった 2018年。今年は減ってきた。実行に時間がかかりすぎるとかのほうが増えてきた。 #stac2019
アンケート結果を今年は公開したい。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
頑張れー
テスト自動化スキル標準 AutomationTest.SSF ver1.0 を公開しました! #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
AIを駆使したやつ! #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
AL/ML システムについてのテストって何するの?
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ミッションクリティカル領域での AI/ML 活用
何をもって品質を保証できたといえるのかがわからない。 #stac2019
ソフトウェア開発との違い
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
機械学習
・入力データに対して「確率的」に振る舞いが決まる
・仕様を網羅できず、部分集合に対するテストしかできない #stac2019
エラーかどうかの検出が難しい。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
仕様を網羅できず、部分集合に対するテストしかできないのってなんで?
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
CACE性
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
・少しでも変更すると全体に影響が及ぶ性質
・学習や変更が行われるたびに品質を保証する必要がある
・コンポーネント全体に対してすべての条件で高品質なテストが必要なので自動化必須#stac2019
MLOps
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
DevOps のML 版。 #stac2019
AIプロダクトの品質保証ガイドライン #stac2019https://t.co/rs09mRtWfK
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
これかな
手探り感がいっぱいで、これといった方法論もない。できる範囲のことをやっていくしかない。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
からの、DRIVE CHART でやってること。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
・モデル部分以外は普通のソフトウェア開発手法を行う。CI/UT/CT
#stac2019
テスト条件の洗い出しをしてみた。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
いろいろ羅列されてるけど、これってどこかにため込んでるのかな?
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
特に注意してテストを考えたいのは、エッジケース
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
通常観測できる事象は豊富にデータがあるし、カバーできているはず。
エッジケースは意識して集めないとデータそのものがないことが多い。
とはいえ現実世界のすべての事象をカバーするのは無理。 #stac2019
間違って正しいと言ってしまうパターンと、見逃しの影響を考える。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
過剰品質にならないよう、関係者間で合意を取る #stac2019
これ大事。自動化関係なくあらゆる仕事で大事。マジで。じゃないと疲弊するしコストもかかるし。
AWS で 大量のデータを処理できる環境を用意。 #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
モニタリング
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
エラーログやステータスコードに加えて、事業KPI や中間指標をモニタリング。
でプロ時の変化、外部要因によるモデルの劣化をモニタリングしている。 #stac2019
まとめ。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
AI/ML はシステム開発が異なっていて、方法論もない。リスクなどは関係者間で合意を取っておく必要がある。なるべく自動化していきたい。 #stac2019
質問
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
このシステムのシステムテストは?
回答
AI と Webで分離してテストをしている
#stac2019
雑すぎたかな…
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
結合テストをしていきたい。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
EM×QA視点で進めるテスト自動化への取り組み / 斉藤健太さん
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
対象ドメイン:Wedding Park:式場探しのクチコミサイト。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
EM とQA の役割について。
#stac2019
テスト自動化の導入は、ビジネスリスクを軸に! #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
この会社の EM と QA。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
EM は開発チームのマネージャー。
QA は組織を横断で見ている。 #stac2019
EM:いわゆるマネージャーとか、技術導入検討とか。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
QA:テスト計画/設計サポート。実際にやるのはエンジニア。レビューもやる。
テスト自動化導入推進。 #stac2019
自動化を推進するにあたって、QA として推進もするし、推進する上での技術導入検討はEM がやる。どういうツールを使うかとか、言語はどうするかとか? #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
技術面:利用技術、カバレッジ率、メトリクス測定。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
何の数値を取っていったら品質向上につながるか。
運用面:開発フロー、運用メンテナンス、育成。 #stac2019
意外とこの運用メンテナンスって見えない部分。
QAとして考えたこと。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
QCD:品質上げて、コストは変えず、納期は早めたい。
ビジネス的な重要機能に絞る。テスト観点をベースとする。 #stac2019
QAが要件をしっかり作る。経営とも話をして決める。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
#stac2019
テスト自動化は何を担保すべきかをメインにフォーカスする #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ビジネスリスクを軸に!!!!!!!
あれいいなーこれいいなーじゃなくて、きちんと軸がぶれないように考えるのって大事だなー。(小並感) #stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
自動システムフレームワークについて。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
Bucky(LIFULL謹製ツール)
OSS化してまーす。#stac2019
各機能に応じて柔軟なリソース調整がしたい。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
レポート機能の切り離し。→これは大丈夫。
テスト実行時のみインスタンスを立ち上げる。実行ごとにリソースを変更できるようにする。→ のための AWS Fargate 。 #stac2019
細かい技術の話はあきらめよう…
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
コスト削減
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
料金削減
運用コスト削減
テスト実行速度アップ #stac2019
テスト対象はプライベートIPしかもたない。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
なので、awsvpc ネットワークモードを使った。 #stac2019
40% の料金ダウンってすごいなあ。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
/dev/shm RAMディスクが割り当てられている。容量が足らないとブラウザがクラッシュする。
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
chrome driver のオプションを使おう!
#stac2019
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
ツールに頼りすぎず、Chrome Driver に立ち返るところ面白い。
#stac2019
— つみき @ 12/22ボドゲ予定。預かり中 2 (@mktk0808) 2019年11月30日
面白いなあ本当に技術的な問題の解決方法の発表だー。 きっとこちらの会社はこういう情報をバンバン公開しているんだろうなー。
ffmpeg で動画を結合する方法 2 mpd ファイル編(memo)
ffmpeg で動画を結合する方法
基本的な手順は上記の URL を参照しつつ実施しました。
上記の手順で詰まったところを補足しています。
環境
ffmpeg は今回 WSL 入れて、Ubuntu 上で下記を実施してインストールしました。
sudo apt install ffmpeg
手順
- mp4 ファイルを作成。作成方法は問わず。
- 下記コマンドを実行する
ffmpeg -re -i test.mp4 -map 0 -map 0 -c:v:0 copy -c:a:0 copy \ -filter:v:1 "scale=-2:360" -c:v:1 libx264 -profile:v:1 main -b:v:1 600k -c:a:1 aac -b:a:1 128k \ -f dash -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" \ -movflags +faststart test.mpd
ログ
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2017-08-25T06:57:06.000000Z
Duration: 00:01:11.84, start: 0.000000, bitrate: 1383 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 1253 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #0:0 -> #0:2 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:3 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7fffb9ffba00] using SAR=1/1
[libx264 @ 0x7fffb9ffba00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fffb9ffba00] profile Main, level 3.0
[libx264 @ 0x7fffb9ffba00] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=11 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=600 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[dash @ 0x7fffb9fa0980] Opening 'init-stream0.m4s' for writing
[dash @ 0x7fffb9fa0980] Opening 'init-stream1.m4s' for writing
[dash @ 0x7fffb9fa0980] Opening 'init-stream2.m4s' for writing
[dash @ 0x7fffb9fa0980] Opening 'init-stream3.m4s' for writing
Output #0, dash, to 'test.mpd':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf57.83.100
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 1253 kb/s, 30 fps, 30 tbr, 15360 tbn, 30 tbc (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
Stream #0:2(und): Video: h264 (libx264), yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 600 kb/s, 30 fps, 15360 tbn, 30 tbc (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/600000 buffer size: 0 vbv_delay: -1
Stream #0:3(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2017-08-25T06:57:06.000000Z
handler_name : ISO Media file produced by Google Inc.
encoder : Lavc57.107.100 aac
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing bitrate=N/A speed=0.996x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00001.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00001.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00001.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00001.m4s.tmp' for writingpeed=0.998x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00002.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00002.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00002.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00003.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00003.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00003.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00002.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00004.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00004.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00004.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00003.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00005.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00005.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00005.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00006.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00006.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00006.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00004.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00007.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00007.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00007.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00005.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00008.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00008.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00008.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00009.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00009.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00009.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00006.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00010.m4s.tmp' for writingpeed=0.999x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00010.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00010.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00007.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00011.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00011.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00011.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00012.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00012.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00012.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00008.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00013.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00013.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00013.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream0-00014.m4s.tmp' for writingpeed= 1x
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream1-00014.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream2-00009.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'chunk-stream3-00014.m4s.tmp' for writing
[dash @ 0x7fffb9fa0980] Opening 'test.mpd.tmp' for writing
frame= 2155 fps= 30 q=-1.0 Lq=-1.0 size=N/A time=00:01:11.84 bitrate=N/A speed=0.997x
video:16469kB audio:2223kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x7fffb9ffba00] frame I:9 Avg QP:20.69 size: 40942
[libx264 @ 0x7fffb9ffba00] frame P:588 Avg QP:23.30 size: 6658
[libx264 @ 0x7fffb9ffba00] frame B:1558 Avg QP:28.54 size: 850
[libx264 @ 0x7fffb9ffba00] consecutive B-frames: 2.8% 1.8% 2.1% 93.4%
[libx264 @ 0x7fffb9ffba00] mb I I16..4: 14.3% 0.0% 85.7%
[libx264 @ 0x7fffb9ffba00] mb P I16..4: 0.6% 0.0% 1.2% P16..4: 38.9% 22.2% 17.1% 0.0% 0.0% skip:20.1%
[libx264 @ 0x7fffb9ffba00] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 41.3% 2.9% 0.8% direct: 1.6% skip:53.4% L0:42.2% L1:51.6% BI: 6.1%
[libx264 @ 0x7fffb9ffba00] final ratefactor: 23.12
[libx264 @ 0x7fffb9ffba00] coded y,uvDC,uvAC intra: 78.9% 60.9% 23.5% inter: 10.5% 5.6% 0.1%
[libx264 @ 0x7fffb9ffba00] i16 v,h,dc,p: 25% 31% 8% 36%
[libx264 @ 0x7fffb9ffba00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 30% 11% 5% 8% 6% 10% 5% 7%
[libx264 @ 0x7fffb9ffba00] i8c dc,h,v,p: 57% 22% 15% 5%
[libx264 @ 0x7fffb9ffba00] Weighted P-Frames: Y:3.2% UV:0.2%
[libx264 @ 0x7fffb9ffba00] ref P L0: 59.5% 17.3% 13.7% 9.3% 0.2%
[libx264 @ 0x7fffb9ffba00] ref B L0: 82.9% 12.7% 4.5%
[libx264 @ 0x7fffb9ffba00] ref B L1: 89.8% 10.2%
[libx264 @ 0x7fffb9ffba00] kb/s:624.49
[aac @ 0x7fffba073ba0] Qavg: 57434.145
dig の status の見方 memo
dig の見方 第1弾 status
第2弾はないかもしれないが。気が付いたベースのメモ。
ANSWER SECTION の見方はわかってるが、それ以外の見方についてあまり意識してこなかったので、ちょこっとメモを残しておく。
一例
; <<>> DiG 9.10.3-P4-Ubuntu <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53541 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
↑の場合、google.com を dig った結果。名前解決もばっちり。 なので、status が NOERROR になっている。
status | 意味 | 実際に打ってみたコマンド |
---|---|---|
NOERROR | エラーとなっているが、No Error なので、ちゃんと結果が返ってきた証拠 | dig google.com |
NXDOMAIN | どんな型のレコードも存在しない。ネームサーバ未登録のドメインとか。要は名前解決できなかった場合。 | dig hogehoge.fugafuga.com |
NODATA | 例えば Aレコードを解決しようとして、A はないけど他はあるよ、という場合? | (調査中) |
CNAME | CNAME の名前解決をしたとき? | (調査中) |
referral/委任 | 他の権威DNSサーバが知っている。親のネームサーバに聞きに行ったときとか? | (調査中) |
REFUSED | 名前解決不可なネームサーバに名前解決しに行ったとき? | (調査中) |
( 参考 URL ) https://www.geekpage.jp/blog/?id=2014/7/25/1 https://qiita.com/hypermkt/items/610b5042d290348a9dfa
behave での実行方法備忘録(memo)(作成中)
概要
behave 使って自動化試み中なので、試行錯誤の情報をまとめておく。
なお、日々少しずつ進めているので、途中でも自分用のメモとしてあげて、ちょこちょこ更新する予定。
behave に関するリンク集
使用した環境
> python --version Python 3.7.3 anaconda Command line client (version 1.7.2)
ファイルの配置
example L features L behave-test.feature L environment.py L steps (ディレクトリ) L step1-login.py
feature の書き方
@common Scenario: 契約を作る Given ログイン画面を開く And ログインする When 契約作成ボタンを押す And 値を設定する | hostname | | behave-comon | And 確認ボタンを押す And 設定ボタンを押す Then 完了と表示される