"Test" 

きほんのおさらい

@maaya8585

http://bit.ly/pyladies-test

Live

Who am I ?

@maaya8585

  • PyLadies Tokyoの中の人

  • Cloud Solution Architect

  • 好きなツール:Tornado / requests

  • 好きな酒:ワイン / 日本酒

Today's Goal

  • "TEST" に興味を持つ

  • 最小限の "TEST" を意識できるようになる

Agenda

  • なぜTESTが必要なのか

  • TEST 工程おさらい

  • UNIT TESTの観点おさらい

Agenda

  • なぜTESTが必要なのか

  • TEST 工程おさらい

  • UNIT TESTの観点おさらい

なぜテストが必要か

バグを見つけるため

なぜテストが必要か

要件に対して

 

 

 

明示するため

  • どのような解決を試みたのか

  • 解決されているのか

誰のためのテストか

自分ではない誰かと

未来の自分のために

誰のためのテストか

コードバグだけでなく

隠された仕様

を見つけ出そう

Agenda

  • なぜTESTが必要なのか

  • TEST 工程おさらい

  • UNIT TESTの観点おさらい

工程

単体

TEST

結合

TEST

システム

TEST

総合

TEST

※命名や工程の区別は

会社やプロジェクトによって違う

  • 性能テスト

  • 運用テスト

  • 機能テスト   etc...

工程

単体

TEST

結合

TEST

システム

TEST

総合

TEST

参考

テスト・品質系の方のバイブルドキュメント

http://bit.ly/qa-doc

Agenda

  • なぜTESTが必要なのか

  • TEST 工程おさらい

  • UNIT TEST観点おさらい

UNIT TEST

ユニットテスト観点 : お題コード

"""
アトラクション乗車制限チェックシステム
身長を入力し、アトラクションに乗れるか否かを返却する。
117〜195cmの人だけ乗れる。
"""
def raging_spirits(height):
    if 117 <= height and height < 196:
        return '乗れる'
    else:
        return '乗れない'

UNIT TEST

命令網羅(c0)

対象のmethodをテストし隊

分岐網羅(c1)

処理の分かれ道全てをテストし隊

UNIT TEST

ユニットテスト観点 : お題コード

"""
アトラクション乗車制限チェックシステム
身長を入力し、アトラクションに乗れるか否かを返却する。
117〜195cmの人だけ乗れる。
"""
def raging_spirits(height):
    if 117 <= height and height < 196:
        return '乗れる'
    else:
        return '乗れない'

UNIT TEST

これだけじゃ不安じゃない...?

そう思ったそこのあなた!!!

UNIT TEST

UNIT TEST

条件網羅(c2)

分岐条件をすべて網羅し隊

UNIT TEST

ユニットテスト観点 : お題コード

"""
アトラクション乗車制限チェックシステム
身長を入力し、アトラクションに乗れるか否かを返却する。
117〜195cmの人だけ乗れる。
"""
def raging_spirits(height):
    if 117 <= height and height < 196:
        return '乗れる'
    else:
        return '乗れない'

UNIT TEST

同値分割

同じ出力(入力) の中の代表値でテストする

乗れる

乗れない

130

162

187

99

208

102

160

200

UNIT TEST

Bug多いのそこじゃなくない...?

Bugは閾値付近に

埋まってることが多い !!!

UNIT TEST

限界値分析

閾値付近の値を集中的にいじめる

117195cmの人だけ乗れる。

UNIT TEST

閾値付近の値を集中的にいじめる

  • 116 cm

  • 117 cm

  • 118 cm

  • 195 cm

  • 196 cm

  • 197 cm

UNIT TEST

仕様これで足りてますか ???

  • 116 cm

  • 117 cm

  • 118 cm

  • 195 cm

  • 196 cm

  • 197 cm

UNIT TEST

117

196

  • 乗れない最小値は?

  • 乗れない最大値は?

  • 身長だからマイナスはないよね

  • 小数点以下の値は有効?

-> 入力チェック定義必要?

?

?

UNIT TEST

圧  倒  的  成  長

作成tips

ケースができたら

テスト実行しよう

作成tips

  • 基本的に1テスト1観点

  • "条件" と "期待値" は1対1になるよう明記する

  • 何度実行しても同じ結果が得られる

作成tips

user = {
    1: {'name': 'Mickey', 'type': 'ネズミ'},
    2: {'name': 'Minnie', 'type': 'ネズミ'},
    3: {'name': 'Daisy', 'type': 'アヒル'}
}


def extract_user(user_id):
    return user.get(user_id)

お題コード 

参考

https://github.com/mahya8585/

pyladiesTest

今日使ったコード

ma to me

  • 自分ではない誰かと未来の自分のためにテストコードを残そう

  • テストは考えることがたくさんあるよ

  • 仕様とコードの関連付けをテストコードでできるようになろう

@maaya8585

pyladies-test

By maaya ishida

pyladies-test

  • 1,799