テスターちゃん【4コマ漫画】

ソフトウェアテストの用語、やり方などを4コマ漫画でわかりやすく説明する(予定の)ブログです。脱線も多いです。



ChatGPTを用いたTDD part.5 (Integration test編)

ChatGPTを用いたTDD part.5 (Integration test編)

ChatGPTを用いたTDD part.4の続きです。

次は、1行1行分かれている文字列データを順次読み取っていって、データを収集させる部分を作ります。

 

  • ChatGPTを用いたTDD part.5 (Integration test編)
  • 文章全体のデータを収集して、集めたデータを返す
    • テストコードを書く
    • 最短でグリーンになるコードを実装
    • 詳細の実装
    • テストを変更する

 

文章全体のデータを収集して、集めたデータを返す

イメージとしては、ファイルを読み込んだら1行1行に分解して、それをこれから作るメソッドに投げれば、必要なデータが全部取得できる、です。一続きの長い文字列配列を得られることを想定しています。

ファイルの読み込み部分とcsv出力部分は最後に作ります。

今回はMockなしで結合して確認します。

テストデータは以下です。

[

"top - 13:52:54 up 6 min,  0 users,  load average: 0.01, 0.07, 0.03",

"Tasks:   2 total,   1 running,   1 sleeping,   0 stopped,   0 zombie",
"%Cpu(s):  16.2 us,  20.3 sy,  5.0 ni,63.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st",
"KiB Mem : 40979980 total, 37696840 free,  1050480 used,  2232660 buff/cache",
"KiB Swap: 10485760 total, 10485760 free,        0 used. 39463640 avail Mem"

]

期待結果は以下です。

[

"13:52:54","00:06",

"16.2","20.3","5.0",

"2.6\n"

]

テストコードを書く

続きを読む

ChatGPTを用いたTDD part.4 (Mock編)

ChatGPTを用いたTDD part.4 (Mock編)

ChatGPTを用いたTDD part.3の続きです。

TDDでTODOを行っていきます。

次は、これまで作ったget_time,get_cpu,get_memを入力された文字列に応じて処理をわける部分の実装です。

ここはMockを使ってテストを実装していきます。

 

  • ChatGPTを用いたTDD part.4 (Mock編)
  • top,cpu,memを判別してそれぞれのデータを返す
    •  
    • テストコードを書く
    • 最初のテスト実行(レッドの状態)
    • 最短でグリーンになるコードを実装
    • 詳細の実装
    • テストコードを追加し、すべてがグリーンになるまでテストを行う

 

top,cpu,memを判別してそれぞれのデータを返す

top,cpu,memを判別してそれぞれのデータを返す
    文字列の先頭がtopだった場合、topに対応するメソッドを呼び出し戻り値を返す
    文字列の先頭が%Cpu(s)だった場合、cpuに対応するメソッドを呼び出し戻り値を返す
    文字列の先頭がKiB Memだった場合、memに対応するメソッドを呼び出し戻り値を返す

イメージとしては、topが含まれた行を受け取った時はget_timeを呼び出し、cpuが含まれた行を受け取った時はget_cpuを呼び出し、memを含んだ行を受け取った時はget_memを呼び出し、それぞれに応じた戻り値を得るメソッドです。

まずは最初のtopだったときの戻り値を確認するテストコードを書きましょう。

top - 13:52:54 up 6 min,  0 users,  load average: 0.01, 0.07, 0.03

これを受け取った時に期待結果は以下です。

["13:52:54", "00:06"]

 

テストコードを書く

続きを読む

ChatGPTを用いたTDD part.3 (TODO実装続き)

ChatGPTを用いたTDD part.3 (TODO実装続き)

ChatGPTを用いたTDD part.2の続きです。

TDDでTODOをこなしていきます。

