投稿者: hmgrbean

  • 6月8日 手動テストのシナリオを自動化するのではなく、自動テストのシナリオを自動化すれば効率性、正確性の点でメリットがあるんじゃないか説

    6月8日 手動テストのシナリオを自動化するのではなく、自動テストのシナリオを自動化すれば効率性、正確性の点でメリットがあるんじゃないか説

    仕事で、自動化されたCucumberのシナリオを確認する仕事をしている。
    数百あるシナリオを、地道に1行ずつ見ていると、そのスクリプトを作成するチームのリードから、
    「数百のシナリオをある程度マージしたい。そうすることで効率的になると思うから」
    と言われた。

    ここで私は、ちょっと立ち止まって考えてみた。そのことを今日の日記に書きたいと思う。

    考えたというのは、手動テストを自動化していくよりも、最初から自動化することに主眼を置いたテストシナリオを用意する方が良いのではないか、ということ。

    まだ私の中で、自動化スクリプト(Selenium + Cucumber)の良し悪しを隅々まで理解していないので、なかなか上手いことは言えないのが心苦しいのだけれど、以下のような違いがあると考えた。

    • 手動テスト:表示された画面やデータベースに保存された内容を見て、開発されたものが正しいかどうかを確認する。人の目で確認する。
    • 自動テスト:画面表示テストだったら、画面を構成するものが正しいPATHとかで置かれているか、またデータベースの中にあるものだったら、適切なタイミングでストアされているかを確認する。機械で確認する。

    やろうとしていることは同じように思えるのだけれど、人の目と、機械で確認するという違いは割と大きいように思う。
    人の目だと、見逃す、勘違いする可能性がある。
    一方、機械(コンピュータ)で確認すると、見逃しや勘違いすることはないだろう。ただ、きちんと期待結果を入力しておかないと、どれが正しいのか分からなくなってしまう。ここさえきちんとすれば、自動化の方が(きちんとメンテナンスされていれば)いつでもできるという点、間違いがないという点で、こっちをちゃんとやっておきましょう、というふうに考えることができるのではないか。

    で、そうなると、手動テスト(人の目)をベースとして作ったテストシナリオよりも、自動テスト(機械の目)をベースとして作ったテストシナリオの方が、作りやすいなどあったりするのではないだろうか、と。

    いや、テストシナリオの中にあるテストケースの、テストで確認したいポイントは同じでも良いのかもしれない。順を追って進んでいくテストステップのところで、わざわざ画面に表示されている「ボタンを押す」という行為を機械に押させるようなことはしなくても良いのではないか。
    「ボタンを押した状態」を意図的に作り出せれば、その方がSelenium+Cucumberとしてやりやすいのであれば、メリットが多かったりしないだろうか。

    私に自動化スクリプト作りのスキルがないから、これは仮説でしかなく、ここにスキルが加われば、仮説を検証することができるのになぁ。
    Still Day 1、ここが始まりで、コツコツ勉強していけばいいんだろうけども。やろっかな。

  • 6月7日 地方創生 ソフトウェア 品質

    6月7日 地方創生 ソフトウェア 品質

    夜中に何度か目が覚め、その後にうつらうつらとしているところで何度か夢を見た。
    私はその夢をEvernoteとかTwitterにメモっておくのが好きで、そこから新たな着想を得られるからなのだけれど、今朝見たメモがなかなかのナイスアイデアだった。

    • 地方創生
    • ソフトウェア開発
    • テスト、品質
    • コンサル

    改めて見てみると、そのものズバリという感覚ではあるものの、地方のソフトウェアベンダーに対して、私の持つソフトウェア品質のあたりをベースにしてコンサルティングし、且つ必要となる人材を派遣して品質の向上を目指すみたいなビジネスモデルって、割とブルーオーシャンなのではないだろうか、と気づいた。

    多分私が夢の中で、地方に行きそこで頑張っているソフトウェア開発会社の人に品質向上をテーマとしたコンサルティング業務を請け負うみたいなものを描いたのだと思う。
    そこから得た着想を、忘れないうちにEvernoteにメモっていた、という顛末。
    地方で頑張っているソフトウェア開発会社は何社くらいあって、彼らが品質に対してお金を払いたいと思っているか。
    まずスタートラインはそこの調査から、ということになるかもしれない。
    とは言え、そんな簡単に事実を得られるとは思えないので、まずはココナラみたいなところで、私の持つナレッジを共有、気軽な相談会を作るところから開始しても良いのかもしれない。
    幸いなことにこちらはZoomで対応することが可能だから、気軽に話しましょう、みたいな敷居の高さを生かしつつ、やっていけるのかも。

    新しい事業を始めるのには勇気がいるだろう。
    私のこんな思いつきから、新たなビジネスが生まれるとか、というか「ビジネス」って呼んでいいのかわからない程度にしかならないかもしれないけれど、もしかしたら私の未来に、新たな可能性として道が生まれてくるかもしれない。
    怖いけどね。

  • 6月6日 自分の歩む先を、自分の理想とする方向へと

    6月6日 自分の歩む先を、自分の理想とする方向へと

    あの頃の自分に戻れたら、と自分のふっくらしたお腹を見て思う。
    あの頃、今から10kgぐらい痩せていた頃の体型が、とても大好きだった。

    過去の、自分がかつて歩んできた道の頃を考えてみることは、自分を前進させているのだろうか。
    もしかすると、今の自分という存在を否定しているのではないか、と。

    違うのだ。
    今の私は未来に向かんで少しずつ歩んでいるのであって、過去の自分に戻りたいわけではない。
    たまたま、私の歩んできた道のなかで、「あの頃は良かったな」と思える瞬間を思い浮かべているだけなのだから。

    もしかするとそれは、恵まれていることなのかもしれない。
    自分の思い描く理想を、自分が歩んできた道の瞬間に出会っていたのだから。
    だとすると、今の自分をまず肯定してあげて、あの頃生きていた自分を思い描き、それに向かって進むだけなんだろうな。

    未来って難しい。難しいけれど、未来は359°の可能性に満ちているから、自分の歩む先を、自分の理想とする方向へと足を向けるだけなんだよな。
    もしかすると、私の選択は、未来の方向性を340°狭めてしまうかもしれない。だけど、残り19°あるんだから、そこからまた自分の思い描く方向へと、足を向ければ良いのだろう。

  • 6月5日 大数の法則とマッチングアプリ

    6月5日 大数の法則とマッチングアプリ

    ちょっとした投資を始めてみると、今まで考えていなかったようなことに出会う。
    大数の法則とか、なんかどっかで聞いたことのある名前だったが、投資を続ける上でかなり重要な法則だということに気づいた。

    簡単にいうと、サイコロの目。
    何度か振ってみると、ある数値に偏った結果が出るかもしれないが、その回数を繰り返していくと、限りなく1/6に近づくというようなもの。
    つまり投資も同様で、何度も繰り返していくうちに、勝率が50%になっていくのだろう、ということ。
    私はまだほんとに始めたばかりで、実をいうとすでに10%くらい負けてしまっているのだけれど、もっと少額で繰り返すことで、徐々に勝率を上げていくことができるのではないだろうか。

    同様のことを考える。
    数打ちゃ当たる、なノリ。
    例えば、ある女性のことを好きな男性がいるとする。
    この男性は奥手で、女性と話そうとすると目を合わせることすら難しく、喋ろうとすると敬語になったり、声が上擦ったりしてしまう。
    こんなことではいつまで経っても付き合えないと考えた彼は、ある日、大数の法則を知る。
    男性はすぐさま、自分の女性遍歴について考えを巡らせる。
    もしかすると、数打ちゃ当たる方式で、僕にもいつの日か彼女ができるかもしれない。
    そう考えた男性は、マッチングアプリに登録する。
    いいな、と思った異性には積極的に声をかけ、会うようになる。
    最初は相変わらず声が上擦ってしまったけれど、確かに、場数を踏んでいくと声はそのまま出せるし、やがて目を合わせることもできた。
    男性はさらに雑談力を磨いていく。相槌の打ち方、目の合わせ方。
    ご飯の次にはデザートを食べるという、王道の順番。
    そしてようやく、男性には意中の人のハートを射抜く。

    なんて、典型的なサクセスストーリーだけど、これって大数の法則に則って何度も繰り返したというところが報われたワケだし、

    ていうか、

    割とこういう話ってあるような気がしてきた。
    大数の法則に則ったストーリーを考えれば、意外に売れたりするかもしれない。

  • 6月4日 何のために走るのか

    6月4日 何のために走るのか

    今日は久しぶりに10kmを走った。
    途中何度か歩いてしまったけど、なんとか走り切ることができた。

    私がは知りたい理由ってなんだろう。
    走ることで得られる達成感のためだろうか。
    こんな良い季節で、いくらでも走れるような身体を持ち、息の続く限り、そう、メロスのように走ることが、私にとっては最高の糧になるような気がするから。

    いや、多分それは思い込みで、人間って本来は走るために作られたからだではないんだろうなと思う。
    お腹の辺りに脂肪がつくし、そもそも長い距離を走るのであれば馬のように、足は細くあるべきだから。

    だけど走る。走った後に飲むビールは美味しい。
    そのために走ってるのかな、もしかすると体にとってはよくないことなのかもしれないけれど、私の充実感を獲得するためには、必要なのかもしれないから。

  • 6月3日 私のやめることリスト

    6月3日 私のやめることリスト

    6月にしては珍しい台風が去り、空気が綺麗になっているような感覚。
    まだきっぱり晴れておらず、空気自体はひんやりしている。
    そうだ、風はまだ6月のものだったんだ。台風なんてものが来ていたから、私はまだ季節自体が夏前ですよ、ということを忘れていたんだね。

    さっき図書館へ行ってきた。
    少し古い造りのそれは、本棚が低く設定してあり、とても見やすいのだけれど、逆に一番下の棚はものすごく見づらいんだよね。
    実際、一番下の棚にある本って借りられる率が低いんじゃないかと思うわ。

    今日はなんとなく図書館へ行ったので、偶然の出会いに期待してたんだよな。
    最近ちょっと気になってる投資のほんと、あと、やめることリストみたいな本を借りてきた。
    後者は、私がかねてより気になっている承認欲求のこととか、自分が苦しめば良いという考えをやめてみる、みたいなことが書いてあったので、こういうのって必要だよな、という気持ちと共に、借りてきた。
    ぱらぱらっとめくってみると「嫌われるの誤解をやめてみる」とか。
    ふむふむ、そうだよな、私なんてまさにこの「嫌われないように暮らす」ことを考えてしまっているから、これで自分の首を絞めちゃってるのかもしれないよなぁ。
    嫌われる勇気も読んだんだけど(こっちは買って読んだ)、結局のところ自分が嫌われないように意識してるんだよなぁ。

    人間関係のトラブルって、誰の身にも起こりうる「厄災」のようなもの。…「嫌われるんじゃないか」のほとんどは誤解。

    なんか勝手に人生がよくなる やめることリスト

    なるほどなぁ。過去、私が、嫌われた!と思ったことって、実は私の誤解だったかもしれない。本当は嫌われたのではなく、相手がたまたま機嫌が悪くて、私に八つ当たりしただけなのかもしれない。
    もしかすると今はもう、私のことを嫌ってなんかはいなくて、私がずっと「あの人から嫌われている」と考えに執着しているだけなのでは、と。

    考え方次第だよなぁ。過去との付き合い方っていう話なのかもしれない。

  • JavaでTDDに挑戦してみる(n回目

    JavaでTDDに挑戦してみる(n回目

    何度挑戦しているか分からないんですが、相変わらず仕事の切れ目とか、ちょっと落ち着いた時間帯にやったりしています。

    参考にしているのはこちら

    私の現在地

    • Javaはほとんど初心者です。Hello, Java!は書けます
    • テスト駆動開発は、ケントベックさんの本を何度か読みました。そこで写経しつつ、JavaでのTDDを理解しました
    • 使ってるIDEはEclipseです。Javaをなんとか自分のものにしたかったので。
    • QA経験は長いです。キャリア17年とか。テスト駆動開発の良し悪しとか、JSTQBのALTM持ってたりとか。今は事業会社でQAやってます。

    ケントベックさんの本はこちら。JavaとPythonで、TDDについて順を追って書いてあります。プログラムのことがわからなくても、読んでみると新たな発見があるかもしれません。

    テスト駆動開発/KentBeck/和田卓人【3000円以上送料無料】

    価格:3,080円
    (2023/6/2 18:29時点)
    感想(0件)

    どこまで進んでいるか

    上述した、参考にさせてもらってるサイトで、ここまで来ています。
    とりあえず入力値をそのまま返すようプログラムを組み、テストの方は2を入れてそのまま返すところまで。

    FizzBuzz.java
    FizzBuzzTest.java

    次のステップは、3を入れたらFizzと返すところでしょうか。

    FizzBuzz問題のテストを考えてみる

    ちょっとその前に、テストの組み立てを考えてみたいと思います。
    今更ですがFizzBuzz問題の要件はこちら。まだ初心者なので簡略化しています。上述した、参考にさせてもらってるサイトではちゃんとしたものを書いているので、本物を知りたい方はそちらをご参照ください。

    1. 数字は1から100まで。
    2. 3では、Fizzと返す。
    3. 5では、Buzzと返す。
    4. 100では、FizzBuzzと返す。

    さて、テストケースはどうなるか。
    私はここで、同値分割を考えてみたいと思います。同値分割というのは、結果が同じになる範囲をひとまとまり(これを同値クラスと理解しています)にし、そこから適当な値をピックアップするやり方、という理解です。

    • 3の倍数クラス
    • 5の倍数クラス
    • 15の倍数クラス
    • 上記以外

    シンプルに4つ、と言いたいところですが、3、5、15は公倍数があるので(45とか)、そこは15が優先されるというふうに考えると順番が変わるのかなと思います。ここで追加要件として、以下を追加してみたいと思います。

    • 2つ以上の組み合わせで公倍数となる場合は、数字の大きい方を優先する。

    すると、以下のようになります。

    1. 15、5、3の倍数クラス
    2. 15、5の倍数クラス
    3. 15、3の倍数クラス
    4. 5、3の倍数クラス
    5. 15の倍数クラス
    6. 5の倍数クラス
    7. 3の倍数クラス
    8. 上記以外

    さてここで問題が発生しました。
    上記、1と、例えば6では、ピックアップする数字がかぶってしまうことがわかりました。
    例えば、1では15と5と3なので、30を選ぶとしましょう。
    そうすると、6でも、30が選べちゃうわけです。
    こういう時、自分のルールとして、数字の若い方でピックアップされた数字は、選ばないということにしたいと思います。

    さて、それでは数字を選んでみましょう。

    /

    No.クラス名ピックアップした数字
    115, 5, 330
    215, 545
    315, 315
    45, 360
    51575
    6510
    739
    8上記以外71
    FizzBuzz問題の同値分割

    これで十分でしょうか。私の要件であれば、十分なのかもしれないです、が、最初の要件(数字は1から100まで)を忘れていました。
    ここは境界値分析が使えそうです。
    ホントは0と101を加えたいんですが、残念ながら私のJavaスキルでは、どうやってもエラーを期待結果と置くことができなかったので、泣く泣く省略したいと思います。
    なので、シンプルに、1と100を追加したいと思います。

    上記の表に1と100を追加してみます。

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100
    FizzBuzz問題の同値分割(1と100を追加、そして期待結果も追加

    これでようやく、全ケースが揃いました。ほんとは数字とか、全角半角とかもあるかなーと思ったんですが、ここではTDDを体験することが目的なので、上記で十分だろうということにします。

    と思ったんですが、書いてて力尽きました。ここから先はまた改めて。こっからようやくTDDってところなんですけどね。

  • 6月2日 自分で歌を作ってYouTubeにアップしてみたい

    6月2日 自分で歌を作ってYouTubeにアップしてみたい

    かねてより、自分で歌を作ってYouTubeにアップしてみたいと思っている。
    あ、これって「死ぬまでにしたいこと」のひとつな気がする。
    けど、腰が重く、進まない。

    まず、歌詞を作ろうとするところで、テーマが定まらず、立ち止まっている。
    悲哀をテーマにはしたいとは、思っている。
    けど、そこから、なんの?だれの?と思ってしまって、先に進まない。
    いつかどこかで、それっぽい神が降りてくるかなと思って待っているのだけれど、夜道をランニングしても、ベランダでタバコを吸ってみても、星新一さんが困ってた時のように歯磨きをしてみても、手を洗ってみてもなーんにも出てこないのである。
    なにか、歌詞を書き出してみると、自然に出てきたりするんだろうか。
    私が、小説を書く時と同じみたいに。

    私が小説を書こうとする時、よし、書くぞ!みたいな覚悟はなく、さらさらと書き出してみたりする。その時点では、誰かに見せるとか、ここに載せるとかは、まだ決めない。
    場合によって、内容によっては私の胸の中に秘めておくべきとなる場合もあるので、まずはEvernoteに無題、と銘打って、数行書き出してみる。

    そう考えると、この日記も、私が小説を書き出す時と非常によく似ているのではないだろうか。
    何かを書こう!と決めて始めないあたりとか。
    ここに載せる=人に見せるという前提だけは違うけれど、書くマインドセット、気合いのようなものは非常に良く似ている。

    そんなふうに、歌詞をまず考えてみても良いのかもしれない。
    ギターが弾けるので、ギターコードを混ぜながら。

  • 6月1日 ここに書く日記と、ほぼ日手帳に書く日記

    6月1日 ここに書く日記と、ほぼ日手帳に書く日記

    3月21日から始めた、この毎日なにかしらブログを書くということで、「今日なに書こうかなぁ」と考える時間が増えた。
    ネタに困る、とシンプルに言うとそういうことも少なくはなく、だけど、日々気になったものや、新たに始めてみようと思うようなことをここに書き留めることで、自分の考えを俯瞰できるような気がしている。
    過去に書いた日記を振り返ることは、ほとんどしない。
    正直に言うと、昨日書いた日記すら、なにを書いたか覚えていない。
    せっかく書いたんだから、と思う一方で、どうせ死ぬまでの暇つぶしで、1日に数万回くらいの発想を無意識に行なっている中で、それが記憶に残る程度まで強かったものだとしても、それがどうした、と考えてしまう。
    私としては後者の方が思いとしては強く、ほぼ日手帳にも同じように日記を書いている中で、そちらも気が向いた時くらいしか振り返ったりはしない。
    最近投資を新たに始めたので、時系列で追うことで何かが見えてくるかもしれないが、それをやる労力と効果を比較した時に、メリットが感じられないので、まぁいいかと思ったり。

    ここで書く日記と、ほぼ日手帳に書く日記、なにが違うのだろう。
    一番最初に思いつくのは、他人が見るかどうか。ここは誰かしら見る場合があるので、書いてることの支離滅裂さはある程度制限させ、私としてはきちんとした文章を書こうと心がけている。
    一方でほぼ日手帳のほうは、完全に殴り書き。誰も見ないし。たまーに、書いたところを写真で撮影してツイッターとかにアップロードすることもあるけれど、自分の書く字の輪郭など含めてプライベートに踏み込み過ぎていると考えており、あまり載せるようなことはしていない。
    どちらかに寄せても良いのかもしれない、と考えることがある。
    今のところはどっちも共存させていくつもりで、その分2倍の労力がかかるのだけれど、思考を外向けと内向けで使い分けることで、お互いの良い面を生かしながら自分の文章を書く力に役立てていけたら嬉しい。

    いや、これは自分の文章を書く力として役立っているのだろうか。
    このブログだって思いついたことをさらさらと書くだけで、自分のスキルとして身についているのか、甚だ疑問だ。
    自分のスキルを測るのって難しいけどね。続けることで、自然と身についていくものなのかもしれないけども。

  • 5月31日 気に病んでしまうかもしれないリスト

    5月31日 気に病んでしまうかもしれないリスト

    あっという間に5月も終わり!
    12分の5が終わった。早いなー2023年。早いなー人生。

    先日同僚と、人生でやり残したことがあるか、みたいな話をした。
    私の中で、これもう何度も書いてることだけど、やり残したことってあんまないんだよなーという気分でいる。良くも悪くも。
    ポジティブに捉えるならば、自分のやりたいことが全部できているということになるから、それは自分の人生を謳歌してますよ、って話なんだろうな。

    そこに至るには、家族がいたり、お金がそこそこあったり、家があったりと細かな条件が積み重なっているんだと思う。
    人生って揺れ動くものだから、それらが全部私の手元からなくなってしまうことだって、もしかしたらあるのかもしれない。
    それはそれとして、「それも人生だから」で片付けるほど器の大きな人だったら良いのかもしれないけれど、実際のところ、私は気に病んでしまうかもしれない。
    気に病んでしまうかもしれないリストがあると良いのだろう。
    それらは、自分の手から無くならないように、それぞれの重要度や優先度を決めて暮らしていくべきなのかなぁ。
    だけどそういう水準すら、ずーっと固定なのではなく、揺れ動くものなはず。そう考えると、自分の中の価値観を俯瞰して見れるような考え方になっておくと良いのかもしれないなぁ。

    私の中では、家族、お金、家、という順番なのだろうかね。
    上述した時に、パッと思いつく順番で書いてはみたものの、それぞれの順番とかはきちんと吟味する必要があるのだろう。