LTP(Linux Test Project),是基于GPL协议的开源社区合作项目。2000年由SGI发起,IBM、OSDL和Bull等公司共同参与,2001年后由SUSE、富士通、Red Hat、Oracle共同开发和维护。
通过功能测试、压力测试和回归测试来验证Linux系统的可靠性、稳定性和健壮性。整个项目约4000个测试用例,绝大部分用例采用C或Shell。
此次学习主要参考两份材料,一是github上项目里的文档资料Github - Linux Test Project,二是很详细相当具有指导价值的博客LTP 第一章 LTP介绍及内部机制。目前我还在博客第一章的部分。
这两天我把第一章的内容照着做了一遍。发现和作者的情况还是有些不一样,特此记录。我使用的Linux系统版本是Ubuntu16.04.5,LTP版本为20180515。
关于安装
方法一:根据github上的README照做。其中,git, autoconf, automake, m4必须先安装好。(ubuntu小白提示:在终端直接输入git/autoconf/……,终端会提示正确的命令格式,即sudo apt get install git,即可)
方法二:根据上午分享的博客照做。
关于博客中的问题
博客中编写了两个用例,我照做时两个用例均有问题,不知是不是和作者使用的版本不一致导致的。好在自己解决了,具体如下。
sqrt函数
该部分代码修改两个部分:(1)将TEST_RETURN 改为 TST_RET。查看了tst_test.h文件后发现,其中定义的变量名为TST_RET,故此修改。(2)tst_test结构体中,去掉.tid一行。修改后如下:
#include <errno.h>
#include <string.h>
#include <sys/mount.h>
#include "tst_test.h"
static struct tcase {
const int input;
const int output;
} tcases[] = {
{-1,1},
{9,3}
};
static void testSqrt(unsigned int n){
struct tcase *tc = &tcases[n];
TEST(sqrt(tc->input));
if (TST_RET != tc->output) {
tst_res(TFAIL, "sqrt() failed");
return;
}
tst_res(TPASS, "sqrt() succeeds");
}
static struct tst_test test = {
.tcnt = ARRAY_SIZE(tcases),
.test = testSqrt,
};
echo命令
该部分代码本身没有问题,但是echo_test "hello\tworld"
这一行中的转义字符会有影响。
去掉转义字符后,运行结果才正确。加上转义字符后,运行结果是fail。
这大概与shell语法有关,我暂时还不知道怎么解决,先留着这个问题吧。