1、创建脚本文件
创建shell脚本文件时,必须在文件的第一行指明所使用的shell,指明shell后将命令输入到文件中的每一行。
#!/bin/bash
在普通的shell脚本行中,英镑符号(#)用作注释。Shell不处理脚本中的注释行。但是shell脚本文件的第一行是个特例,#后面跟着感叹号告诉shell运行下列脚本的shell。Shell 不会解析以#(#!开通的第一行除外)开头的行。
[rich@localhost ~]$ cat test1
#!/bin/bash
#This script displays the date and who's logged on
date
who
[rich@localhost ~]$ ./test1
Sun Sep 18 09:15:53 CST 2011
root pts/0 2011-09-18 09:00 (192.168.0.5)
脚本的执行:给脚本执行权限chmod u+x test1 ./脚本名称来执行脚本
将脚本放到PA TH变量中$PA TH=$PA TH:/home/bin并赋予变来那个执行权限(任何目录下都可以执行)
2、显示消息
echo命令后面添加字符串,echo命令就能显示一个简单的文本字符串。
echo命令即可使用双引号也可以使用单引号来标记文本字符串。如果要在字符串中使用它们,需要在一个文本使用一种引号类型,然后使用另一种类型标记字符串:
echo "This is a test to see if you're paying attenion"
This is a test to see if you're paying attenion
echo 'Rich says "scripting is easy".'
Rich says "scripting is easy".
[rich@localhost bin]$ cat test1
#!/bin/bash
#This script displays the date and who's logged on
echo "The time and date are:"
date
echo "let's see who's logged into the system:"
who
[rich@localhost bin]$ ./test1
The time and date are:
Sun Sep 18 09:50:07 CST 2011
let's see who's logged into the system:
root pts/0 2011-09-18 09:00 (192.168.0.5)
如果想要echo命令结果和echo文本字符串在同一行,只需对echo语句使用-n参数即可[rich@localhost bin]$ cat test1
#!/bin/bash
#This script displays the date and who's logged on
echo -n "The time and date are:"
date
echo "let's see who's logged into the system:"
who
[rich@localhost bin]$ ./test1
The time and date are:Sun Sep 18 09:52:02 CST 2011
let's see who's logged into the system:
root pts/0 2011-09-18 09:00 (192.168.0.5)
3、使用变量
通过使用以美元符号开头的变量可以从脚本中引进环境变量
[rich@localhost ~]$ cat test2
#!/bin/bash
#display user information frm the system
echo "User info for userid: $USER"
echo "UID: $UID"
echo "HOME: $HOME"
[rich@localhost ~]$ ./test2
User info for userid: rich
UID: 501
HOME: /home/rich
注意:当运行脚本时,echo命令中的环境变量会被它们的当前值所代替。无论何时当脚本中发现英镑符号时,它就会认为您引用了一个变量,要显示一个实际的美元符号,必须在它们前面加上反斜杠符号
[rich@localhost ~]$ echo "The cost of the item is $15"
The cost of the item is 5
[rich@localhost ~]$ echo "The cost of the item is \$15"
The cost of the item is $15
4、用户变量
除了环境变量,shell脚本中允许在脚本中设置自己和使用自己的变量。设置变量可以暂时存储数据并在脚本中使用他们。
用户变量可以由不超过20个字符的字母、数字或下划线组成的文本文本字符串。用户变量区分大小写,在变量、等号和变量值之间不允许有空格。
脚本中定义的变量在shell脚本中的生命周期内保留他们的值,但是当shell脚本完成时就被删除了。
[rich@localhost ~]$ cat test3
#!/bin/bash
#testing variables
days=10
guest="Katie"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"
[rich@localhost ~]$ ./test3
Katie checked in 10 days ago
Jessica checked in 5 days ago
没有美元符号,shell就会把变量理解为一个普通文本字符串。
[rich@localhost ~]$ cat test4
#!/bin/bash
#testing a variable value to another variable
value1=10
value2=$value1
echo "The resulting value is $value2"
[rich@localhost ~]$ ./test4
The resulting value is 10
[rich@localhost ~]$ cat test4
#!/bin/bash
#testing a variable value to another variable
value1=10
value2=$value1
echo "The resulting value is value2"
[rich@localhost ~]$ ./test4
The resulting value is value2
5、反引号
反引号允许将shell命令中的输出赋值给变量。必须将整个命令用反引号包围起来。[rich@localhost ~]$ cat test5
#!/bin/bash
#using the backtick charater
testing=`date`
echo "The date and time are: $testing"
[rich@localhost ~]$ ./test5
The date and time are: Sun Sep 18 10:42:52 CST 2011
常用案例,利用反引号来捕获当前日期,并用它在脚本中创建唯一的文件名
[rich@localhost ~]$ cat date
#!/bin/bash
#copy the /usr/bin directory listing to a file log
today=`date +%y%m%d`
/bin/ls -la /usr/bin > $HOME/log.$today
[rich@localhost ~]$ ls
bin date log.110918 test1 test2 test3 test4 test5
6、重定向输入和输出
[rich@localhost ~]$ cat test6
[rich@localhost ~]$ date > test6
[rich@localhost ~]$ cat test6
Sun Sep 18 10:56:38 CST 2011
[rich@localhost ~]$ cat test6
testing
[rich@localhost ~]$ date >> test6
[rich@localhost ~]$ cat test6
testing
Sun Sep 18 10:58:27 CST 2011
[rich@localhost ~]$ wc < test6
2 7 37
[rich@localhost ~]$ wc << EOF
> test string
> test string 1
> test string 2
> EOF
3 8 40
[rich@localhost ~]$
7、管道
将输出命令重定向到另一条命令,而不是将命令的输出重定向到一个文件,这个过程成为管道传送。管道传送的符号是竖条操作符(|)
[rich@localhost ~]$ rpm -qa | sort > rpm.list
[rich@localhost ~]$ ls
bin date log.110918 rpm.list test1 test2 test3 test4 test5 test6
8、数字计算
expr命令允许处理命令行中的等式,但是很笨拙
[rich@localhost ~]$ expr 1 + 1
2
[rich@localhost ~]$ expr 1+1
1+1
在传送expr命令的字符可能被错误解析前,需要使用shell转义字符(反斜杠)来识别它们。[rich@localhost ~]$ expr 5 * 2
expr: syntax error
[rich@localhost ~]$ expr 5 \* 2
10
[rich@localhost ~]$ cat test6
#!/bin/bash
#An example of using the expr command
var1=10
var2=20
var3=`expr $var2 / $var1`
echo "The result is: $var3"
[rich@localhost ~]$ ./test6
The result is: 2
9、是用括号
Bash为一个变量制定一个数学值时,可以使用美元符号和方括号把数学等式括起来
[rich@localhost ~]$ var1=$[1 + 5]
[rich@localhost ~]$ echo $var1
6
[rich@localhost ~]$ var2=$[$var1 * 2]
[rich@localhost ~]$ echo $var2
12
使用方括号方法计算等式时,不必担心shel错误理解乘法符号或者其他符号。Shell知道它不是一个通配符,因为它在括号里。
[rich@localhost ~]$ cat test7
#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1 * ($var2 - $var3)]
echo "The final result is $var4"
[rich@localhost ~]$ ./test7
The final result is 500
Bash shell只支持整数算法
[rich@localhost ~]$ cat test8
#!/bin/bash
var1=100
var2=45
var3=$[$var1 / $var2]
echo "The final result is $var3"
[rich@localhost ~]$ ./test8
The final result is 2
10、浮点解决方案
scale 变量的默认值是0。在设置scale值之前,bash计算器bc提供0小数位的答案。将scale 变量值设为4之后,bash计算器显示为4位小数位的答案。-q命令行参数禁止bash计算器的冗余欢迎标语。
[rich@localhost ~]$ bc -q
3.44 / 5
scale=4
3.44 / 5
.6880
quit
[rich@localhost ~]$
除了普通的数字,bash计算器也识别变量。一旦定义了变量,可以在整个bash计算器中使用该变量。Print语句允许打印变量和数字。
[rich@localhost ~]$ bc -q
var1 * 4
40
var2=var1 / 5
print var2
2
quit
[rich@localhost ~]$
11、在脚本中使用bc
[rich@localhost ~]$ cat test9
#!/bin/bash
var1=`echo "scale=4; 3.44 / 5" | bc` echo "The answer is $var1"
[rich@localhost ~]$ ./test9
The answer is .6880
[rich@localhost ~]$ cat test10
#!/bin/bash
var1=100
var2=45
var3=`echo "scale=4; $var1 / $var2" | bc` echo "The answer for this is $var3" [rich@localhost ~]$ ./test10
The answer for this is 2.2222
[rich@localhost ~]$ cat test11
#!/bin/bash
var1=20
var2=3.14159
var3=`echo "scale=4; $var1 * $var1" | bc` var4=`echo "scale=4; $var3 * $var2" | bc` echo "The final result is $var4"
[rich@localhost ~]$ ./test11
The final result is 1256.63600
[rich@localhost ~]$ clear
[rich@localhost ~]$ cat test12
#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=`bc << EOF
a1=($var1 * $var2)
b1=($var3 * $var4)
a1+b1
EOF
`
echo "The final answer for this mess if $var5"
[rich@localhost ~]$ ./test12
The final answer for this mess if 2813.9882
12、退出脚本
为了向shell表明,命令已经处理完毕,每条运行在shell都使用一个推出状态。这个推出状态是介于0——255之间的数值。当命令执行完成时,命令就会把推出状态传递给shell。Linux提供$?特殊变量来保存最后一条命令执行结束的推出状态。一条命令成功完成的推出状态是0.如果命令执行错误,那么推出状态机会是一个正整数。
Linux推出状态代码
代码描述代码描述
0 命令完成成功128 无效的推出参数
1 通常的未知错误128+x 使用Linux信号x的
致命错误
2 误用shell命令130 使用Ctrl+c终止命令126 命令无法找到255 规范外的推出状态127 没有找到命令
[rich@localhost ~]$ date
Sun Sep 18 14:38:16 CST 2011
[rich@localhost ~]$ echo $?
[rich@localhost ~]$ asdf
-bash: asdf: command not found
[rich@localhost ~]$ echo $?
127
[rich@localhost ~]$ ./test1
-bash: ./test1: Permission denied
[rich@localhost ~]$ echo $?
126
[rich@localhost ~]$ date -t
date: invalid option -- t
Try `date --help' for more information.
[rich@localhost ~]$ echo $?
1
[rich@localhost ~]$
exit命令允许在脚本结束时,指定一个推出状态。
[rich@localhost ~]$ cat test13
#!/bin/bash
#testing the exit status
var2=30
var3=$[ $var2 + $var1 ]
echo "The final answer is: $var3"
exit 5
[rich@localhost ~]$ ./test13
The final answer is: 40
[rich@localhost ~]$ echo $?
5
也可以在exit命令参数中使用变量
[rich@localhost ~]$ cat test14
#!/bin/bash
#testing the exit status
var1=10
var2=30
var3=$[ $var2 + $var1 ]
echo "The final answer is: $var3"
exit $var3
[rich@localhost ~]$ ./test14
The final answer is: 40
推出状态值在0——255之间的数,shell通过使用模计算到了这一点。一个值的模是出操作之后的余数。运算结果结果就是那个特定的整数256除了之后的余数。本例中结果值是300余数是44,44就是提出状态。
[rich@localhost ~]$ cat test14b
#!/bin/bash
#tesing the exit status
var1=10
var2=30
var3=$[ $var1 * $var2 ]
echo "The value is $var3"
exit $var3
[rich@localhost ~]$ ./test14b
The value is 300
[rich@localhost ~]$ echo $?
44
功能自动化测试流程解析 本流程是描述软件功能自动化测试过程中的步骤、内容与方法,明确各阶段的职责、活动与产出物。 1流程图 2流程说明 2.1 测试计划(可选) 与以前的测试计划过程一致,只是在原来的测试计划中,添加对项目实施自动化测试所需的资源、测试范围、测试进度的描述。该过程产出物为《测试计划》。 2.2 自动化测试用例设计 根据《测试计划》、《软件需求规格说明书》、《系统测试用例》设计出针对自动化测试的测试用例。测试用例的粒度精确到单个功能点或流程,对于各个功能点的业务规则,通过对脚本添加相应的检查点来进行测试。该过程的产出物是《自动化测试用例》。
2.3 自动化脚本设计(可选) 根据《软件需求规格说明书》、《自动化测试用例》、《系统原型》、《系统设计说明书》编写《自动化脚本设计说明书》,其主要内容包括:分析当前项目,设计出适合的脚本基本架构,针对特殊自动化测试用例设计可行的脚本编写方法,设计特殊检查点的实现方式,并对潜在的技术难点提出解决方案。该过程的产出物是《自动化脚本设计说明书》。 2.4 自动化脚本编写 根据《软件需求规格说明书》、《自动化测试用例》、《系统原型》、《自动化脚本设计说明书》,录制、调试、编写各个功能点的自动化测试脚本,并添加检查点,进行参数化。该过程还需要编写数据文件处理脚本、日志文件处理脚本、数据库处理脚本、公共检查点处理脚本等等。该过程的产出物是各个功能点的自动化测试脚本和其他公共处理脚本。 2.5 自动化测试数据设计 根据《软件需求规格说明书》、《自动化测试用例》设计出对各个功能点和相关业务规则进行测试的输入数据和预期输出,填写入对应的数据文件中。该过程的产出物是各个功能点的数据文件。 2.6 自动化测试执行 搭建好测试环境。根据《自动化测试用例》,执行自动化脚本,对系统进行自动化测试,并自动记录测试结果到日志文件中。 2.7 自动化测试结果分析 对测试结果文件中报告错误的记录进行分析,如果确实是由于被测系统的缺陷导致,则提交缺陷报告。对自动化测试的结果进行总结,分析系统存在的问题,提交《测试报告》。 2.8 自动化测试脚本维护(可选) 如果系统发生变更时,对自动化测试脚本和相关文档包括《自动化测试用例》、《自动化脚本设计说明书》进行维护,以适应变更后的系统。
《软件系列课程设计——基于JavaScript (网页脚本语言)编写的万年历》 班级 学号 姓名 指导教师 成绩______________________________ 2010年06 月18 日
目录 摘要………………………………………………………………………一、引言………………………………………………………………… 1.应用背景……………………………………………………… 2.可行性分析…………………………………………………… 3.研究路线及内容……………………………………………… 二、系统开发工具……………………………………………………… 三、系统设计(详细设计)……………………………………………… 四、结束语 1.总结………………………………………………………………… 2.参考文献…………………………………………………………… 摘要 极品万年历,带有带有电子时钟,可看不同时区时间,阳历、农历同步显示,鼠标指出,
天干地支计时即出。 一、引言 1,、应用背景 随着科技的发展,人们渴望着把现实生活中的林林总总都搬到电脑上,大到工程设计,小到极品万年历。 2、可行性分析 方便查看农历重要的日子,方便外出办公校正不同区时…… 3、研究路线及内容 通过用JavaScript语言编写代码,并利用文本保存为HTTP或HTML格式。并试图实现一下内容: 1、可看阳历; 2、可看农历; 3、可看时间; 4、可看天干地支计时; 5、可划分区时。 二、系统开发工具 JavaScript网页脚本语言,IE、360安全浏览器或其他浏览器。 三、系统设计 1、程序源码
自动化测试项目也像普通的软件开发项目一样,有编码阶段,自动化测试的编码阶段主要是编写测试脚本实现所设计的自动化测试用例。自动化功能测试脚本地开发方法主要有以下几种:1.线性的 2.结构化的3.共享的4.数据驱动的5.关键字驱动的 线性脚本的编写方法是使用简单的录制回放的方法,测试工程师使用这种方法来自动化地测试系统的流程或某些系统测试用例。它可能包含某些多余的、有时候并不需要的函数脚本。 结构化脚本编写方法在脚本中使用结构控制。结构控制让测试人员可以控制测试脚本,或测试用例的流程。在脚本中,典型的结构控制是使用“if-else”,“switch”,“for”,“while”等条件状态语句来帮助实现判定、实现某些循环任务、调用其他覆盖普遍功能的函数。 共享脚本编写方法是把代表应用程序行为的脚本在其他脚本之间共享。这意味着把被测应用程序的公共的、普遍的功能的测试脚本独立出来,其他脚本对其进行调用。这使得某些脚本按照普遍功能划分来标准化、组件化。这种脚本甚至也可以使用在被测系统之外的其它软件应用系统。 数据驱动脚本编写方法把数据从脚本分离出去,存储在外部的文件中。这样,脚本就只包含编程代码了。这在测试运行时要改变数据的情况下时是需要的。这样,脚本在测试数据改变是不需要修改代码。有时候,测试的期待结果值也可以跟测试输入数据一起存储在数据文件中。 关键字驱动脚本编写方法把检查点和执行操作的控制都维护在外部数据文件。因此,测试数据和测试的操作序列控制都是在外部文件中设计好的,除了常规的脚步外,还需要额外的库来翻译数据。关键字驱动脚本编写方法是数据驱动测试方法的扩展。 总结起来看,对于开发的成本来说,随着脚本编写方法从线性倒关键字驱动的改变而不断地增加;对于维护成本来说,随着脚本编写方法从线性倒关键字驱动的改变而在下降。对于编程技能要求来讲,随着脚本编写方法从线性倒关键字驱动的改变,对一个测试员的变成熟练程度的要求在增加。对于设计和管理的需要来说,随着脚本编写方法从线性倒关键字驱动的改变,设计和管理自动化测试项目的要求在增加。因此,应该合理地选择自动化测试脚本开发方法,在适当的时候,使用适当的脚本开发方法。 第一、最典型的就是消息驱动,自动化工具通过脚本录制和编写,保存为测试脚本。在回放的过程中,将这些脚本转换成为Windows消息,发送给我们应用程序的窗体和各种控件。 这种方式的好处在于,自动化工具和应用程序之间能够做到完全的隔离。但是,由于使用了Windows消息,它也拥有了一个非常致命的缺点。那就是消息队列的异步性与程序的顺序性之间的矛盾。很多消息发送给了应用程序,但是应用程序的处理可能已经和消息队列错位了。有一些关于代码的时间片等待,就是因为这个问题。 另外,就是由于完全的隔离,对于操纵控件数据的能力大大降低。毕竟,拥有大量数据的控件都不是标准控件。 第二、嵌入式。TestComplete就是这类工具。它有支持不同语言的版本。大概思路,就是在程序编译的时候,注入自己的控件代理。脚本的回放,直接可以通过代理,操纵到应用程序。 可惜的是,这类软件开发的时候,更多的是考虑平台的兼容性。对于特有平台上的支持不是十分完美。特别是对自定义控件(比如Delphi中,除了VCL的标准控件)支持也没有做到最好。不过,我这里必须承认,TC的内部实现机制可能十分强大,我不能窥探所有。如果有人清晰,可以指点一二。