データアノテーション用 ツール

データアノテーション用 ツール

機械学習では、データの処理 と分析が 非常に重要であるため、仕事を簡単にするために データに注釈を付けるための ツール をいくつかご紹介いたします。

アノテーションの詳細 については、こちらを参照してください。

 

PixelAnnotationTool

このツールは、診断をサポートするために 医学の車、道路、細胞を見つけるなど のセグメンテーション問題に 適している。

データアノテーション用ツール

データアノテーション用 ツール

セグメンテーション画像の例

 

このツールは、OpenCVのウォーターシェッドマークアルゴリズムを使用している。 バイナリリンクに アクセスして、ツールをダウンロードして 使用できる。

 

データアノテーション用 ツール

ツールインターフェース

 

使用法:

ソースコードの設定ファイルで 色を変更し、色分けしたい領域に 色の数を対応させることが できる。 次に、マウスを使用して 色を「ドット」にし、目的の色領域に応じて「Enter」キーを押す。

 

データ生成ツール

データアノテーション用 ツール

 

Text Recognition Data Generator は、テキストを生成するために 使用されるツール。

 

このツールを使用すると、テキスト検出の問題に対して さまざまなフォント と 色を生成できる。 cn.txtファイルをdictsに 保存し、フォントも 常にcnディレクトリに保存するだけで、次のコードに従って コードを実行できる。

python run.py -l cn -c 1000 -w 1 -t 6 -k 3 -rk -b 3 -bl 1 -rbl

 

問題の要件に従ってデータを生成するには、ドキュメントを注意深く考察する必要が ある。

 

LabelImgツール

データアノテーション用 ツール

 

LabelImgは、データに注釈を付けるツールでも ありますが、Pixeltool以外では、LabelImgを使用して 周囲の4つのコーナーを取り出す。 ツールをインストールするには、githubのクローンを作成するか、pipを使用する。

 

pip3 install pyqt5 lxml # Install qt and lxml by pip

 

make qt5py3

python3 labelImg.py

python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

 

TestingTesting

モバイルデバイス を選択する方法

モバイルデバイス や モバイルアプリケーション はデスクトップアプリケーションとは 大きく異なります。それで、テストの中では、これらの機能をテストする必要 があります。

モバイルデバイス の特徴

モバイルデバイス

 

 

  1. ハードキーボード、仮想キーボード(タッチスクリーン)など、さまざまな画面サイズとハードウェア構成
  2. デバイスのメーカー(HTC, Samsung, Apple)
  3. OS(Android, Symbian, Windows, IOS)
  4. OSのバージョン(iOS 5.x, iOS 6.x, BB5.x, BB6.x etc.)
  5. OSの定期的な更新(android- 4.2、4.3、4.4、iOS 5.x、6.xなど)、更新ごとに、アプリケーションの機能に   影響がないことを確認する必要 がある。
  6. モバイルデバイス はデスクトップより 画面が小さい。
  7. モバイルデバイスはデスクトップより メモリが小さい。
  8. モバイルデバイス は通常2G、3G、4Gまたは WIFIネットワーク接続を使用しますが、デスクトップコンピューターは ブロードバンド または ダイヤルアップ接続を使用する。
  9. テスト自動化のツール はモバイルアプリケーション上では 動かない。

 

モバイルデバイス の限界

モバイルデバイス-限界

 

  1. CPU プロセッサー の限界
  2. RAMの限界
  3. ソースに左右される
  4. バッテリーの寿命
  5. (重要なことに、現在企業では)テスト用機器の深刻な不足

 

モバイルデバイス の選び方

モバイルデバイス

 

エミュレーター や シミュレーター と比べたとき、いつも 本物のモバイルデバイスで テストを行った方が 良い選択になります。しかし、適切なデバイスを選ぶのは 難しいです。そこで、テスト時の適切なモバイルデバイス の選び方を紹介します。

分析を行い、市場で 最も人気が あり、広く使用されているデバイスを特定。 さらに、さまざまなデバイスで テストする必要が ある場合は、モバイルストアから デバイスをレンタルすることも 経済的なオプションだ。

画面の解像度、オペレーティングシステムが 異なるデバイスを選択してください。

・互換性、メモリサイズ、接続性など 他の要素を確認してください。

 

テストサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

 

annotation

画像アノテーション の保存方法

画像アノテーション の保存方法

ディープラーニングについて、最初によく出てくるのは、大量のデータまたは大量の画像でしょうか。持っている画像の数が多いほど、コンピュータのストレージスペースはより多くのメモリを消費する。ImageNetは、分類、検出、セグメンテーションなどのタスクのモデルをトレーニングするために収集されるよく知られた画像データベースだ。 1400万枚以上の画像が含まれている。

 

この記事では、画像アノテーション を保存する3つの方法をご紹介いたします。

 

画像アノテーション

1)png形式の画像ファイルとして保存

このディスクに 画像アノテーション を保存するには シンプルで業務効率化のために Pillowをインストールをする必要がある。

$pip install pillow

 

ファイルをアーカイブするには?

 

from PIL import Image

import csv

 

def store_single_disk(image, image_id, label):

 

    Image.fromarray(image).save(disk_dir / f”{image_id}.png”)

 

    with open(disk_dir / f”{image_id}.csv”, “wt”) as csvfile:

        writer = csv.writer(

            csvfile, delimiter=” “, quotechar=”|”, quoting=csv.QUOTE_MINIMAL

        )

        writer.writerow([label])

 

ディスクに保存されているデータを処理するときは、すべてのファイルを開かなくても済むように、別のファイルラベルを.csvファイルに保存する必要がある。

 

