LTP-linut test project 。ltp套件是由Linux Test Project所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。
使用 LTP 测试套件对 Linux 操作系统进行超长时间的测试,重点在于 Linux 用户环境相关的工作负荷。而并不是致力于证明缺陷。
如需安装最新版本或重新编译,参考Quick Start部分内容。
Quick Start
下载ltp包
版本页面: https://github.com/linux-test-project/ltp/releases
wget https: //github.com/linux-test-project/ltp/releases/download/20180515/ltp-full-20180515.tar.bz2 tar -xjvf ltp-full- 20180515 .tar.bz2 |
安装依赖包
CentOS 7.4
# 编译ltp用 yum install make bison flex byacc autoconf automake m4 # 分析性能数据用 yum install deltarpm sysstat |
Ubuntu (Kylin)
安装ltp的测试用例
cd ltp/ # 或者解压出来的带版本号的ltp目录 ./configure make all make install /opt/ltp/runltplite.sh # 安装后的ltp在/opt目录下,可以快速执行一次脚本,验证安装 |
ltp结构
ltp文件夹结构(只显示一层)
[root @host2 ltp]# pwd /opt/ltp [root @host2 ltp]# tree -L 1 . ├── bin ├── IDcheck.sh # 检查系统是否缺少执行LTP测试套件所需的用户和用户组,如果缺少则为LTP测试套件创建所需的用户和用户组。 ├── runltp ├── runltplite.sh # 这个脚本用来测试LTP安装,也可用来对测试套件的子项目进行测试。 ├── runtest # 该目录中的每个文件都是要执行的测试用例的命令集合,每个文件针对测试的不同方面。 ├── scenario_groups ├── share # 脚本使用说明目录 ├── testcases # 该目录存储了所有LTP测试套件中所使用的测试用例的源码。 ├── testscripts # 该目录中存储的是可执行的测试脚本,不同方面的测试脚本的集合。 ├── ver_linux # 这个脚本是获取硬件、软件、环境信息。 └── Version |
[root @host2 ltp-full- 20180515 ]# pwd /home/wenjie/ltp/ltp-full- 20180515 [root @host2 ltp-full- 20180515 ]# tree -L 1 -d . ├── doc # 该目录是说明文件和帮助文档的所在地,这个目录中对LTP的内容和每个工具都有详细的说明。 ├── include # LTP测试套件的头文件目录,定义了LTP自身的数据结构和函数结构。 ├── lib # LTP测试套件运行时自身需要的库文件,定义了LTP自身的各种函数。 ├── m4 ├── pan # 该目录存储的是LTP测试套件的测试驱动程序pan。 ├── runtest ├── scenario_groups ├── scripts ├── testcases # 该目录存储了所有LTP测试套件中所使用的测试用例的源码。 ├── testscripts # 该目录中存储的是可执行的测试脚本,不同方面的测试脚本的集合。 ├── tools └── utils |
测试命令
初始测试
初始测试直接使用 /opt/ltp/runltp 脚本。默认地,这个脚本执行: 文件系统压力测试、硬盘 I/O 测试、内存管理压力测试、IPC 压力测试、SCHED测试、命令功能的验证测试、系统调用功能的验证测试。
如果不指定参数, 那么将执行全量用例,所有执行过程打印到screen,不保存log和results。建议起码加上 -p, -l 参数保存可读的测试结果。
/opt/ltp/runltp -p -l result.yyyymmdd.log -f my_command_file /opt/ltp/runltp -p -l /tmp/resultlog. 20111207 -d /tmp -o /tmp/ltpscreen. 20111207 -t 24h |
参数解释,详见 http://ltp.sourceforge.net/documentation/how-to/ltp.php#_3.4
my_command_file 应放置在 /opt/ltp/runtest 下,包含内容格式如下,
#Tag Test case #--------------------------------------- mtest01 mtest01 -p 10 mmstress mmstress -x 100 fork01 fork01 chdir01 symlink01 -T chdir01 #---------------------------------------- |
命令执行之后,如果没有指定log文件的绝对路径,log将保存在/opt/ltp/results 目录下。输出结果内容如下,
Test Start Time: Mon Aug 20 11 : 41 : 40 2018 ----------------------------------------- Testcase Result Exit Value -------- ------ ---------- mtest01 FAIL 1 mmstress PASS 0 fork01 PASS 0 chdir01 PASS 0 ----------------------------------------------- Total Tests: 4 Total Skipped Tests: 0 Total Failures: 1 Kernel Version: 3.10 . 0 - 693 .el7. 1 .x86_64 Machine Architecture: x86_64 Hostname: host1 |
压力测试
执行testscripts中ltpstress.sh脚本做压力测试。该脚本并行地运行相似的测试用例,串行地运行不同的测试用例。默认地,这个脚本执行:NFS 压力测试、内存管理压力测试、文件系统压力测试、数学 (浮点) 测试、多线程压力测试、硬盘 I/O 测试、IPC (pipeio, semaphore) 测试、系统调用功能的验证测试、网络压力测试。
cd /opt/ltp/testscripts sudo ./ltpstress.sh -m 35 -S -t 1 # 如果直接执行源码包里的测试脚本,需要在运行前执行 PATH=$PATH:$PWD:<LTP_ROOT>/lib/ ,将<LTP_ROOT>/lib和 <LTP_ROOT>/testscripts加到PATH中 sudo ./ltpstress.sh -d /tmp/sardata -l /tmp/ltpstress.log -I /tmp/iofile -i 5 -m 128 -t 24 -S sudo ./ltpstress.sh -p -S -t 1 -b /dev/sdd -B xfs -m 128 |
-l:记录测试结果到/tmp/ltpstress.log (小写L)
-I:记录"iostat"结果到iofile,默认是/tmp/ltpstress.iostat (大写i)
-i:指定sar或top快照时间间隔,默认为10秒
-m: 指定最小的内存使用,默认为: RAM + 1/2 swap
-n:不对网络进行压力测试
-S :用sar捕捉数据
-T:利用LTP修改过的top工具捕捉数据
-t: 指定测试时间 # ltpstress.sh 脚本的-t参数,只支持传入整数的“小时”。
-b:部分测试需要一块没有mount的磁盘,如果不指定,脚本会创建一个loop device用来测试
-B:说明-b指定的磁盘的文件系统
注意:如果不指定-m,那么压力将会比较大,有可能资源消耗爆仓。务必带上 -m 参数。
压测脚本相关的文件结构对应关系:
- testscripts 中 ltpstress.sh
- runtest 目录下的stress.part1,stress.part2,stress.part3 (测试集合配置文件)
- pan后台运行
- 最终运行Testcase中的各个测试案例
可以通过修改runtest下的stress.part<n> 文件来调整测试用例结合。
测试数据分析
默认情况下,测试结果放在/tmp
ltpstress.log:记录相关日志信息,主要是测试是否通过(pass or fail)
ltpstress.data:sar工具记录的日子文件,包括cpu,memory,i/o等
ltpstress.<xxx>.output1:对应stress.part1,测试命令的一些输出信息
ltpstress.<xxx>.output2:对应stress.part2
ltpstress.<xxx>.output3:对应stress.part3
ltpstress.sh 支持 -S 调用sar命令去记录服务器性能数据。如不指定-S,将使用ltp定制过的top命令记录性能数据。
sar -u -f ltpstress.data # cpu 平均使用率 sar -r -f ltpstress.data # memory 平均使用率 sar -b -f ltpstress.data # IO 传输率 sar -d -f ltpstress.data # 每块磁盘的活动信息 |
提取错误的用例,然后再分析每一个错误用例的原因。
grep FAIL ltpstress.xxx.output* | sort | uniq >failcase.txt |
相关测试集合
在下载的ltp包中,testcases/kernal/io/下面,有单独的disktest目录。内含disktest脚本,可以执行。文档见附件。disktest_manual.html
参考文档:
http://ltp.sourceforge.net/documentation/how-to/ltp.php#_1
http://blog.51cto.com/tech110/737865
https://github.com/linux-test-project/ltp