構文エラー
プログラミング言語の文法的なミス。
静的型付け言語は、間違ったデータにアクセスしたり、データが混合しない
対して、動的型付け言語は、早く開発できるので安全性やコードの厳密化はユーザーの責任になる
論理エラー
意図してないデータを取ってきてしまうエラー。ここを正すのが大変。というかエンジニアの腕の見せ所?なのかなww
言語やIDEが自動でエラーを検出してくれるわけではないロジックエラーなので特定が大変になる。
ソフトフェアテスト
プログラムが自分が思ったように動くかテストすること。エラーは全体のプロジェクトに影響する可能性があるのでソフトウェアテストは開発業務において
20%ほどの時間に使われる。
基本、開発→リファクタリング(コードの修正、整理)→ソフトウェアテスト
テスト駆動開発
要件とは、プログラムが持つべき機能と、その動作をのこと。
①要件②テストケースの作成③テストケースの実施④コードの修正、作成⑤再テスト⑥リファクタリング(最終整理)
アサーション
プログラムを停止させたり、どこかが間違っている時にエラーを強制的に発生させることができるテストツールのこと
Bool型でデータを保持しており、false担ったときに強制ストップになる
ホワイトボックテスト、ブラックボックステスト
ホワイト→内部要素までしっかりテストする(中のコンポーネントをみて最適なアルごリズムやロジックまでテストする)
ブラック→内部要素は無視してテストする(結果だけあっていればOK)
手動テストと自動テスト
手動テスト
メリット 自動化できていないテストもある、少量のテストには向いている。論理エラーを経験則で解決できる
デメリット 時間がかかる、再利用しにくい、コードが煩雑になりやすい、大規模ソフトウェアテストとかは難しい
自動テスト
専用のソフトウェアをつかってQAエンジニアが行うテスト
メリット 多くのデータの計算量や空間量をテストできる。AIでできる
デメリット 単発テストには不向き。自動化できないものある。アルゴリズムの問題となると自動化には専門的な知識がめちゃ必要