次はCPUの値を抜き出すところです。

 

  • ChatGPTを用いたTDD part.3 (TODO実装続き)
  • 与えらえた文字列からus、sy、niを抜き出して返す
    • テストコードを書く
    • 最初のテスト実行(レッドの状態)
    • 最短でグリーンになるコードを実装
    • 詳細の実装
    • リファクタリング
  • 与えられた文字列からメモリ使用率を計算して返す
    • テストコードを書く
    • 最初のテスト実行(レッドの状態)
    • 最短でグリーンになるコードを実装
    • 詳細の実装
    • グリーンになるまで修正
    • テストを追加し、グリーンにする

 

与えらえた文字列からus、sy、niを抜き出して返す

与えらえた文字列からus、sy、niを抜き出して返す
    文字列を引数として、us、sy、niを文字列配列にして返す

まずはテストコードを書きます。ChatGPTが。

テストデータは以下として、us,sy,niを抜き出して文字列配列で返すことを目標とします。

%Cpu(s):  16.2 us,  20.3 sy,  5.0 ni,63.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

※ChatGPT4.0だとテストコードを書いてもらおうとしてもテストコードを実行しようとするのでChatGPT3.5で書いています。

 

テストコードを書く

続きを読む

ChatGPTを用いたTDD part.2 (最初の実装編)

ChatGPTを用いたTDD part.2 (最初の実装編)

ChatGPTを用いたTDD part.1の続きです。

TDDを実践していきます。

時刻とup_timeを抜き出すTODOからやっていきます。

 

最初に、最後に書いた結果を記載すると

テストの実行結果/エラー文をひたすら与えるとChatGPTはテストを満たすコードを書くことができた

です。

 

  • ChatGPTを用いたTDD part.2 (最初の実装編)
    • 与えられた文字列から時刻とup_timeを抜き出して返す
    • テストコードを書く
    • 最初のテスト実行(レッドの状態)
    • 最短でグリーンになるコードを実装
    • 最初のグリーン
    • 詳細の実装
    • テスト実行
    • リファクタリング
    • リファクタリングとテストを繰り返す
    • おまけ

 

与えられた文字列から時刻とup_timeを抜き出して返す

ファイルの読み込み、csv出力は後にして細かい部品から作ります。

与えられた文字列から時刻とup_timeを抜き出して返す
    文字列を引数として、時刻、up_timeを文字列配列にして返す

TDDなのでまずはテストを作ります。ChatGPTを使います。

テストデータは以下として、この時間とup timeを抜き出して文字列配列で返すことを目標とします。

top - 13:52:54 up 6 min,  0 users,  load average: 0.01, 0.07, 0.03

 

テストコードを書く

続きを読む

ChatGPTを用いたTDD part.1 (TODO用意編)

ChatGPTを用いたTDD

作者こと私です。

本記事はソフトウェアテスト Advent Calendar 2023 4日目の記事ということで、今回はマンガではない話をします。

ChatGPTを使ってTDDを試してみます。

ネットを検索するとFizzBuzzなどばかりで面白みがないので、今回は多少使えそうなツールを作ることを目標とします。

 

今回はテストコードもchatGPTで作りますが、テストコードは自分で書いて、プロダクションコードをchatGPTに書いてもらうというようなTDDをを行うと、ChatGPTで意図した結果を得られるコードが書けそうでした。

この記事で書いたお題などは練習のお題としてお好きに使っていただいて構いません。

 

記事は本記事を含め計7本です。

ChatGPTを用いたTDD part.2 (最初の実装編)

ChatGPTを用いたTDD part.3 (TODO実装続き)

ChatGPTを用いたTDD part.4 (Mock編)

ChatGPTを用いたTDD part.5 (Integration test編)

ChatGPTを用いたTDD part.6 (最後の部品作り編)

[END]ChatGPTを用いたTDD part.7 (実行ファイル作成編)

最後の所感

作った成果物

作るもの

私は近頃仕事でtopコマンドの出力を眺めることが多いです。

topコマンドはシステムのCPU使用率やメモリを確認できるコマンドです。

1回の実行でその時の状況がわかります。

これを連続実行してCPUやメモリの変化を時間で追います。

以下は3回連続で実行させたものです。上にシステム全体のCPU使用率などが表示され、その下にプロセスごとの表示がされています。

