OpenSSLテストスイートでさまざまなテストのコードカバレッジを測定したいと思います。
以下の方法を使用して、テストの全適用範囲を首尾よく測定した。
$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make tests
... then run gcov to create the .gcov files
(その後、OpenSSLサブフォルダのCファイルからgcovを実行できます)
これはコマンドの結果ですmake tests
。
https://github.com/istvanbohm/OpenSSLUnitTests/blob/master/TestResult
ただし、特定のテストを1つだけ実行することはできません(誰も機能しません)。
$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make TESTS="bntest" test
最後のコマンドで次の結果が得られました。
blackcat@ubuntu:~/my_project/projects/openssl-1.0.0$ make TESTS="bntest" test
testing...
make[1]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0/test'
make[2]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0'
making all in apps...
make[3]: Entering directory `/home/blackcat/my_project/projects/openssl-1.0.0/apps'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0/apps'
make[2]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0'
make[1]: Leaving directory `/home/blackcat/my_project/projects/openssl-1.0.0/test'
OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
OpenSSL 1.0.0 29 Mar 2010
built on: Wed Jul 29 12:40:53 CEST 2015
platform: linux-x86_64
options: bn(64,64) rc4(1x,char) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -fprofile-arcs -ftest-coverage -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
OPENSSLDIR: "/usr/local/ssl"
blackcat@ubuntu:~/my_project/projects/openssl-1.0.0$
他のテストも試しましたが、結果は同じでした。なぜ?
テストをforループに入れて別のテストで呼び出し続けたいので、これを実行したいと思います(この部分は準備ができています)。
ベストアンサー1
/test/Makefile ファイルを誤解しました。最初にリストがありますが、必要なパラメーター名ではありません。
BNTEST= bntest
ECTEST= ectest
ECDSATEST= ecdsatest
ECDHTEST= ecdhtest
EXPTEST= exptest
IDEATEST= ideatest
SHA1TEST= sha1test
SHA256TEST= sha256t
SHA512TEST= sha512t
MDC2TEST= mdc2test
RMDTEST= rmdtest
MD2TEST= md2test
MD4TEST= md4test
MD5TEST= md5test
HMACTEST= hmactest
WPTEST= wp_test
RC2TEST= rc2test
RC4TEST= rc4test
RC5TEST= rc5test
BFTEST= bftest
CASTTEST= casttest
DESTEST= destest
GOST2814789TEST=gost2814789test
RANDTEST= randtest
DHTEST= dhtest
DSATEST= dsatest
SSLTEST= ssltest
RSATEST= rsa_test
ENGINETEST= enginetest
EVPTEST= evp_test
EVPEXTRATEST=evp_extra_test
P5_CRPT2_TEST= p5_crpt2_test
IGETEST= igetest
JPAKETEST= jpaketest
SECMEMTEST= secmemtest
SRPTEST= srptest
V3NAMETEST= v3nametest
HEARTBEATTEST= heartbeat_test
CONSTTIMETEST= constant_time_test
VERIFYEXTRATEST= verify_extra_test
CLIENTHELLOTEST= clienthellotest
ファイルをもう少し詳しく確認してみてください。特にalltestsタグ。
alltests: \
test_des test_idea test_sha test_md4 test_md5 test_hmac \
test_md2 test_mdc2 test_wp \
test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
test_rand test_bn test_ec test_ecdsa test_ecdh \
test_enc test_x509 test_rsa test_crl test_sid \
test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
test_ss test_ca test_engine test_evp test_ssl test_tsa test_ige \
test_jpake test_cms
ここでテスト名を見つけることができます。したがって、正しい使用法は次のとおりです。
$ make clean
$ export CC="gcc -fprofile-arcs -ftest-coverage"; ./config enable-unit-test
$ make
$ make TESTS="test_cms" test