2) Lightning メモリマップデータベース(LMDB)に保存

LMDBは、各項目がバイト配列として格納されるキー値ストレージシステムである。キーは各画像の一意の識別子になり、値は画像自体になる。データベース全体メモリマップし、すべてのフェッチデータは、マップされたメモリからデータを直接返す。他のほとんどのデータベースと違いし、メモリに何もコピーすることなく、キーと値の両方のメモリアドレスへのポインタを直接返すということだ。 LMDBをインストールして試してみましょう!

 

$ pip install lmdb

 

CIFARを使って取得する

 

class CIFAR_Image:

    def __init__(self, image, label):

        # Dimensions of image for reconstruction – not really necessary 

        # for this dataset, but some datasets may include images of 

        # varying sizes

        self.channels = image.shape[2]

        self.size = image.shape[:2]

 

        self.image = image.tobytes()

        self.label = label

 

    def get_image(self):

        “”” Returns the image as a numpy array. “””

        image = np.frombuffer(self.image, dtype=np.uint8)

        return image.reshape(*self.size, self.channels)

 

画像アノテーション の保存

 

import lmdb

import pickle

 

def store_single_lmdb(image, image_id, label):

 

    map_size = image.nbytes * 10

 

    # Create a new LMDB environment

    env = lmdb.open(str(lmdb_dir / f”single_lmdb”), map_size=map_size)

 

    # Start a new write transaction

    with env.begin(write=True) as txn:

        # All key-value pairs need to be strings

        value = CIFAR_Image(image, label)

        key = f”{image_id:08}”

        txn.put(key.encode(“ascii”), pickle.dumps(value))

    env.close()

 

3) HDF5形式に保存

HDF5を使用すると、複数のデータセットを保存し、データを分割して保存できる。最初にpipをインストールしましょう。

 

$ pip install h5py

 

HDF5ファイルを作成

 

import numpy as np

import h5py

data_order = ‘tf’  # ‘tf’ for Tensorflow

# check the order of data and chose proper data shape to save image

train_shape = (len(train_addrs), 224, 224, 3)

val_shape = (len(val_addrs), 224, 224, 3)

test_shape = (len(test_addrs), 224, 224, 3)

# open a hdf5 file and create earrays

hdf5_file = h5py.File(hdf5_path, mode=’w’)

hdf5_file.create_dataset(“train_img”, train_shape, np.int8)

hdf5_file.create_dataset(“val_img”, val_shape, np.int8)

hdf5_file.create_dataset(“test_img”, test_shape, np.int8)

hdf5_file.create_dataset(“train_mean”, train_shape[1:], np.float32)

hdf5_file.create_dataset(“train_labels”, (len(train_addrs),), np.int8)

hdf5_file[“train_labels”][…] = train_labels

hdf5_file.create_dataset(“val_labels”, (len(val_addrs),), np.int8)

hdf5_file[“val_labels”][…] = val_labels

hdf5_file.create_dataset(“test_labels”, (len(test_addrs),), np.int8)

hdf5_file[“test_labels”][…] = test_label

 

ロードして保存する方法は?

 

mean = np.zeros(train_shape[1:], np.float32)

# loop over train addresses