(dockerでcentosを立ててtopコマンドを実行した結果)

私は全体傾向を追っていくことが多いです(取り扱っているモノがシステム全体のため)

今回は全体側のCPU使用率、メモリ使用率を以下のように時系列で表にするコードを書きます。

 

TDDの流れ

詳しい説明は他のブログに任せるとして以下のことを繰り返して進めます。

  1. TODOリストを書く
  2. TODOリストから一つ選んでテストを書く
  3. 全テストコードを実行させて加えたテストでレッド(エラー)を確認する
  4. 最短でグリーンになる実装を行う
  5. 全テストコードを実行させて加えたテストでグリーンを確認する
  6. リファクタリングする(詳細の実装、重複コードの除去など)
  7. 全テストコードを実行させて加えたテストを実行し結果を確認する
  8. 6~7を繰り返し、すべてグリーンになったら2へ戻る

TODOリストを作る

続きを読む

技書博9に参加してきました!

技書博9に参加してきました!

2023/11/25(土)に技書博9があり、久しぶりのイベントサークル参加をしてきました!

今回はフリーペーパー企画があり、マンガはそれで用意したものです。

金曜日に会社から帰ってきて

「フリーペーパー描いてない!」

ということに気づき、急いで話の内容を考えて、今まで描いた漫画のコマを使って夜なべして描きましたw

技書博は客層のほとんどが開発者のため、開発者に向けて描いています。

最後のコマが一番言いたいことです。

QA側からこのような提案をすることもありますが、開発者側から相談をしてくれるのも嬉しいものです。

 

ちなみに配布版は某警部の目は隠しています(笑)

 

当日

夜なべをしたので眠い目をこすりながら会場へ向かい、セット完了!

そこで大きな忘れ物に気づいたのです……。

 

「8巻がないーーー!!」

 

やらかしました。

まさかまさかの売り物を忘れてくるということをやらかしました!

フリーペーパーに「忘れ物に注意」みたいなことを書いておいて一番大事なものを忘れてきてるのでどうしようもないです。

見本用に2冊持ってきていたので、それを急遽売り物に。

で、開始直後に売り切れると(泣)

けどまぁ、ないものは仕方がないので、開き直って

「各内容は独立してるから大丈夫です!」

といった説明をさせてもらっていましたw

実際、巻をまたいで話はつながっていないし!

 

やっぱり睡眠不足はダメですよ。人類の敵です。

あとペンも忘れてきてたし。

 

お弁当

技書博9,スペース参加費がまさかの1000円でした。(普通は8000円程度)

それでこのお弁当がついてきた!!

絶対お弁当代だけで1000円超えてるだろ、とツッコみたくなりましたw

採算度外視弁当で!

ありがたい!おいしい!ヤバイ!語彙が消える!

他にも3種類あって、どれもゴージャスなお弁当。

どうやら技書博はサークル主への待遇がよいようです。

卓も半分ではなく1卓まるまるですからね。

……テスターちゃんはもう1卓ないと置けないというね。

 

戦利品

 

結構うろうろすることができましたので、ご挨拶がてら回っていました。

にゃむねこさんのところでは「仕様ですTシャツ」をゲットです。

少し暖かくなってからの登壇はこの仕様ですTシャツで登壇したい!

Thunder Clawさんのところでは「いやAndroidの実機でテストしてますよね!?」というツッコミを受けながら「Androidを実機でテストしろ!」の本を買っていましたw

品質公団さんのところでは「伺か」本!

いや絶対今の人は知らないでしょ、という本です。昔ハマってて懐かしくて買いました。(春奈のことをうっかりさくらと言って話していてごめんなさい)

ワニのトートバックはariakiさんのところ。ひっそりほしいものリストをプレゼントしたのですがそのお礼ということでありがたくもらってきました。サイズ的にお買い物バッグに……!(日本酒を入れてください、という指示はうけた)

 

売れ行き

