駆け出しプログラマーの軌跡

日々の記憶(記録)を綴る

単体テスト

単体テストは「UT(Unit Test)」とも呼ばれ、関数やメソッドなどの小さな単位で行うテストのことを指します。

このため、ここの画面や機能で実施される動作を確認することが主たる目的となります。

とはいえ、実際のプログラムとなると、画面や機能が複数存在する場合の方が圧倒的に多くあるはずです。

それらの連携に関する部分は単体テストでは実施せず、結合テストの内容となります。

 

テストケースに関しては、下記の観点で考えていきます。

 

  • 画面の表示におかしいところはないか
  • リンクやボタンを押した時の動作はどうか
  • データベースとの連携(登録、編集、削除)ができているか
  • 表示されるメッセージは正しいか
  • 想定外の動作をしていないか

単体テストでは基本的に、その画面でできることは全て確認する必要があります。

画面上の項目ばかりに気を取られ、データベースとの連携を見落としたり、検索パターンの検討をし忘れないようにしましょう。

任意の文字列の最後の2文字を3回繰り返し
出力するメソッドを作りましょう。

※わからない場合はAPIを利用して問題を解きましょう。
参考URL:https://ref.xaio.jp/ruby

出力例:

extra_end('Hello') → 'lololo'
extra_end('ab') → 'ababab'
extra_end('Hi') → 'HiHiHi'


```
def extra_end(str)
char_num = str.length
right2 = str.slice!(char_num - 2,2)
puts right2*3
end
```
sliceと右から数えなきゃいけないことはわかったが、char_numって何表してんだろって思った。
```

エラーlogの確認

tail

ファイルの終わり部分を表示するコマンドです。 オプションをつけずに実行すると終わりから10行表示されます。
tailコマンドを使ってエラーログを確認することができます。サーバー構築をする際にはエラーログをファイルの末尾に追加していきます。そのため、tailコマンドを使用することで、新たに追加されたエラーログを確認できます。

1
$ tail -f error.log

上記のコマンドはerror.logというファイルを確認するためのコマンドです。tailに続けて-fというオプションを追加しています。
このオプションを追加することで新たにエラーログが追加されるたびに、自動で新しいエラーログを表示してくれるようになります。

エラーログの自動表示を終了したい場合はCtrl + Cで終了することができます。

みなさんは今エラーを確認することはありませんが、この先エラーログを確認する必要がある時はtailコマンドを使用しましょう。

SQL文(CONCAT関数)

データの結合

例えばあなたがユーザーのフルネームの一覧を取得したいとしましょう。

フルネームは"family_name""first_name"から成るので、以下のように

SQLを書くことができます。

 

MySQL

1
2
SELECT family_name, first_name
FROM users

すると、実行結果は以下のように表示されます。

 

名前の一覧は取得できましたが、私たちが取得したいのはフルネーム

なのでカラムが分かれているのは気になります。

そこで、"family_name""first_name"を併せて1つのカラムに表示させてみましょう。

そんな時に使うのがCONCAT関数です。

 

CONCAT関数

CONCAT関数は複数の文字列を連結させることができる関数です。

1
CONCAT(文字列1, 文字列2, ……)

▲連結させる文字列の中にNULLがあった場合、結果は必ずNULLとなって

しまいます。

 

実際にこれをSELECT句の中で使って、"family_name""first_name"を連結

させ、表示させてみましょう。

 

SequelProで以下のSQL文を実行してください

1
2
SELECT CONCAT(family_name, first_name)
FROM users

以下のように結果が表示されていれば正常にSQL文が実行できています。

 

https://tech-master.s3.amazonaws.com/uploads/curriculums//1ea9d3faf4502c45773711bc115d4545.png

このようにいくつかのデータを用いて1つのデータを作りたいときは

CONCAT関数を使用すると、結果が扱いやすいものとなります。

 

 

 

SQL文をきれいに書く(BETWEEN演算子、IN演算子)

単一カラムの範囲検索

まずは以下のようなケースを想像してみましょう。

もしあなたが、ageが21以上24以下のuserを探したいとします。
そうしたとき、ここまでで学んだ知識を使うと以下のようなSQL文を書くことが出来ます。

1
2
3
4
SELECT *
FROM users
WHERE 21 <= age AND age <= 24
-- ageが21以上かつ24以下

 ハイフンを2つ使用して-- コメントと書くと、SQL文として実行されないコメントを残すことが出来ます。

 
さて、このとき"age"という言葉を2回書いてしまっているのは少し冗長ですよね。
こういった範囲指定をする際に使える演算子があります。

 

 BETWEEN演算子

BETWEEN演算子は1つのカラムに対し上限と下限を指定して式を作り、カラムの値がその範囲に含まれるとき、その式は正になるという演算子です。

1
WHERE カラム名 BETWEEN 下限 AND 上限

 
実際に先ほどのageが21以上24以下のuserという条件を、BETWEEN演算子を使って書き直し、実行してみましょう。

 

 SequelProで以下のSQL文を実行してください

1
2
3
SELECT *
FROM users
WHERE age BETWEEN 21 AND 24

以下のように結果が表示されていれば正常にSQL文が実行出来ています。

 

単一カラムのリスト検索

今度はこういったケースを想像してみましょう。

あなたはprefectureが"東京都"もしくは"神奈川県"であるuserを探したいとします。
ここまでの知識でそれを実装しようとすると、OR演算子を使って以下のようにSQL文を書くことが出来ます。

1
2
3
SELECT *
FROM users
WHERE prefecture = "東京都" OR prefecture = "神奈川県"

このときもまた、"prefecture"という言葉を2回書いてしまっているところが冗長と言えます。
こういった場面ではリスト検索をしてあげると良いでしょう。

 

IN演算子

IN演算子は1つのカラムに対しリストを指定して、カラムの値がそのリストに含まれるとき、その式は正になるという演算子です。

1
2
WHERE カラム名 IN (1, 2, ……)
-- (値1, 値2, ……)の部分がリストとなります

ここでも実際に先ほどの、prefectureが"東京都"もしくは"神奈川県"であるuserという条件を書きなおしてみましょう。

 SequelProで以下のSQL文を実行してください

1
2
3
SELECT *
FROM users
WHERE prefecture IN ("東京都", "神奈川県")

以下のように結果が表示されていれば正常にSQL文が実行出来ています。

htmlを初めて知る

本日より少しずつでも知識を広げようと勉強を始めたものの

 

なかなか核心まで踏み込めない

 

 

まずはHTMLから始める

 

そもそもHTMLとは何か

 

勉強したことをそのまま引用すると

 

ブラウザにどんな要素があるか示す言語

 

とあるが。。。

 

 

要するに

 

インターネット上で目で確認できる部分をHTMLで作成している

※もし間違っていたら訂正お願いします

 

 

ちなみにhtmlの要素の一例

 

1<h1>見出し<・h1>

2<p>段落</p>

 

上記を見やすくより明確にすると

 

1<h1>

2 見出し

3<・h1>

4<p>

5 段落

6</p>

 

ちなみに作成したhtmlをブラウザで確認できるようなのでチェックしてみたが

 

そのまま羅列されていた。。。

 

何がおかしいんだ・・・

 

f:id:pride9:20190801213447p:plain

まだまだ先は長いことを思い知った。

 

とりあえず何が正解なのか調べます。