LTP第一章LTP介绍及内部机制

LTP第⼀章LTP介绍及内部机制
LTP系列链接:
⽂章⽬录
1.1 LTP介绍
LTP(Linux Test Project),是基于 GPL 协议的开源社区合作项⽬。2000 年由 SGI 发起,IBM、OSDL 和 Bull 等公司共同参与,2001年后由 SUSE、富⼠通、Red Hat、Oracle 共同开发和维护。
通过功能测试、压⼒测试和回归测试来验证 Linux 系统的可靠性、稳定性和健壮性。整个项⽬约4000个测试⽤例,绝⼤部分⽤例采⽤ C 或 Shell。
LTP 不仅测试内核,还测试整体系统环境,对功能执⾏失败时的返回和处理也进⾏测试。
1.1.1 功能测试
主要对 man pages 中1、8命令和2系统调⽤所描述的功能进⾏验证。
1.1.2 回归测试
修改了旧代码后,重新进⾏测试已确认修改没有引⼊新的错误或导致其他代码产⽣错误。
1.1.3 压⼒测试
测试系统功能特性再⼤负荷压⼒下的稳定性和可靠性。
英国的资产阶级革命
1.2 LTP 环境部署
1.2.1 下载 LTP新乡红旗医院
董家渡天主堂
1.2.2 部署 LTP
⾸先执⾏下⾯命令安装相关软件包(已安装可跳过):
#CentOS
sudo yum install autoconf  automake  autotools-dev m4
#Ubuntu
sudo apt-get install autoconf  automake  autotools-dev m4
在上节中我将 ltp 项⽬下载到了 wxs ⽤户的家⽬录(/home/wxs)下,如图所⽰:
[wxs@bogon ~]$ cd ltp/
[wxs@bogon ltp]$ ls
aclocal.m4      configure.ac  INSTALL          pan                  testcases
autom4te.cache  confLkNw6U    install-sh        README.kernel_config  testscripts
confc20wzw      COPYING      lib              README.md            TODO
config.guess    doc          ltpmenu          runltp                tools
config.log      execltp      m4                runltplite.sh        utils
config.status  execltp.in    Makefile          runtest              ver_linux
config.sub      IDcheck.sh    lease  scenario_groups      Version
configure      include      missing          scripts              VERSION
进⼊ltp⽬录:cd ltp
⽣成⾃动⼯具:make autotools
系统环境配置:./configure
编译:make -j$(getconf_NPROCESSORS_ONLN)
安装:sudo make install
依次执⾏以上命令后,LTP 已经被正确安装到你的 Linux 系统中,默认安装位于 /opt/ltp/。
[wxs@bogon ltp]$ cd /opt/ltp/
[wxs@bogon ltp]$ ls
bin        runltp        runtest          share      testscripts  Version
IDcheck.sh  runltplite.sh  scenario_groups  testcases  ver_linux
需要注意的是,我们通过 git clone 命令下载的位于home⽬录下的ltp⽂件夹为 ltp源码⽂件夹,我将在
后⽂简称为 源码包。通过执⾏⼀系列命令安装到 /opt ⽬录下的 ltp ⽂件夹为ltp安装⽂件夹,我将在后⽂简称为**安装包**。
1.3 ⽬录结构
1.3.1 源码包
LTP 源码包⽬录结构描述如下:
名称说明
INSTALL LTP安装配置指导⽂档
README LTP介绍
CREDITS记录对LTP有很⼤贡献的⼈
COPYING GNU公开许可证
ChangeLog描述版本变化
ltpmenu规划执⾏LTP的图形化界⾯接⼝
Makefile LTP顶层⽬录的Makefile,负责编译安装pan、testcases和tools
顺序运⾏全部测试⽤例并且报告结果脚本
doc/*⼯程⽂档包含⼯具和库函数使⽤⼿册,描述各种测试
include/*通⽤的头⽂件⽬录
lib/*通⽤的函数⽬录
testcases/*包含在LTP下运⾏和bin⽬录下的所有测试⽤例和链接
testscripts/*存放分组的测试脚本
runtest/*为⾃动化测试提供命令列表
pan/*测试的驱动装置,具备随机和并⾏测试的能⼒
名称说明
scratch/*存放零碎测试
tools/*存放⾃动化测试脚本和辅助⼯具
LTP 测试套件包含以下内容:
[wxs@bogon ~]$ cd ltp/testcases/
[wxs@bogon testcases]$ ls
commands  demoA  kernel  Makefile  network              realtime
cve      kdump  lib    misc      open_posix_testsuite
⽬录结构描述如下:
名称说明
commands常⽤命令测试
kernel内核模块及其相关模块
kdump内核现崩溃转储测试
network⽹络测试
realtime系统实时性测试
open_posix_testsuite posix标准测试
misc崩溃、核⼼转出、浮点运算等测试
1.3.2 安装包
LTP安装包⽬录结构描述如下:
名称说明
bin存放LTP测试的⼀些辅助脚本
阿拓莫兰
results测试结果默认存储⽬录
testcases测试项集
output测试⽇志默认存储⽬录
share脚本使⽤说明⽬录
runtest测试驱动(⽤于链接testscripts内的测试脚本和testcases测试项⽬)
lib通⽤的库函数⽬录
1.4 测试框架
1.4.1 整体测试流程
ltp 安装包根⽬录下的runltp脚本是 LTP ⾃动测试系统的⼊⼝,其提供了⼀系列参数选项,允许⽤户设定测试环境制定测试集、控制测试结果输出⽅式和路径等,运⾏ runltp 会⽣成指定的测试列表并调⽤测试驱动PAN来开始测试,待执⾏完毕后根据 PAN 返回的结果来⽣成报告。
PAN 是 LTP 的⼀组测试驱动程序,负责实际测试的执⾏,根据 runltp 传递的参数和测试列表来依次执⾏测试,输出执⾏过程中的详细信息,对每个测试⽤例的执⾏结果进⾏统计,并将整体测试结果返回给 runltp。
董酒1.4.2 测试⽤例执⾏流程
七星之旅测试结果的输出类型如下:
Type Description
BROK程序执⾏中途发⽣错误⽽使测试遭到破坏
CONF测试环境不满⾜⽽跳过执⾏
WARN测试中途发⽣异常
INFO输出通⽤测试信息
PASS测试成功
FAIL测试失败
1.4.3 测试库
LTP ⽬前测试库存在新旧测试库交替的情况,本⽂均采⽤新测试库的框架,具体的更新说明可以参考更新⽂档 。
Old Library New Library
测试⽤例在执⾏时调⽤测试库的API在测试库维护的⼦进程中回调测试⽤例setup()中逐⼀调⽤API完成测试准备setup()中测试属性以结构体变量定义main()定义在每个测试⽤例当中main()定义在测试库中
cleanup()中不能调⽤SAFE函数cleanup()中允许调⽤SAFE函数
这⾥以 umount02 为例,⽐较新旧框架的区别:
旧框架代码:
//Example using the old LTP library
//lwn/Articles/708250/
#include<errno.h>
#include<sys/mount.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/fcntl.h>
#include<pwd.h>
#include"test.h"
#include"safe_macros.h"
static void setup(void);
static void cleanup(void);
char*TCID ="umount02";
#define DIR_MODE        S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH
#define FILE_MODE        S_IRWXU | S_IRWXG | S_IRWXO
#define MNTPOINT        "mntpoint"
static char long_path[PATH_MAX +2];
static int mount_flag;
static int fd;
static const char*device;
static struct test_case_t {
char*err_desc;
char*mntpoint;
int exp_errno;
char*exp_retval;
} testcases[]={
{"Already mounted/busy", MNTPOINT, EBUSY,"EBUSY"},
{"Invalid address space",NULL, EFAULT,"EFAULT"},
{"Directory not found","nonexistent", ENOENT,"ENOENT"},
{"Invalid  device","./", EINVAL,"EINVAL"},
{"Pathname too long", long_path, ENAMETOOLONG,"ENAMETOOLONG"}
};
int TST_TOTAL =ARRAY_SIZE(testcases);
int main(int ac,char**av)
{
int lc, i;
tst_parse_opts(ac, av,NULL,NULL);
setup();
for(lc =0;TEST_LOOPING(lc); lc++){

本文发布于:2024-09-22 01:48:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/231434.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   系统   结果   安装   脚本
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议