うれしいことに多くの方々が買ってくださり

  • 1巻売り切れ(在庫もなし)
  • 2巻売り切れ(在庫もなし)
  • 3巻売り切れ(在庫もなし)
  •  新刊9巻売り切れ(正確にはあと2冊だけある)

このようになっています。

今日発注をかけて、2,3,9巻は来週の月曜日くらいには在庫復活予定です。

1巻はセリフを変えたい場所があるので少し構成検討中です。

テスターちゃんを書き始めたころは「最後の砦」が普通に言われていたのですが、今それを言うと周りからボコボコにされてしまう……!

 

135.プロダクトリスク・プロジェクトリスク その②

135.プロダクトリスク・プロジェクトリスク その②

プロダクトリスクは、作っているモノの品質に影響を与えるリスクです。

作業成果物がユーザーやステークホルダーのニーズを満たすことができない恐れ、といったところです。

JSTQB FL4.0では以下。

プロダクトリスクはプロダクトの品質特性(例えば、ISO 25010 品質モデルに記述がある)に関連するものである。プロダクトリスクの例としては、機能の不足や誤り、誤った計算、ランタイムエラー、貧弱なアーキテクチャー、非効率なアルゴリズム、不十分な応答時間、貧弱なユーザーエクスペリエンス、セキュリティの脆弱性などが挙げられる。

このように例が挙げられています。(プロダクトリスクとは何か、とはっきり書いていないのが気になるけど……)

 

プロダクトリスクはテストで確認できる

作者はこれが重要なことだと思ってるので、次回のマンガに書く予定です。

 

ネタについて

かずさんのポストがネタです!

これを見て「描きたい!!」と思ってしまったわけです(笑)

 

 

同人誌版テスターちゃん9巻『テストプロセス編』は2023年11月25日頒布!

テスターちゃん9巻の作業をして、無事脱稿しました!

『テストプロセス編』となっています。

 

頒布は第9回技術書同人誌博覧会で頒布します。

日時 : 2023/11/25 11:00 ~ 16:00

場所 : 大田区産業プラザPiO 大展示ホール

11月もアレコレ忙しく早め早めに動いていますw

 

イベント後にBOOTHで物理本/電子本の頒布も開始します~!

testerchan.booth.pm

 

まさかのホゲホゲリオン(前回ネタ)の続き

前回、プロダクトリスク・プロジェクトリスクの説明をした時に出したネタ『ホゲホゲリオン』。

 

testerchan.hatenadiary.com

 

この続きを見たいという要望がありましたので、うっかり描いてみました!

シャーペンでババババーと描いています。

よければご覧ください。

……いやぁ、僕は悪ノリしちゃうのがよくないんだろうなぁ。

 

 

---------------------

 

 

---------------------

 

 

--------------------

 

 

--------------------

 

 

最後に、こんな感じのネームを描いていたということで。

 

 

134.プロダクトリスク・プロジェクトリスク

134.プロダクトリスク・プロジェクトリスク

今回から「プロダクトリスク・プロジェクトリスク」の説明です。

最初はテスト計画を考えていたのですが、テスト計画の話を知る前にある程度知っておいた方がいいことが多数あることに気付いたわけでした。

その一つがリスクだったというわけです。

その他にもテストレベルやテストタイプなどなど挙げるととても多そうですが、そこそこに説明していこうと思いますw

 

リスク

リスクという言葉はなんとなくはみなさんに伝わる言葉かと思います。

定義的なものを引っ張ってくるならば……。

 

ISTQBの用語集的には以下です。

将来、否定的な結果を生む要素。

https://glossary.istqb.org/ja_JP/term/risk-2

 

『熊とワルツを』という本では以下です。

リスク[名] 

1. 将来起こりうる出来事で、望まない結果を生むもの。

2. 望まない結果そのもの。

引用: 熊とワルツを リスクを愉しむプロジェクト管理 著:トム・デマルコ/ティモシー・リスター

1番目がISTQBと一緒で原因を指していて、2番目が結果ですね。

 

JSTQBではリスクをプロダクトリスク、プロジェクトリスクにわけて説明をしているので、その辺のお話を展開していこうと思っています。