LTP教程 第二章 开发Shell测试集
来源:互联网 发布:apache bin httpd.exe 编辑:程序博客网 时间:2024/05/21 00:45
LTP系列链接:
本文同步发布于我的个人网站:LTP教程
第一章 LTP介绍及内部机制
第二章 开发Shell测试集
第三章 开发系统调用测试集
第四章 开发_exit()测试集
第五章 开发IO操作测试集
第六章 开发IO阻塞测试集
2 开发Shell测试集
2.1 准备环境
2.1.1 清理环境
在第一章中我们使用了git clone
将项目克隆到了本地,并且编写了一个简单的c测试和Shell测试。
在本章开始之前,我们要保证源码包
项目的干净,即恢复到最开始克隆时的状态,具体步骤参考相关Git教程。
Tip:如果你觉的恢复干净对你有困难的话,最简单粗暴的方法就是删掉重新克隆了…
注:清除前一定要注意数据备份,清除后第一章做的修改就不复存在了..
恢复后,项目状态如下:
[wxs@bogon ltp]$ git status# 位于分支 master无文件要提交,干净的工作区
更新项目到最新状态:
[wxs@bogon ltp]$ git pullAlready up-to-date.
2.1.2 创建自定义分支
为了不对原项目产生影响,我们使用自定义的分支,并且本章的操作均在此分支中进行。
创建自定义分支mybranch
,并切换到mybranch
分支:
[wxs@bogon ltp]$ git checkout -b mybranch切换到一个新分支 'mybranch'[wxs@bogon ltp]$ git branch master* mybranch
2.2 编写测试集
注:下面的所有文件的头部说明中的Author信息
为我git的user.name
和user.email
,别忘记了修改哦…
2.2.1 测试echo命令
在第一章,我们已经简单测试了echo的功能,但在这一节我们想做的更多…
在本小节中,我们将测试echo命令的空参数
、-e参数
、--help参数
和--version参数
。
首先我们在源码包中创建echo
文件夹,并进入该文件夹:
[wxs@bogon ltp]$ cd ~/ltp/testcases/commands/[wxs@bogon commands]$ mkdir echo[wxs@bogon commands]$ cd echo
编写Shell文件echo_tests.sh
:
#!/bin/sh## Author : jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See# the GNU General Public License for more details.## Test echo command with some basic options.#TST_CNT=4TST_TESTFUNC=do_testTST_NEEDS_TMPDIR=1TST_NEEDS_CMDS="echo". tst_test.shecho_test(){ local echo_opt=$1 local echo_content=$2 local echo_cmd="echo $echo_opt $echo_content" $echo_cmd > temp 2>&1 if [ $? -ne 0 ]; then grep -q -E "unknown option|invalid option" temp if [ $? -eq 0 ]; then tst_res TCONF "$echo_cmd not supported." else tst_res TFAIL "$echo_cmd failed." fi return fi line=`wc -l temp | awk '{print $1}'` if [ -z $echo_opt ];then if [ $line -ne 1 ];then tst_res TFAIL "$echo_cmd failed." return fi else if [ $echo_opt = "-e" ];then if [ $line -ne 2 ];then tst_res TFAIL "$echo_cmd failed." return fi fi fi tst_res TPASS "echo passed with $echo_opt option."}do_test(){ case $1 in 1) echo_test "" "helloo\nworld";; 2) echo_test "-e" "helloo\nworld";; 3) echo_test "--help";; 4) echo_test "--version";; esac}tst_run
为echo.sh添加可执行权限,并将其拷贝到安装包
的testcases/bin/
目录下:
[wxs@bogon echo]$ sudo chmod +x echo_tests.sh[wxs@bogon echo]$sudo cp echo_tests.sh /opt/ltp/testcases/bin/
编写MakeFile文件Makefile
:
## Author: jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.#top_srcdir ?= ../../..include $(top_srcdir)/include/mk/env_pre.mkINSTALL_TARGETS :=echo_tests.shMAKE_TARGETS :=include $(top_srcdir)/include/mk/generic_leaf_target.mk
此时echo文件夹下状态如下:
[wxs@bogon echo]$ pwd/home/wxs/ltp/testcases/commands/echo[wxs@bogon echo]$ lsecho_tests.sh Makefile
编写测试集echo
,进入安装包
的runtest
目录下,编写测试集echo
:
[wxs@bogon echo]$ cd /opt/ltp/runtest/[wxs@bogon runtest]$ vim echo
echo:
echo echo_tests.sh
进入安装包
根目录下,并执行测试:
[wxs@bogon runtest]$ cd /opt/ltp/[wxs@bogon ltp]$ sudo ./runltp -f echo
测试结果如下:
···<<<test_start>>>tag=echo stime=1506687366cmdline="echo_tests.sh"contacts=""analysis=exit<<<test_output>>>incrementing stop 1 TPASS: echo passed with option. 2 TPASS: echo passed with -e option. 3 TPASS: echo passed with --help option. 4 TPASS: echo passed with --version option.Summary:passed 4failed 0skipped 0warnings 0<<<execution_status>>>initiation_status="ok"duration=1 termination_type=exited termination_id=0 corefile=nocutime=2 cstime=8<<<test_end>>>···
在该test体中,四个测试全部通过,验证了这些参数的正确性。
2.2.2 测试rm命令
趁热打铁,我们来编写测试rm命令,我们将测试rm命令的空参数
、-r参数
、--help参数
和--version
参数。
进入源码包的testcases/commands
文件夹,创建rm文件夹:
[wxs@bogon ltp]$ cd ~/ltp/testcases/commands/[wxs@bogon commands]$ mkdir rm[wxs@bogon commands]$ cd rm
编写Shell文件rm_tests.sh
:
#!/bin/sh## Author : jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See# the GNU General Public License for more details.## Test rm command with some basic options.TST_CNT=4TST_SETUP=setupTST_TESTFUNC=do_testTST_NEEDS_TMPDIR=1TST_NEEDS_CMDS="rm". tst_test.shsetup(){ ROD touch "demoFile" ROD mkdir "demoDir"}rm_test(){ local rm_opt=$1 local rm_file=$2 local rm_cmd="rm $rm_opt $rm_file" eval $rm_cmd > temp 2>&1 if [ $? -ne 0 ]; then grep -q -E "unknown option|invalid option" temp if [ $? -eq 0 ]; then tst_res TCONF "$rm_cmd not supported." else tst_res TFAIL "$rm_cmd failed." fi return fi if [ -z $rm_opt ];then if [ -f $rm_file ];then tst_res TFAIL "$rm_cmd failed." return fi else if [ $rm_opt = "-r" ];then if [ -d $rm_file ];then tst_res TFAIL "$rm_cmd failed." return fi fi fi tst_res TPASS "rm passed with $rm_opt option."}do_test(){ case $1 in 1) rm_test "" "demoFile";; 2) rm_test "-r" "demoDir";; 3) rm_test "--help";; 4) rm_test "--version";; esac}tst_run
为rm_tests.sh添加可执行权限,并将其拷贝到安装包
的testcases/bin/
目录下:
[wxs@bogon rm]$ sudo chmod +x rm_tests.sh[wxs@bogon rm]$sudo cp rm_tests.sh /opt/ltp/testcases/bin/
编写Makefile文件Makefile
:
## Author : jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.#top_srcdir ?= ../../..include $(top_srcdir)/include/mk/env_pre.mkINSTALL_TARGETS :=rm_tests.shMAKE_TARGETS :=include $(top_srcdir)/include/mk/generic_leaf_target.mk
编写相应的测试集rm
:
[wxs@bogon rm]$ cd /opt/ltp/runtest/[wxs@bogon runtest]$ vim rm
rm:
rm rm_tests.sh
进入安装包,测试测试集:
[wxs@bogon runtest]$ cd /opt/ltp[wxs@bogon ltp]$ sudo ./runltp -f rm
测试结果如下:
···<<<test_start>>>tag=rm stime=1506690175cmdline="rm_tests.sh"contacts=""analysis=exit<<<test_output>>>incrementing stop 1 TPASS: rm passed with option. 2 TPASS: rm passed with -r option. 3 TPASS: rm passed with --help option. 4 TPASS: rm passed with --version option.Summary:passed 4failed 0skipped 0warnings 0<<<execution_status>>>initiation_status="ok"duration=0 termination_type=exited termination_id=0 corefile=nocutime=3 cstime=6<<<test_end>>>···
在该test体中,四个测试全部通过,验证了这些参数的正确性。
2.2.3 测试unlink命令
同样的方法,我们测试unlink命令,我们测试unlink
命令的无参数
、--help参数
和--version参数
。
进入源码包的testcases/commands
文件夹,创建unlink文件夹并进入:
[wxs@bogon ltp]$ cd ~/ltp/testcases/commands/[wxs@bogon commands]$ mkdir unlink[wxs@bogon commands]$ cd unlink
编写Shell文件unlink_tests.sh
:
#!/bin/sh## Author : jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See# the GNU General Public License for more details.## Test unlink command with some basic options.#TST_CNT=3TST_SETUP=setupTST_TESTFUNC=do_testTST_NEEDS_TMPDIR=1. tst_test.shsetup(){ ROD touch "demo"}unlink_test(){ local unlink_opt=$1 local unlink_file=$2 unlink_cmd="unlink $unlink_opt $unlink_file" if [ -z $unlink_file ];then eval "$unlink_cmd" > temp 2>&1 if [ $? -ne 0 ];then grep -q -E "unknown option|invalid option" temp if [ $? -eq 0 ];then tst_res TCONF "$unlink_cmd not supposted." else tst_res TFAIL "$unlink_cmd option failed." fi return fi else `unlink $unlink_file` if [ -f $unlink_file ];then tst_res TFAIL "$unlink_cmd failed." return fi fi tst_res TPASS "unlink passed with $unlink_opt option."}do_test(){ case $1 in 1) unlink_test "" "demo" ;; 2) unlink_test --help ;; 3) unlink_test --version ;; esac}tst_run
为unlink_tests.sh添加可执行权限,并将其拷贝到安装包
的testcases/bin/
目录下:
[wxs@bogon unlink]$ sudo chmod +x unlink_tests.sh[wxs@bogon unlink]$ sudo cp unlink_tests.sh /opt/ltp/testcases/bin/
编写Makefile文件Makefile
:
## Author : jitwxs <jitwxs@foxmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.#top_srcdir ?= ../../..include $(top_srcdir)/include/mk/env_pre.mkINSTALL_TARGETS :=unlink_tests.shMAKE_TARGETS :=include $(top_srcdir)/include/mk/generic_leaf_target.mk
进入安装包的runtest文件夹,编写测试集unlink
:
[wxs@bogon unlink]$ cd /opt/ltp/runtest/[wxs@bogon runtest]$ sudo vim unlink
unlink:
unlink unlink_tests.sh
进入安装包,测试测试集:
[wxs@bogon runtest]$ cd ..[wxs@bogon ltp]$ sudo ./runltp -f unlink
测试集结果如下:
···<<<test_start>>>tag=unlink stime=1506690699cmdline="unlink_tests.sh"contacts=""analysis=exit<<<test_output>>>incrementing stop 1 TPASS: unlink passed with option. 2 TPASS: unlink passed with --help option. 3 TPASS: unlink passed with --version option.Summary:passed 3failed 0skipped 0warnings 0<<<execution_status>>>initiation_status="ok"duration=2 termination_type=exited termination_id=0 corefile=nocutime=3 cstime=7<<<test_end>>>···
在该test体中,三个测试全部通过,验证了这些参数的正确性。
2.3 使用Git提交
经过了上面一节,我们已经测试了这三个命令的正确性,现在我们想要将它们提交上去,这里就用到了git的操作。
git提交时不要忘记把之前在安装包中写的三个测试集写到源码包下的runtest/commands
文件中。
这是因为我们写的这些测试都是测试的命令,将其测试集写在commands文件中,当安装ltp时,就会自动被安装。
首先我们进入源码包
根目录,但是不要着急直接提交,具体步骤如下:
(1)将测试集追加到commands文件
(2)git add 每个测试用例的相关文件
(3)git commit -s -m “xxx” (注:-s将git作者信息加入其中)
(4)生成patch
(5)使用checkpath脚本进行patch格式检查
(6)确认无误后添加下一个测试用例,回到第一步
2.3.1 提交echo
将echo测试集的内容追加到runtest/commands
文件中:
[wxs@bogon ltp]$ pwd/home/wxs/ltp[wxs@bogon ltp]$ cat /opt/ltp/runtest/echo echo echo_tests.sh[wxs@bogon ltp]$ cat /opt/ltp/runtest/echo >> runtest/commands
将echo命令的相关文件加入追踪:
[wxs@bogon ltp]$ git status# 位于分支 mybranch# 尚未暂存以备提交的变更:# (使用 "git add <file>..." 更新要提交的内容)# (使用 "git checkout -- <file>..." 丢弃工作区的改动)## 修改: runtest/commands## 未跟踪的文件:# (使用 "git add <file>..." 以包含要提交的内容)## testcases/commands/echo/# testcases/commands/rm/# testcases/commands/unlink/修改尚未加入提交(使用 "git add" 和/或 "git commit -a")[wxs@bogon ltp]$ git add testcases/commands/echo/[wxs@bogon ltp]$ git add runtest/commands
查看下状态:
[wxs@bogon ltp]$ git status# 位于分支 mybranch# 要提交的变更:# (使用 "git reset HEAD <file>..." 撤出暂存区)## 修改: runtest/commands# 新文件: testcases/commands/echo/Makefile# 新文件: testcases/commands/echo/echo_tests.sh## 未跟踪的文件:# (使用 "git add <file>..." 以包含要提交的内容)## testcases/commands/rm/# testcases/commands/unlink/
要提交的没有问题,开始提交,注意提交的说明的格式:
commands/测试命令名:Add new testcase to test 测试命令名(该命令在man中的号码)
[wxs@bogon ltp]$ git commit -s -m "commands/echo:Add new testcase to test echo(1)"[mybranch 96cb7f3] commands/echo:Add new testcase to test echo(1) 3 files changed, 95 insertions(+) create mode 100644 testcases/commands/echo/Makefile create mode 100755 testcases/commands/echo/echo_tests.sh
生成patch:
[wxs@bogon ltp]$ git format-patch -10001-commands-echo-Add-new-testcase-to-test-echo-1.patch
注:这里我将patch id
设为1,后面的patch id
依次递增。
开始格式检查,首先我们要下载Linux内核,其实我们用不到这么多,只要其中的linux文件夹
即可。
我已经将Linux内核中的linux文件夹拷贝到了home目录
下,执行checkpatch脚本:
[wxs@bogon ltp]$ ../linux/scripts/checkpatch.pl 0001-commands-echo-Add-new-testcase-to-test-echo-1.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?#17: new file mode 100644total: 0 errors, 1 warnings, 95 lines checkedNOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace.0001-commands-echo-Add-new-testcase-to-test-echo-1.patch has style problems, please review.NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
注意:一定要保证检测结果没有error!至于warning,程序员都懂…
2.3.2 提交rm
和提交echo一样,首先将rm的测试集添加入commands
:
[wxs@bogon ltp]$ cat /opt/ltp/runtest/rmrm rm_tests.sh[wxs@bogon ltp]$ cat /opt/ltp/runtest/rm >> runtest/commands
git add相关文件:
[wxs@bogon ltp]$ git status# 位于分支 mybranch# 尚未暂存以备提交的变更:# (使用 "git add <file>..." 更新要提交的内容)# (使用 "git checkout -- <file>..." 丢弃工作区的改动)## 修改: runtest/commands## 未跟踪的文件:# (使用 "git add <file>..." 以包含要提交的内容)## testcases/commands/rm/# testcases/commands/unlink/修改尚未加入提交(使用 "git add" 和/或 "git commit -a")[wxs@bogon ltp]$ git add testcases/commands/rm/[wxs@bogon ltp]$ git add runtest/commands
然后提交:
[wxs@bogon ltp]$ git commit -s -m "commands/rm:Add new testcase to test rm(1)"[mybranch f670ce7] commands/rm:Add new testcase to test rm(1) 3 files changed, 98 insertions(+) create mode 100644 testcases/commands/rm/Makefile create mode 100644 testcases/commands/rm/rm_tests.sh
生成patch:
[wxs@bogon ltp]$ git format-patch -20001-commands-echo-Add-new-testcase-to-test-echo-1.patch0002-commands-rm-Add-new-testcase-to-test-rm-1.patch
checkpatch验证:
[wxs@bogon ltp]$ ../linux/scripts/checkpatch.pl 0002-commands-rm-Add-new-testcase-to-test-rm-1.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?#17: new file mode 100644ERROR: trailing whitespace#52: FILE: testcases/commands/rm/Makefile:24:+ $total: 1 errors, 1 warnings, 99 lines checkedNOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace.NOTE: Whitespace errors detected. You may wish to use scripts/cleanpatch or scripts/cleanfile0002-commands-rm-Add-new-testcase-to-test-rm-1.patch has style problems, please review.NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
遗憾的是,出现了最不愿见到的错误。
错误提示我们在testcases/commands/rm/Makefile
的24行尾随一个空白的空格,由此可见这个检测是多么的严苛…
我们回到提交前的状态,使用git log查看提交日志:
我们找到最近一次的正确提交,回滚回去:
[wxs@bogon ltp]$ git reset 2b4b8e
回去之后,去debug我们的错误:
删除24行的空行,重新add、commit和patch:
[wxs@bogon ltp]$ git add runtest/commands[wxs@bogon ltp]$ git add testcases/commands/rm/[wxs@bogon ltp]$ git commit -s -m "commands/rm:Add new testcase to test rm(1)"[mybranch f670ce7] commands/rm:Add new testcase to test rm(1) 3 files changed, 98 insertions(+) create mode 100644 testcases/commands/rm/Makefile create mode 100644 testcases/commands/rm/rm_tests.sh[wxs@bogon ltp]$ git format-patch -20001-commands-echo-Add-new-testcase-to-test-echo-1.patch0002-commands-rm-Add-new-testcase-to-test-rm-1.patch
重新checkpatch检测:
[wxs@bogon ltp]$ ../linux/scripts/checkpatch.pl 0002-commands-rm-Add-new-testcase-to-test-rm-1.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?#17: new file mode 100644total: 0 errors, 1 warnings, 98 lines checkedNOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace.0002-commands-rm-Add-new-testcase-to-test-rm-1.patch has style problems, please review.NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
问题已经被解决了,我们消灭了一只bug…
2.3.3 提交unlink
老套路,直接来了:
[wxs@bogon ltp]$ cat /opt/ltp/runtest/unlink >> runtest/commands [wxs@bogon ltp]$ git status # 位于分支 mybranch# 尚未暂存以备提交的变更:# (使用 "git add <file>..." 更新要提交的内容)# (使用 "git checkout -- <file>..." 丢弃工作区的改动)## 修改: runtest/commands## 未跟踪的文件:# (使用 "git add <file>..." 以包含要提交的内容)## testcases/commands/unlink/修改尚未加入提交(使用 "git add" 和/或 "git commit -a")[wxs@bogon ltp]$ git add runtest/commands[wxs@bogon ltp]$ git add testcases/commands/unlink/[wxs@bogon ltp]$ git commit -s -m "commands/unlink:Add new testcase to unlink(1)"[mybranch 99b2823] commands/unlink:Add new testcase to unlink(1) 3 files changed, 89 insertions(+) create mode 100644 testcases/commands/unlink/Makefile create mode 100644 testcases/commands/unlink/unlink_tests.sh[wxs@bogon ltp]$ git format-patch -30001-commands-echo-Add-new-testcase-to-test-echo-1.patch0002-commands-rm-Add-new-testcase-to-test-rm-1.patch0003-commands-unlink-Add-new-testcase-to-unlink-1.patch
checkpatch检测:
[wxs@bogon ltp]$ ../linux/scripts/checkpatch.pl 0003-commands-unlink-Add-new-testcase-to-test-unlink-1.patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?#17: new file mode 100644total: 0 errors, 1 warnings, 90 lines checkedNOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace.0003-commands-unlink-Add-new-testcase-to-test-unlink-1.patch has style problems, please review.NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
没有问题,检测成功!
2.4 发送patch到指定邮箱
至此本章内容基本结束了,这里补充一下发送patch到指定邮箱的方法:
git send-email[–in-reply-to=messageID] –to xxx@xxx PATCH名称
注:中括号内容为回复某人的messageID,如果单纯发送可以省略。
后面的PATCH ID可以为多个。
git send-email
这个很有可能没有安装,你可以使用git send-email --help
确认一下。如果显示send-email的man page,那么send-email已经安装再你的系统了。否则,你需要安装send-email命令。
在Centos下,这个安装包的名字是git-email
,因此直接yum
就可以安装了。
现在我想把这三个提交发到我的邮箱可以执行命令:
git send-email --to jitwxs@foxmail 0001-commands-echo-Add-new-testcase-to-test-echo-1.patch 0002-commands-rm-Add-new-testcase-to-test-rm-1.patch 0003-commands-unlink-Add-new-testcase-to-test-unlink-1.patch
没多久我就收到了邮件,但是是从拦截消息中发现的…你没有听错,邮件服务商将其视为了垃圾邮件,所以你只能手动一封封的把它恢复,或者直接将其地址设为白名单。
- LTP教程 第二章 开发Shell测试集
- LTP 第四章 开发_exit()测试集
- LTP 第三章 开发系统调用测试集
- LTP 第五章 开发IO操作测试集
- LTP 第六章 开发IO阻塞测试集
- LTP测试LINUX
- LTP 测试分析
- ltp交叉编译测试
- LTP 测试分析
- LTP--Linux 测试工具
- 浅析ltp测试流程
- ltp交叉编译测试
- LTP--linux稳定性测试 linux性能测试 ltp压力测试
- LTP测试流程及分析
- ltp测试流程及分析
- ltp测试流程及分析
- 《MongoDB极简教程》第二章 MongoDB 基本命令(Shell)
- LTP
- 树查找
- 网页加载过慢的问题诊断思路
- [AGC002D]Stamp Rally-整体二分
- hdu 4424 Conquer a New Region 并查集
- 利用Construct 2制作HTML5小游戏
- LTP教程 第二章 开发Shell测试集
- 循环缓冲区取放原则
- 657. Judge Route Circle
- 【数据结构与算法】查找波峰或者波谷
- 字符串变换
- Eclipse如何设置编码格式?(3种方式)
- 光子到显示器上的漫长之路
- SAP Crystal Reports 2016和SAP Dashboard Design 2016的安装
- Scratch 游戏项目学习法 —— 接苹果(五)把苹果放在顶端