for i in range(len(train_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Train data: {}/{}’.format(i, len(train_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = train_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image and calculate the mean so far

hdf5_file[“train_img”][i, …] = img[None]

mean += img / float(len(train_labels))

# loop over validation addresses

for i in range(len(val_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Validation data: {}/{}’.format(i, len(val_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = val_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image

hdf5_file[“val_img”][i, …] = img[None]

# loop over test addresses

for i in range(len(test_addrs)):

# print how many images are saved every 1000 images

if i % 1000 == 0 and i > 1:

print ‘Test data: {}/{}’.format(i, len(test_addrs))

# read an image and resize to (224, 224)

# cv2 load images as BGR, convert it to RGB

addr = test_addrs[i]

img = cv2.imread(addr)

img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# add any image pre-processing here

# if the data order is Theano, axis orders should change

if data_order == ‘th’:

img = np.rollaxis(img, 2)

# save the image

hdf5_file[“test_img”][i, …] = img[None]

# save the mean and close the hdf5 file

hdf5_file[“train_mean”][…] = mean

hdf5_file.close()

 

アノテーションの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

Testing

テスト設計技法

1)テスト設計技法 とは?

  • テスト設計技法 は、具体的に特定のシステムで 可能なテストの総数から 適切なテストセットを選択するのに役立つ。ソフトウェアのテスト技法には さまざまな種類が あり、それぞれに 長所と短所がある。
  • 完全なテストは  不可能であるため、手動テストは、テストの品質を確保しながら テストケースの数を減らし、識別が難しいテスト範囲 と 条件を識別するのに役立つ。

2. テスト設計技法の種類

テスト設計技法 には多くの種類が ありますが、主に次の2つの種類がある。

2.1) 静的テスト

静的テストは、ソースコードを実行し、または ソフトウェアシステムを実行しないタイプのテスト

技法だ。例えば、仕様書、設計書、ソースコードの確認によるエラーの発見など。

ソフトウェア開発のライフサイクルの早い段階で 行われるため、検証プロセスで 行われる。

静的テスト技法は、ソースコード、設計とモデルのドキュメント、機能仕様、必要な仕様など、あらゆる形式のドキュメントをテストするために 使用できる。

静的テスト手法には 通常、次の方法が 含まれる。

  • 非公式レビュー:ミーティングのアーカイブを必要としない、または 記録する必要がない評価プロセス。
  • ウォークスルー:これは、テストサイクルの参加者に 知識を伝達するために、ソフトウェアロジックに 精通している人が 説明する一種の指示。
  • テクニカルレビュー: ソフトウェアの技術評価に 焦点を当てている。モデレーター または 技術専門家が関与する技術知識を持つ人が 主導。 技術的なコンテンツについて 合意に達して 意思決定することに 焦点を当てたディスカッションだ
  • 検査: その目的は、プロセスにおける各人の役割 と ソフトウェアの入出力基準を明確に定義すること。これにより、エラーを発見し、プロセスを最適化するために 集計および分析する。

2.2) 動的テスト

動的テスト技法は、コードが 実行されたとき、またはコードを実行して、アプリケーションの機能を確認するための一種のテスト。 つまり、動的なテストは、実際に アプリケーションを使用して、関数が期待どおりに 機能するかどうかを確認することによって 実行される。

動的テストには 2つのタイプがある。

+ ホワイトボックステスト: 内部で コードが どのように機能するかを検討。 このタイプのテストの場合、テスターは コードを理解する必要がある。

+ ブラックボックステスト: ソフトウェアアプリケーションの機能が 期待どおりに 動作していることを確認。ブラックボックステストのタイプ:

  • 機能テスト
  • 非機能テスト

Test design techniques

 

次の記事では、テスト設計技法のタイプについて 詳しくご説明いたします。

ブラックボックステスト と ホワイトボックステストを参照してください。

 


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

 

ホワイトボックステスト:基礎知識から活用を成功させる注意点「2024年版」

ホワイトボックステストは、ソフトウェア開発における必須の手法の一つです。ブラックボックステストと並んで、ソフトウェアの品質を確保するための貴重な手段として広く活用されています。この手法は、効率的でかつ費用対効果の高いテスト手法として業界で高い評価を受けています。

この記事では、ホワイトボックステストの優れたメリットや様々な種類、さらにその効果的な活用方法について、詳細に解説していきます。ソフトウェアの内部構造を深く理解し、コードの品質を向上させるための戦略的な手法として、ホワイトボックステストの価値を探求していきましょう。

ホワイトボックステストの基礎知識

本記事の最初章で、ホワイトボックステストの基本的な定義、ブラックボックステストの違う点及びホワイトボックステストの対象について説明していきます。

ホワイトボックステストとは

ホワイトボックステストは、ソフトウェアのテスト手法の一つであり、システムの内部構造や論理的な仕組みに焦点を当てた手法です。プログラムの外部仕様やユーザーの視点からではなく、コードやアルゴリズムの内部でどのように動作するかを重点的に検証します。

ホワイトボックステストの特徴

ホワイトボックステストでは、プログラムの内部で使用されている命令や分岐などが正しく動作しているかをチェックします。テスターは、ステートメントカバレッジ、ブランチカバレッジ、パスカバレッジな、さまざまなテクニックを活用して、ソフトウェアのコードベースを細部まで検査どします。この入念なアプローチにより、コードの各行が検証され、未検出のエラーやバグのリスクが最小限に抑えられます。

ホワイトボックステストはソフトウェアの内部構造と設計に対する貴重な洞察も提供します。テスターは、異なるコードコンポーネントがどのように相互作用し、データがシステムを流れるかについて、より深い理解を得ます。この向上した理解により、SDLCの早い段階で潜在的な問題や設計上の欠陥を特定し、長期的には時間とリソースを節約することが可能となります。

該当レベル

ソフトウェアを検証する際には、異なるソフトウェアテストの種類とテストレベルが存在します。ホワイトボックステストは、ソフトウェアテストにおける次のレベルにも適用できます。

単体テスト

単体テストは、ホワイトボックステスト技術の適用に最適な環境を提供します。このレベルでは、個々のコンポーネントを個別に検査し、プログラムを構成する比較的小さな単位(ユニット)が正確にその指定された機能を果たしていることを確認します。

ホワイトボックステストは、テスターがコードベースに深く入り込み、コードパスを入念に検証し、エッジケースを処理し、全体的な堅牢性を確保します。単体テスト中にホワイトボックステスト技術を活用することで、各コンポーネントの内部ロジックが徹底的に検証されます。これにより、潜在的な欠陥やエラーを特定し、コードを改善して信頼性とパフォーマンスを向上させることができます。

統合テスト

システム開発におけるプログラムの検証作業の中でも、手続きや関数といった個々の機能を結合させて、うまく連携・動作しているかを確認するテスト。ホワイトボックステストは、個々の機能が統合された際の相互作用やデータフローを詳細に分析し、システム全体の品質を確保するのに役立ちます。

システムテスト

システムやソフトウェアを構築した後に実行するテスト。ホワイトボックステストは、システムテストの一環として、ソフトウェア品質を検証します。内部の論理構造やコードの動作を理解することで、システム全体の問題やエラーを早期に発見し、修正することができます。

ホワイトボックステストは主に単体テストと関連しているかもしれません。ただし、統合テストやシステムテストの段階全体に適用することで、ソフトウェアの内部構造をより深く理解し、開発の各レベルで包括的なテストカバレッジを確保し、テストプロセス全体を強化することができます。

ホワイトボックステストとブラックボックステストの違い

ホワイトボックステストとブラックボックステストは、ソフトウェアテストにおける二つの基本的な方法論であり、それぞれが異なるアプローチと目的を持っています。

ブラックボックステストは、システムの外部仕様に基づいてテストを行う手法です。テスターは、システムが外部からどのように見えるかを重視し、内部の詳細には関心を持ちません。この手法では、システムの入力と出力を操作し、その振る舞いを観察して検証します。テストケースは、システムが正しく機能し、要件を満たしているかどうかを確認するために設計されます。ブラックボックステストは、システムの機能性やユーザビリティ、パフォーマンスなど、外部の視点からのテストを強調しています。

一方、ホワイトボックステストは、システムの内部構造やロジックに焦点を当ててテストを行います。この手法では、テスターはシステムのソースコードや内部の実装にアクセスし、コードのパスやデータフローを詳細に分析します。テストケースは、プログラムの各機能や分岐条件が正しく動作しているかどうかを確認するために設計されます。ホワイトボックステストは、プログラムの内部品質や構造の正確性を確認することに焦点を当てており、ソフトウェアのロジックエラーや隠れたバグを特定するのに役立ちます。

ホワイトボックステストとブラックボックステストの違い

ブラックボックステストとホワイトボックステストは、ソフトウェア品質保証において重要な役割を果たします。これらのテスト手法の選択は、テストの目的、プロジェクトの段階、そして利用可能なリソースなど、様々な要素に依存します。

もし、ホワイトボックステストの導入に悩んでいるか、プロジェクトに最適なアプローチを見極めるのに迷っている場合は、LQAにお任せくださいLQAは、ソフトウェアテストを専門とするベトナムの先駆的企業であり、約10年の豊富な経験と専門知識を持っています。プロジェクトの要件や特性を徹底的に分析し、お客様の予算や目標にシームレスに適合するテストアプローチを提案します。

包括的なホワイトボックステストサービスで費用対効果と品質向上を実現

ホワイトボックステストのメリットとデメリット

ホワイトボックステストは下記のようなメリットとデメリットをもたらします。

ホワイトボックステストのメリットとデメリット

メリット

徹底性

ホワイトボックステストはソフトウェア内のすべてのコードパスを網羅する徹底性が特徴です。このテスト手法の目的は、通常、可能な限り多くのコードをテストすることです。この包括的なアプローチにより、すべてのコードが厳密に検証され、隠れているかもしれない欠陥を検出する可能性が高まり、テストカバレッジが向上します。

自動化の可能性

ホワイトボックステストは自動化に非常に適しており、効率的かつコスト効果の高いテストソリューションとなっています。テストスクリプトはコードベースと直接やり取りできるため、繰り返しのテストやリグレッションテストを容易に実行できます。自動化テストツールを使用して、テストケースを実行したり、コードカバレッジを分析したり、包括的なレポートを生成したりすることができます。これにより、企業はテストプロセスを効率化し、貴重な時間とリソースを節約することができます。

また、自動化により、繰り返しのタスクを迅速かつ正確に実行できるため、テスターはソフトウェアのより複雑で重要な側面に集中することができます。

自動テストに関する詳細は、当社の「自動テストとは?メリット・デメリットや導入ステップを解説」の記事をご覧ください。

長期的な戦略的なコスト削減をお考えでしたら、ぜひ当社の専門家とお話ししてください。LQAは高品質な自動化テストサービスを提供し、熟練したテスターを活用して、クライアントの期待に応える成果をもたらします。

深い理解

ホワイトボックステストは、ソフトウェアの内部構造を詳細に調査することで、開発者が各コンポーネントやモジュールがどのように機能し、相互作用するかを理解するのに役立ちます。この深い理解により、開発者はソフトウェアの構造に関する洞察を得て、特定のコードの複雑さや重要なエリアを特定することが可能となります。

開発者は、ソフトウェアの内部構造やロジックに対する深い理解を活かして、より効果的なテスト戦略を策定することができます。このようにして、開発者はユーザーにとってより安定したおよび高品質なソフトウェア製品を提供することができます。

コードの最適化

ホワイトボックステストは、コードの実行パスに対する洞察を提供するため、効率的なソフトウェアの構築に貢献します。

このテスト手法によって、不必要なコードや冗長な処理が発見されることで、プログラムの最適化が可能となります。不要なコードや冗長な処理を特定することで、ソフトウェアのパフォーマンスが向上し、リソースの効率的な利用が促進されます。さらに、コードの最適化によって、ソフトウェアのメンテナンスや拡張性も向上し、将来的な開発作業がスムーズに進むことが期待されます。

デメリット

一方、ホワイトボックステストにはいくつかのデメリットも存在します。

複雑さとスキル要件

ホワイトボックステストの実施は、システムの内部構造に焦点を当てるため、テスターがプログラミング言語やソフトウェアアーキテクチャに深い理解を持っていることが不可欠です。

また、複雑なアプリケーションや大規模なソフトウェアシステムの場合、テストケースの設計や実行には緻密な計画と高度な技術が必要です。テストケースのカバレッジを確保し、適切なテストデータを作成し、テストの実行と結果の分析を行うためには、テスターが高度なテストスキルや問題解決能力を持っていることが求められます。

コスト・時間のかかり

ホワイトボックステストのデメリットの一つは、その実施にかかるコストと時間の増加です。徹底的なテストが行われるため、ブラックボックステストと比較して、ホワイトボックステストはより高いコストがかかる場合があります。ホワイトボックステストでは、各機能やコンポーネントが正しく動作するかどうかを確認するために、大量のテストコードを書くことが必要です。これも技術チームの手間を大幅に取れます。

そのため、プロジェクトの予算やスケジュールに制約がある場合、ホワイトボックステストの実施には注意が必要です。

ホワイトボックステストを適切に導入すれば、コードの品質向上や時間の節約、製品の改善など、多くの利点を享受できます。しかしながら、この種のテストを利用する際には避けられない課題も存在します。そのため、ホワイトボックステストを効果的に実施したい方は、LQAのような専門的なソフトウェアテスト会社にご相談ください。

LQAは豊富な経験と幅広いスキルを持つIT専門家を擁し、革新的な自動テストソリューションを提供しています。さらに、日本とベトナムの人件費の差を活かして、お客様の期待に応えるチームを素早く構築し、コストを最大30%削減することが可能です。

ホワイトボックステストの網羅基準

ホワイトボックステストにおける網羅基準は、テストがソフトウェアのあらゆる側面を包括的にカバーすることを確保するための基準です。これらの基準により、開発者やテスターはソフトウェアの品質や信頼性を確実に向上させることができます。下記はホワイトボックステストにおける代表的なコードカバレッジです。

ホワイトボックステストの網羅基準

命令網羅

命令網羅(ステートメントカバレッジ)は、テストがプログラム内のすべての命令を少なくとも一度は実行することを確認する基準です。つまり、プログラム内のすべての命令がテストケースに含まれることを目指します。これにより、コード内の個々の命令が正しく実行されるかどうかを確認し、カバレッジ率を向上させます。

 判定条件網羅

判定条件網羅はプログラム内のすべての条件文の真偽値が少なくとも一度は評価されることを確認する基準です。つまり、条件文が真と偽の両方の結果になることを確認します。これにより、条件分岐におけるすべての可能なパスがテストされ、コードの正確性が確認されます。

条件網羅(ブランチカバレッジ)

条件網羅は、ソフトウェア内の全ての条件式の組み合わせが少なくとも一度は実行されるように、テストケースを設計することを指します。この基準では、ソースコード内の各条件分岐の真偽が、テストでどの程度出現したかを評価します。これによって、プログラムのあらゆる条件式が適切に検証され、動作が正確であることを確認します。

複数条件網羅

最後に、複数条件網羅も重要な基準の一つです。この基準では、複数の条件式が組み合わさった状態でのテストケースを設計することが求められます。これにより、複雑な条件式や条件の組み合わせが適切に処理され、プログラムの動作が完全に理解されます。

基本的なホワイトボックステストの手法

ホワイトボックステストにはさまざまな手法がありますが、その中でも基本的な手法には、ベースラインテスト、制御フローテスト、およびデータフローテストがあります。

基本的なホワイトボックステストの手法

ベースライン テスト/折れ線グラフ

ホワイトボックステストにおけるベースラインテスト、または折れ線グラフ法は、Tom McCabeによって初めて導入されました。この手法は、プログラムの制御フローグラフに類似しており、アルゴリズムの記述やコンポーネントの関係を視覚的に示すのに役立ちます。

ベースラインテスト/折れ線グラフは、アルゴリズムの実装に関する情報を提供し、テストケースの設計者が手続きの複雑さを理解するのに役立ちます。この手法は、ノードとアークという2種類のコンポーネントで構成されています。

折れ線グラフには様々なタイプのボタンがあります。たとえば、制御フローグラフにはバイナリ決定ノードのみが含まれている場合、それをバイナリ制御フローグラフと呼びます。

ベースラインテスト/折れ線グラフは、プログラムの内部構造を理解し、テストケースの設計や分析を行う際に重要なツールとなります。これにより、開発者やテスターはプログラムの振る舞いを視覚化し、検証することができます。

制御フローテスト

制御フローテスト方法はソフトウェアユニットのすべての実行パスが適切に実行されることを確認するために使用されます。実行パスとは、特定のソフトウェアユニットのエントリポイントから終了ポイントまでの、実行されるコマンドの順序付きリストです。ソフトウェアコンポーネントごとに異なる実装パスがありますが、制御フローテストの目的は、テスト中のすべての実行パスを網羅し、適切に実行されることを確認することです。

例えば、以下のコードを考えてみましょう。

for (i=1; i<=1000; i++)

for (j=1; j<=1000; j++)

for (k=1; k<=1000; k++)

doSomethingWith(i,j,k);

このコードには1つの実行パスがありますが、非常に長い実行パスです。制御フローテスト方法を使用して、このコードのすべてのループが正しく動作し、期待どおりの結果が得られることを確認することが重要です。

データフローテスト

データフローテストはプログラムのデータの流れの整合性と正確性を評価する方法です。制御フローテストとは異なり、プログラムステートメントの実行順序に焦点を当てる制御フローテストとは異なり、データフローテストはデータがプログラムを通じてどのように移動するかを詳細に検討します。これは、データの操作、保存、取得に関連する潜在的な脆弱性、エラー、または異常を特定することを目的としています。

データフローテストはソフトウェアの内部構造とロジックを調査する白箱テストで重要な役割を果たします。データフローパスに深く入り込むことで、白箱テスターは他のテスト方法では明らかにならない隠れた欠陥、セキュリティの脆弱性、および論理エラーを発見することができます。

プロジェクトの要件に応じて、最適なテスト手法を選択することが重要です。LQAの経験豊富で専門知識に裏打ちされたテスターは、プロジェクトにおいて最適な戦略を策定し、ホワイトボックステストを効果的に実施できます。これまでに、教育、金融、建設、ヘルスケア、自動車などの業界におけるお客様にテストサービスを提供し、国際標準を満たす優れた成果を収めてきました。これにより、顧客満足度は94%に達し、高い信頼を得てきました。

包括的なホワイトボックステストサービスで費用対効果と品質向上を実現

ホワイトボックステストの基本的な手順

以下は、ホワイトボックステストを実施するための基本的な手順です。

テストを実施するための準備

ホワイトボックステストプロセスを開始する前に、ソフトウェアの要件、仕様、および設計を理解することが極めて重要です。テスターは、テスト対象のソフトウェアのソースコード、アーキテクチャ、および実装の詳細に精通する必要があります。さらに、テストが必要な機能、モジュール、またはコンポーネントを特定する必要があります。この理解は、テスターが効果的なテストケースを作成し、コードの包括的なカバレッジを確保するのに役立ちます。

また、テスト計画もホワイトボックステストにおける重要な段階です。テスターはテストの目的、範囲、アプローチ、および必要なリソースを明確にするテスト計画を策定します。この計画には、テストシナリオ、テストケース、およびテストデータの定義も含まれるべきです。徹底的な計画により、テスト活動がプロジェクトの目標と一致することが確実になります。

テストの作成と実行

準備段階が完了したら、テスターは特定された要件と仕様に基づいてテストケースを作成します。テストケースはソフトウェアの内部ロジックやコードパスの正確性や堅牢性を検証するために設計されます。テスターはステートメントカバレッジ、ブランチカバレッジ、パスカバレッジ、およびデータフローカバレッジなどの様々なホワイトボックステスト手法を活用して包括的なテストカバレッジを確保します

テストケースの作成手法の詳細については当社の「例を含む5つのテストケースの作成手法のガイド」の記事をご覧ください。

テストケースの作成中、テスターはソフトウェア内の異なるコードパス、条件、および決定ポイントに焦点を当てます。特定のコードセグメント、ループ、ブランチ、および例外処理メカニズムを実行するためのテストケースを設計します。テスト入力は、有効および無効なシナリオ、境界条件、およびエッジケースをカバーするように慎重に選択されます。

テストケースが作成されたら、テスターはそれらをテスト対象のソフトウェアに対して実行します。自動テストツールを使用してテストの実行プロセスを効率化することができます。テスト結果が記録され、テスト中に発生した任意の逸脱や失敗が記録されます。

テストレポートの作成

テスト実行段階が完了した後、テスターはテスト結果をまとめ、包括的なテストレポートを作成します。これらのレポートには、ソフトウェアの挙動、テスト中に発生した欠陥や問題、および達成された全体的なテストカバレッジが含まれます。

テストレポートには通常、実行されたテストケースの数、合格/不合格のステータス、コードカバレッジメトリクス、欠陥ログ、および改善のための推奨事項が含まれます。テスターはテスト結果を分析し、ソフトウェアに潜む問題や傾向を特定し、今後の改善の方向性を見出すことができます。

LQAは、ヘルスケア、自動車、教育などの業界に特化したカスタマイズされたテストサービスを提供しています。私たちの専門家は、これらの業界におけるシステムの内部構造に深く理解を持ち、その知識を活用してホワイトボックステストの手順を最適化し、効果的なテストケースを設計し、実行することができます。

また、LQAの強みは日本語と英語の相互スキルにあります。これらの言語を使いこなすことで、開発段階での円滑なコミュニケーションが実現されます。その結果、予期せぬトラブルにも迅速に対応でき、プロジェクトの被害やリスクを最小限に抑えることができます。

包括的なホワイトボックステストサービスで費用対効果と品質向上を実現

よくある質問

ホワイトボックステストとは?

ホワイトボックステストは、ソフトウェアの内部構造やコードの動作を詳細に検証するテスト手法です。開発者やテスターがソフトウェアのコードやアルゴリズムにアクセスし、その内部の仕組みを理解してテストケースを設計し、検証します。これにより、ソフトウェアの品質や信頼性を向上させることができます。

ホワイトボックステストにはどんな種類がありますか?

ホワイトボックステストには、制御フローテスト、データフローテストなどの主要な種類があります。

ホワイトボックステストのメリットは?

ホワイトボックステストは徹底性やシステムに関する深い理解、コードの最適化など、多くのメリットをもたらします。これらのメリットにより、ホワイトボックステストは隠れたバグを早期に検出し、製品の品質とパフォーマンスを向上させるための深い洞察を提供します。

結論

まとめると、ホワイトボックステストは、ソフトウェアシステムの内部構造やロジックを深く掘り下げることで、その完全性と信頼性を確保する上で重要な役割を果たします。このテスト手法は、その複雑さから課題も伴いますが、LQAのような経験豊富なテスト企業との提携により、これらの障壁を克服することができます。

LQAの専門知識とカスタマイズされたテストサービスを通じて、日本企業は徹底的なホワイトボックステストを実施し、潜在的な問題を特定し、全体的なソフトウェア品質を向上させることができます。ホワイトボックステストをLQAに任せることで、組織はソフトウェアの検証の複雑さを自信を持って乗り越え、顧客に優れた製品を提供すると同時に、他の主要な目標やビジネスに集中することができます。

データアノテーター

データアノテーター

 

人工知能は 今最も 急速に成長している 分野の一つで、私たちの日常生活にも 広く利用されています。携帯電話、自動車、金融 システム、都市インフラなど 様々なところで AIが 重要な役割を果たしています。

AIが 身近なものとなり、多くの人が AIについて 知っているように見えますが、AIを構築する作業の中で 最も 重要であるアノテーションについて 知っている人は ごくわずかです。

AIは データの学習から 構成されており、それはまるで ブロックを組み上げていくようなものと言っても 過言ではありません。機械学習 アルゴリズムは 何もないところからは 生まれません。彼らは ラベルが 付いたデータを取り込むことで、一定のパターンを認識できるようになります。つまり、学習が 必要なのです。

そのためAI 開発者は、機械学習 アルゴリズムを学習させるために、人の手によって ラベルが 付けられた、数千ものデータを用意することが 必要となります。

私は 今こそ、AI開発の裏に 隠れた秘密兵器である、データアノテーター の仕事 を紹介したいと思います。

 

AI 開発の秘密兵器

アノテーションとは

データアノテーター とは テキスト や 動画、画像など あらゆる形態のデータに ラベルを付ける作業のことです。

はじめは データに 構造や順序がないので、機械は データを判別できません。

写真に何が 写っているか、音の判別、異なる言語の文字に 人がラベルを付けないと、データは 単なるノイズになってしまいます。

しかし、データアノテーター 作業により ラベルを付けていけば、このノイズは 集中的な学習マニュアルになり、機械は 入力されたパターンを簡単に、明確に 判別できるようになります。

アノテーター達は 機械が 人間の世界を理解できるようにするために、ハードワークをこなしています。

 

アノテーションはどのように処理するのか

それでは、もし あなたが AIを搭載した 自動運転の車の開発に 取り組んでいて、写真の中の車を識別するアルゴリズムを持っているとします。

そのアルゴリズムの中では、「車」とは エンジン、4つの車輪、いくつかの 座席を備えたものと 定義づけられています。

簡単そうですね。

しかし、コンピュータは そもそもエンジン、車輪、座席とは 何なのかを判別できません。

ここで データアノテーター が 登場します。

 

データアノテーター

 

コンピュータが「車」を認識できるようにするために、写真の中に「車」が あるというラベル付けされている 何百万枚もの写真が 必要になります。

このような画像を認 識するための 教師データの学習を通じて、機械学習アルゴリズムをトレーニングしていきます。

ですから、基本的には アルゴリズムに対して、何が 車かを伝えることは ありません。その代わり、数百万のラベリングされた 写真のデータを与えることで、アルゴリズム 自身に パターンを認識させる手助けをします。

「データアノテーションは 非常に 労働集約的であり、収集されるデータの1時間ごとに 注釈を付けるのに 800時間近くかかります。」

はい。データアノテーター は 依然として 手作業を必要とする、アナログなプロセスです。Cognilytica’s data preparation & labelling 2019 reportによると、現在 AI開発のうち 80%は データの準備に費やされているようです。データの小さなエラーでさえ 大きな損害 をもたらすことが あります。この分野では、人間は 実際に機械に 足を踏み入れています。人間は 主観性の管理、意図の理解、曖昧さへの対処において 機械より 優れています。これらは 全て データアノテーションの重要な要素です。

そこに は何のタネも 仕掛けもありません。ただあるのは 人間による大変な労働です。

機械は、人間が アウトプットした分だけ 良いものになります。そして、次のデジタル 革命の立役者は、PCの前に座って データ注釈 を付けているアノテーターです。

彼らが いなければ、人工知能は 存在しません。

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

Youtube: Lotus QA チャネル

データアノテーション の手順?

 基本的なディープマシンラーニングの データアノテーション の手順は 次のとおりである。

 

1、データ収集

正しいな教師データを収集するには、まず課題の内容 とそのビジネス上の価値を理解する必要がある。 課題データアノテーションの分類については、名前から 類推して キーワードを作成し、インターネットからのデータ検索ツールを使用して、画像を検索することが できる。 または、写真、ソーシャルネットワークサイトの動画、Googleの衛星画像、公共のカメラ や車(Waymo、Tesla)から 無料で 収集されたデータ、または 第三者からデータを購入することも できる(データの正確性については自己責任)

収集されたデータのほとんどは、高さ、幅、比率が異なるデータであるため、データを収集した後、前処理を行う必要がある。したがって、ディープラーニングモデルに直接組み込むことはできません。 Open CV、Scikit-Imageなどの組み込みライブラリを使用して、イメージを前処理する。

 

2、データの注釈付け

 

データアノテーション

 

AI開発において、一2、データの注釈付け番時間 と 手間がかかるのが 教師データの収集。まずは 収集した生のデータに注釈をつける必要がある。

ここは機械がうまく機能するかどうか を左右するため、重要なステップである。データのラベル付けが 間違っていると、機械が誤って 学習して、対象を認識してしまうので、この学習データを 準備するのに 多くの時間と労力を費やしす。注釈付けをする上で、注意すべきポイントが 二つある。

・注釈付けのやり方

・誰がやるのか

 

2−1、注釈付けのやり方

要件を満たすデータセットを準備したら、次は どのような方法で アノテーションをするのか を決める必要がある。分類なのか、オブジェクト検出なのか、セグメンテーションなのか、…

データは 決まったやり方に応じて 処理されていく。例えば 分類の場合は、インターネットからデータを見つけてクロールするプロセスで 使用されるキーワードである。インスタンスセグメンテーションの場合、画像の各ピクセル の 注釈が 必要。

その後、ツールを使用して 画像注釈(画像のラベルとメタデータを設定)を実行する必要がある。 一般的なツールには Comma Coloring, Annotorious, LabelMe などが ある。これらのツールは、画像の各セグメントに ラベルを付けるためのGUIを サポートする。

 

2−2、誰がやるのか

二種類ある。

社内:データを自社で ラベル付けす

・長所:データの精度管理が容易、低コスト。

・短所:データの収集とラベル付けに 時間がかかる。

アウトソース:データの提供を専門とする企業に 依頼する。

・長所:データを すぐ集められる。

・短所:データの透明性、正確性がわからない。費用が かかる。

 

3、テストと評価のモデル

適切なディープラーニングモデル を選択 → トレーニングを実施 → テスト と 評価を実施

 

4、品質の基準を満たす

問題の要件を満たすまで、上記の手順を繰り返す。

 

データアノテーション

 

 

アノテーションサービスの詳細 については、こちらを参照してください。


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/

BlogLQA News

新型コロナウイルス 感染症へ、企業はどのような対応をしていくべきなのでしょうか。

WHO は1月30日に、各国の専門家 や 保健当局担当者による緊急委員会を開催し、新型コロナウイルス に関連した感染拡大について、「国際的に懸念される公衆衛生上 の 緊急事態(PHEIC: Public Health Emergency of International Concern)」に該当すると宣言した。

新型コロナウイルス 「SARS-CoV2」による 感染症「COVID-19」は、パンデミック(感染爆発、世界的流行)となり世界各地の医療は もとより 経済にも 深刻な影響を及ぼしている。

新型コロナウイルス感染症へ、企業はどのような対応をしていくべきなのでしょうか。以下の記事で調べてみましょう!

 

世界的な状況の更新31/3

新型コロナウイルス-世界

新型コロナウイルス-世界

出典:ウィキペディア

 

 

新型コロナウイルス-状況

新型コロナウイルス

出典: Johns Hopkins University

更新31/3

 

2020年4月1日の時点で、200以上の国と地域で859,000件を超えるCOVID-19の症例が報告されており、約42,000人 が死亡している。 178,000人以上が 回復した。

飛沫感染は、感染者の. 咳やくしゃみから放出された飛沫粒子が空気を介して短距離範囲(一般的には 90cm 以内)に拡散し、近くにいる者の口、鼻、目の粘膜に付着することによって起こる。

 

症状と予防

WHOによると、発症早期は発熱・鼻汁・咽頭痛・咳嗽といった非特異的な上気道炎の症状のため診断に難渋することがある。最も一般的な2つの症状は、発熱(88%)と乾咳(68%)である。

コロナウイルスの感染を防ぐための戦略には、咳やくしゃみをする際に押さえた手や腕は、その後直ちに洗うべきであるが、接触感染の原因にならないよう、手を洗う前に不必要に周囲に触れないよう注意する。手を洗う場所がない
ことに備えて、携行できる速乾性擦式消毒用アルコール製剤を用意しておくことが 推奨される。咳をしている人に マ スクの着用を積極的に促す。マスクを適切に着用することによって、飛沫の拡散を防ぐことができる。

Coronavirus-prevention

 

新型コロナウイルス による企業活動へ影響

新型コロナウイルス-影響

出典: statista

 

企業が直面しないといけないビジネスへの影響には 次のものがあります。

  • 新型コロナウイルスの世界的流行に起因する労働力および部品の不足に直面しており、一部生産を停止する。 生産状況やジャストインタイムのサプライチェーンを混乱させてる。自動車、消費財、製薬などその他の業界にわたって 販売警告を発し、販売中止となった。
  • 原材料消費の減少に伴い商品価格が 下落しており、生産者は 減産を検討している。
  • モビリティと業務の混乱で中国国内の消費量が 大きく減少したため、航空、留学、インフラ、観光、エンターテイメント、ホスピタリティ、エレクトロニクス、消費財、高級品など、複数の部門で 多国籍企業が苦境に立たされている。

Coronavirus-impact

出典: TrendForce

 

企業はどのような対応をしていくべきなのでしょうか。

1. 感染防止対策を優先する

・内部事項に従い、マスクを使う。ワイヤー型のマスクで鼻と頬の隙間をなくし、 顔とマスクの間に隙間があるとウイルスを遮断できず、病原菌が侵入してしまいう。普段は1.2メートルの距離を保ちながら、状況に応じて使い分けていくとよいでしょう、…
・スタッフ全員がマスクを着用する必要がある。
・マスク、手洗い、手ぬぐいなどの衛生設備を配布
・オンライン会議を適用。
・スタッフに集会に出席しないように勧める。

 

Coronavirus-LQA

 

2. 従業員が会社で病気になったときにタイムリーな解決策がある

感染拡大を防ぐために、発熱、痛み、鼻汁、咳などの症状が見られる人は 自宅で医師による健康診断を行わなければならない。

会社で病気の従業員が いる場合、ビジネス代表者は タイムリーな解決策のアドバイスの為に ホットラインか政府機関に報告する必要がある。

 

3. 重要な仕事を維持する

事業活動に重要な仕事を維持するために、企業は 以下のように遵守する必要がある。

・交換容量を確保し、移転する事を検討する
・柔軟な作業場所を確保し、従業員が自宅で作業できるようにする。
・生産の維持と事業活動に関する情報を関係者に発表する。

信頼できるプロセスを持つパートナーを選択。

 

4. 組織能力と執行能力の転換

企業は、オペレーティングシステム と ビジネスモデルを確認、再分析し、技術を大幅に 改善して組織に適用する必要がある。さらに、生産と事業活動の運用に 焦点を当てて、雇用される人員の数、納期、およびビジネスのパフォーマンスへの依存を最小限に抑える。

 

現在、多くのアウトソーシング企業が、いつでも どこでも ビジネスを運営し、品質保証、データの準備、システムのトレーニングデータなど、企業の運用管理を支援している。これらの中で、LQAは 多くの大手パートナーから 選ばれている信頼できる企業の1つである。 LQAのサービスの詳細 については、こちらを参照してください。

 


Lotus Quality Assurance (LQA)

電話番号: (+84) 24-6660-7474
メール: [email protected]
ウェブサイト: https://www.lotus-qa.com/