发布新日志

  • solaris 设置IP

    2008-08-26 23:21:53

    ? ifconfig
      ifconfig用于配置网卡地址,改动后立即生效,但并不保存配置,下次启动后失效。
      # ifconfig -a
      lo0: flags=849 mtu 8232
      inet 127.0.0.1 netmask ff000000
      hme0: flags=863 mtu 1500
      inet 172.16.255.2 netmask ffff0000 broadcast 172.16.255.255
      ether 8:0:20:ee:11:51
      #ifconfig hme0 172.16.3.3 netmask 255.255.255.0
      #ifconfig –a
      lo0: flags=849 mtu 8232
      inet 127.0.0.1 netmask ff000000
      hme0: flags=863 mtu 1500
      inet 172.16.3.3 netmask ffffff00 broadcast 172.16.3.255
      ether 8:0:20:ee:11:51
      
      
      ? /etc/hosts
      想要永久更改配置,则要更改配置文件,以网卡hme0为例:
      
      #more /etc/hostname.hme0
      Sunland
      #more /etc/hosts
      127.0.0.1 localhost
      172.16.255.2 Sunland loghost
      #vi /etc/hosts
      #more /etc/hosts
      127.0.0.1 localhost
      172.16.3.3 Sunland loghost
      #more /etc/netmasks
      #
      # The netmasks file associates Internet Protocol (IP) address
      # masks with IP network numbers.
      #
      # network-number netmask
      #
      # The term network-number refers to a number obtained from the Internet Network
      # Information Center. Currently this number is restricted to being a class
      # A, B, or C network number. In the future we should be able to support
      # arbitrary network numbers per the Classless Internet Domain Routing
      # guidelines.
      #
      # Both the network-number and the netmasks are specified in
      # "decimal dot" notation, e.g:
      #
      # 128.32.0.0 255.255.255.0
      #vi /etc/netmasks
      #more /etc/netmasks
      #
      # The netmasks file associates Internet Protocol (IP) address
      # masks with IP network numbers.
      #
      # network-number netmask
      #
      # The term network-number refers to a number obtained from the Internet Network
      # Information Center. Currently this number is restricted to being a class
      # A, B, or C network number. In the future we should be able to support
      # arbitrary network numbers per the Classless Internet Domain Routing
      # guidelines.
      #
      # Both the network-number and the netmasks are specified in
      # "decimal dot" notation, e.g:
      #
      # 128.32.0.0 255.255.255.0
      172.16.3.0 255.255.255.0
      #reboot
  • solaris, 在/home下不能创建目录

    2008-08-25 23:00:35

    在solaris 9中,在home目录下,mkdir fir

    报错:mkdir:failed to make directory "fir";Operation not applicable.

    解决方案:

    /home umount后,就可以mkdir

    umount /home

  • wget

    2008-08-24 20:37:44

    wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.

    所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

    wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作"递归下载"。在递归下载的时候,wget遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

    wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
    wget的常见用法

    ●wget的使用格式:
    Usage: wget [OPTION]... ...
    ●用wget做站点镜像:
    wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/
    # 或者
    wget -m http://www.tldp.org/LDP/abs/html/
    ●在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载:
    wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &
    # 或者从filelist读入要下载的文件列表
    wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft -i filelist.txt -o down.log &
    上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中,在晚上要出去系统前执行上面代码的第二条。
    ●使用代理下载:
    wget -Y on -p -k https://sourceforge.net/projects/wvware/
    代理可以在环境变量或wgetrc文件中设定:
    # 在环境变量中设定代理
    export PROXY=http://211.90.168.94:8080/
    # 在~/.wgetrc中设定代理
    http_proxy = http://proxy.yoyodyne.com:18023/
    ftp_proxy = http://proxy.yoyodyne.com:18023/
    wget各种选项分类列表

    ●启动:
      -V,  --version           显示wget的版本后退出
      -h,  --help              打印语法帮助
      -b,  --background        启动后转入后台执行
      -e,  --execute=COMMAND   执行`.wgetrc'格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc
    ●记录和输入文件:
      -o,  --output-file=FILE     把记录写到FILE文件中
      -a,  --append-output=FILE   把记录追加到FILE文件中
      -d,  --debug                打印调试输出
      -q,  --quiet                安静模式(没有输出)
      -v,  --verbose              冗长模式(这是缺省设置)
      -nv, --non-verbose          关掉冗长模式,但不是安静模式
      -i,  --input-file=FILE      下载在FILE文件中出现的URLs
      -F,  --force-html           把输入文件当作HTML格式文件对待
      -B,  --base=URL             将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
           --sslcertfile=FILE     可选客户端证书
           --sslcertkey=KEYFILE   可选客户端证书的KEYFILE
           --egd-file=FILE        指定EGD socket的文件名
    ●下载:
           --bind-address=ADDRESS   指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
      -t,  --tries=NUMBER           设定最大尝试链接次数(0 表示无限制).
      -O   --output-document=FILE   把文档写到FILE文件中
      -nc, --no-clobber             不要覆盖存在的文件或使用.#前缀
      -c,  --continue               接着下载没下载完的文件
           --progress=TYPE          设定进程条标记
      -N,  --timestamping           不要重新下载文件除非比本地文件新
      -S,  --server-response        打印服务器的回应
           --spider                 不下载任何东西
      -T,  --timeout=SECONDS        设定响应超时的秒数
      -w,  --wait=SECONDS           两次尝试之间间隔SECONDS秒
           --waitretry=SECONDS      在重新链接之间等待1...SECONDS秒
           --random-wait            在下载之间等待0...2*WAIT秒
      -Y,  --proxy=on/off           打开或关闭代理
      -Q,  --quota=NUMBER           设置下载的容量限制
           --limit-rate=RATE        限定下载输率
    ●目录:
      -nd  --no-directories            不创建目录
      -x,  --force-directories         强制创建目录
      -nH, --no-host-directories       不创建主机目录
      -P,  --directory-prefix=PREFIX   将文件保存到目录 PREFIX/...
           --cut-dirs=NUMBER           忽略 NUMBER层远程目录
    ●HTTP 选项:
           --http-user=USER      设定HTTP用户名为 USER.
           --http-passwd=PASS    设定http密码为 PASS.
      -C,  --cache=on/off        允许/不允许服务器端的数据缓存 (一般情况下允许).
      -E,  --html-extension      将所有text/html文档以.html扩展名保存
           --ignore-length       忽略 `Content-Length'头域
           --header=STRING       在headers中插入字符串 STRING
           --proxy-user=USER     设定代理的用户名为 USER
           --proxy-passwd=PASS   设定代理的密码为 PASS
           --referer=URL         在HTTP请求中包含 `Referer: URL'头
      -s,  --save-headers        保存HTTP头到文件
      -U,  --user-agent=AGENT    设定代理的名称为 AGENT而不是 Wget/VERSION.
           --no-http-keep-alive  关闭 HTTP活动链接 (永远链接).
           --cookies=off         不使用 cookies.
           --load-cookies=FILE   在开始会话前从文件 FILE中加载cookie
           --save-cookies=FILE   在会话结束后将 cookies保存到 FILE文件中
    ●FTP 选项:
      -nr, --dont-remove-listing   不移走 `.listing'文件
      -g,  --glob=on/off           打开或关闭文件名的 globbing机制
           --passive-ftp           使用被动传输模式 (缺省值).
           --active-ftp            使用主动传输模式
           --retr-symlinks         在递归的时候,将链接指向文件(而不是目录)
    ●递归下载:
      -r,  --recursive          递归下载--慎用!
      -l,  --level=NUMBER       最大递归深度 (inf 或 0 代表无穷).
           --delete-after       在现在完毕后局部删除文件
      -k,  --convert-links      转换非相对链接为相对链接
      -K,  --backup-converted   在转换文件X之前,将之备份为 X.orig
      -m,  --mirror             等价于 -r -N -l inf -nr.
      -p,  --page-requisites    下载显示HTML文件的所有图片
    ●递归下载中的包含和不包含(accept/reject):
      -A,  --accept=LIST                分号分隔的被接受扩展名的列表
      -R,  --reject=LIST                分号分隔的不被接受的扩展名的列表
      -D,  --domains=LIST               分号分隔的被接受域的列表
           --exclude-domains=LIST       分号分隔的不被接受的域的列表
           --follow-ftp                 跟踪HTML文档中的FTP链接
           --follow-tags=LIST           分号分隔的被跟踪的HTML标签的列表
      -G,  --ignore-tags=LIST           分号分隔的被忽略的HTML标签的列表
      -H,  --span-hosts                 当递归时转到外部主机
      -L,  --relative                   仅仅跟踪相对链接
      -I,  --include-directories=LIST   允许目录的列表
      -X,  --exclude-directories=LIST   不被包含目录的列表
      -np, --no-parent                  不要追溯到父目录
  • oracle

    2008-07-13 11:43:31

    1.创建表空间

      create tablespace test datafile'c:\test.dbf' size 10m;  //名字不要为数字

    2.创建用户

    create user userName identified by password;  //不要为数字

    3.给用户授权

    grant dba to userName; --授予DBA权限
    grant unlimited tablespace to userName;--授予不限制的表空间
    grant select any table to userName; --授予查询任何表
    grant select any dictionary to userName;--授予 查询 任何字典

    grant connect,resource,dba,imp_full_database,exp_full_database to sa;

    4.察看当前的数据库名

    select name from v$database;

    5.察看数据库对象

    select owner, object_type, status, count(*) count# from all_objects group

    by owner, object_type, status;

    ----------Oracle 用户信息----------------

    1. 查询oracle中所有用户信息
    select * from dba_users;

    2. 查询用户和密码
    select username,password from dba_users;

    3. 查询当前用户信息
    select * from dba_ustats;

    4. 查询用户可以访问的视图文本
    Select * from dba_varrays;

    5. 查询数据库中所有视图的文本
    select * from dba_views;

    -----------sql plus--------

    1.输入用户名和密码(system为用户名)

    2.建立表空间,建立用户(test/test),授权

    3.使用test用户登陆

    connect test/test        --connect

    #sqlplus/nolog

    #connect sys/test1234 as sysdba

    ######  sqlplus "sys/teset1234 as sysdba"

    ######  sqlplus "myccc/qwe"

    4.建表

    CREATE TABLE count
    (num1 NUMBER(4,2),
    num2 NUMBER(5,2),
    result NUMBER(6,2));

    5.插入数据

    INSERT INTO count(num1,num2,result) VALUES(1,1,2);
    INSERT INTO count(num1,num2,result) VALUES(1,1,1);
    INSERT INTO count(num1,num2,result) VALUES(2,8,10);
    INSERT INTO count(num1,num2,result) VALUES(68,90,158);
    6.提交数据

    commit;

  • 一些连接

    2008-05-06 12:07:22

  • 想象5年后的你(很多人看了很受启迪!!!!!)

    2008-02-20 10:31:16

    想象5年后的你   

      
    让我与你共同分享一段小故事,或许在这个阶段,可以很实际地让我们走出目前的困境

      
    一九七六年的冬天,当时我十九岁,在休斯顿太空总署的大空梭实验室里工作,同时也在总署旁边的休斯顿大学主修电脑。纵然忙于学校、睡眠与工作之间,这几乎占据了我一天二十四小时的全部时间,但只要有多余的一分钟,我总是会把所有的精力放在我的音乐创作上。

      
    我知道写歌词不是我的专长,所以在这段日子里,我处处寻找一位善写歌、词的搭档,与我一起合作创作。我认识了一位朋友,她的名字叫凡內芮(Valerie Johnson)。自从二十多年前离开德州后,就再也没听过她的消息,但是她却在我事业的起步时,给了我最大的鼓励。仅十九岁的凡內芮在德州的诗词比赛中,不知得过多少奖牌。她的写作总是让我爱不释手,当时我们的确合写了许多很好的作品,一直到今天,我仍然 认为这些作品充满了特色与创意。  

      
    一个星期六的周末,凡內芮又热情地邀请我至她家的牧场烤肉。她的家族是德州有名的石油大亨,拥有庞大的牧场。她的家庭虽然极为富有,但她的穿着、所开的车、与她谦诚待人的态度,更让我加倍地打从心底佩服她。凡內芮知道我对音乐的执着。然而,面对那遥远的音乐界及整个美国陌生的唱片市场,我们一点管道都没有。此时,我们两个人坐在德州的乡下,我们哪知道下一步该如何走。突然间,她冒出了一句话:

      " Visualize
    What you are doing in 5 years ﹙想像你五年后在做什么?﹚"  

      
    我愣了一下。

      
    她转过身来,手指着我说:"嘿!告诉我,你心目中最希望五年后的你在做什么,你那个时候的生活是一个什么样子?"我还来不及回答,她又抢着 说:"別急,你先仔细想想,完全想好,确定后再说出来。"我沉思了几分钟,开始告诉她:"第一,五年后,我希望能有一张唱片在市场上,而这张唱片很受欢迎,可以得到许多人的肯定。第二,我住在一个有很多很多音乐的地方,能天天与一些世界一流的乐师一起工作。"  

      
    凡內芮说:"你确定了吗?"

      
    我慢慢稳稳地回答,而且拉了一个很长的Yesssssss  

      
    凡內芮接着说:"好,既然你确定了,我们就把这个目标倒算回来。如果第五年,你有一张唱片在市场上,那么你的第四年一定是要跟一家唱片公司签上合约。"

      "
    那么你的第三年一定是要有一个完整的作品,可以拿给很多很多的唱片公 司听,对不对?"  

      "
    那么你的第二年,一定要有很棒的作品开始录音了。"

      "
    那么你的第一年,就一定要把你所有要准备录音的作品全部编曲,排练就位准备好。"

      "
    那么你的第六个月,就是要把那些没有完成的作品修饰好,然后让你自己可以逐一筛选。"  

      "
    那么你的第一个月就是要把目前这几首曲子完工。"

      "
    那么你的第一个礼拜就是要先列出一整个清单,排出哪些曲子需要修改, 哪些需要完工。"  

      "
    好了,我们现在不就已经知道你下个星期一要做什么了吗?"凡內芮笑笑地说。

      "
    喔,对了。你还说你五年后,要生活在一个有很多音乐的地方,然后与许多一流的乐师一起忙着工作,对吗?"她急忙地补充说。"如果,你的第五年已经在与这些人一起工作,那么你的第四年照道理应该有你自己的一个工作室或录音室。那么你的第三年,可能是先跟这个圈子里的人在一起工作。那么你的第二年,应该不是住在德州,而是已经住在纽约或是洛杉机了。"  

      
    次年(一九七七年),我辞掉了令许多人羨慕的太空总署的工作,离开了休斯顿,搬到洛杉机。

      
    说也奇怪:不敢说是恰好五年,但大约可说是第六年。一九八三年,我的唱片在亚洲开始销起来,我一天二十四小时几乎全都忙着与一些顶尖的音乐高手,日出日落地一起工作。  

      
    每当我在最困惑的时候,我会静下来问我自己:五年后你"最希望"看到你自己在做什么?

      
    如果,你自己都不知道这个答案的话,你又如何要求別人或上帝为你做选择或开路呢? 別忘了!在生命中,上帝已经把所有"选择"的权力交在我们的手上了。  

      
    如果,你对你的生命经常在问"为什么会这样?""为什么会那样?"的时候,你不妨试着问一下自己,你是否很"清清楚楚"地知道你自己要的是什么?  

      
    如果连你自己要的是什么都不知道的话,那么爱你的主又如何帮你安排呢?不是吗?

      
    而在你旁边的人,再怎么热心地为你敲锣打鼓,爱你的主也顶多给一些慈悲的安慰。因为连你自己都还没有清楚地告诉他,你要的是什么?那么你又岂能无辜地怪上帝没有为你开路呢?不是吗?
    -------------------------------------

    ------------

    有这样一篇调查似乎也说明了什么:  

      
    有一年,一群意气风发的天之骄子从美国哈佛大学毕业了,他们即将开始穿越各自的玉米地。他们的智力、学历、环境条件都相差无几。在临出校门前,哈佛对他们进行了一次关于人生目标的调查。结果是这样的:

      27
    %的人,没有目标;60%的人,目标模糊;   

      10
    %的人,有清晰但比较短期的目标;

      3
    %的人,有清晰而长远的目标。

      
    以后的25年,他们穿越玉米地。25年后,哈佛再次对这群学生进行了跟踪调查。结果又是这样的:   

      3
    %的人,25年间他们朝着一个方向不懈努力,几乎都成为社会各界的成功人士,其中不乏行业领袖、社会精英;

      10
    %的人,他们的短期目标不断地实现,成为各个领域中的专业人士,大都生活在社会的中上层;   

      60
    %的人,他们安稳地生活与工作,但都没有什么特别成绩,几乎都生活在社会的中下层;

      
    剩下27%的人,他们的生活没有目标,过得很不如意,并且常常在抱怨他人、抱怨社会、抱怨这个不肯给他们机会的世界。  

      
    其实,他们之间的差别仅仅在于:25年前,他们中的一些人知道为什么要穿越玉米地,而另一些人则不清楚或不很清楚。

      
    故事到此完结,具体到底是真是假,我也不知道,因为我看到的时候就是不具名的,不知道是何人所写。不过,在这里,我们的确看到了人生职业规划的重要性,在将这个规划细细拆分,我们马上就会发现,其实我们根本没有时间停下来发呆。
  • 一个有竞争力的测试工程师应该具备的三项基本素质

    2007-12-29 18:07:33

    很多年轻或者刚刚从事测试工作的工程师,经常会问:“测试工程师需要什么技能或者具有什么素质才是合格的?”与开发人员相比,测试人员不但需要一技之长,还需要掌握诸如操作系统、数据库、网络等多方面的知识。

           经过这几年的发展,国内IT公司的测试水平有了很大的提高,但是与此同时,很多测试工程师也迎来了个人的发展瓶颈:很多人从测试工程师做到了测试经理的职位,不知道下一步如何发展;或者每天机械地从事着功能测试工作。

    根据作者多年的经验,一个有竞争力的测试人员要具有下面三个方面的素质:

    计算机专业技能

    计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:

    测试专业技能

    现在软件测试已经成为一个很有潜力的专业。要想成为一名优秀的测试工程师,首先应该具有扎实的专业基础,这也是本书的编写目的之一。因此,测试工程师应该努力学习测试专业知识,告别简单的“点击”之类的测试工作,让测试工作以自己的专业知识为依托。
    测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。

    软件编程技能

    “测试人员是否需要编程?”可以说是测试人员最常提出的问题之一。实际上,由于在我国开发人员待遇普遍高于测试人员,因此能写代码的几乎都去做开发了,而很多人则是因为做不了开发或者不能从事其它工作才“被迫”从事测试工作。最终的结果则是很多测试人员只能从事相对简单的功能测试,能力强一点的则可以借助测试工具进行简单的自动化测试(主要录制、修改、回放测试脚本)。
    软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。

    此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据作者的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。

    网络、操作系统、数据库、中间件等知识:

    与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
    在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
    操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
    数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MS Sqlserver、Oracle等常见数据库的使用。

    作为一名测试人员,尽管不能精通所有的知识,但要想做好测试工作,应该尽可能地去学习更多的与测试工作相关的知识。
  • QA 和QC 的区别

    2007-12-19 22:25:29

    什么是QA?

    QA 是 Quality Assurance
        QA最重要的职责在于系统层面的完善,侧重于问题的防范及对已发生之问题之Root Cause探究及其Permament C/A之实施,从而降低不良的产生。
        随着QA的出现,企业的质量管理范围进一步推广,包括了整个品质保证题写的范围,质量管理人员的权限也进一步增大。有些企业QA还包括了CS(顾客满意)的业务,就是处理顾客的投诉:分析、对策、顾客满意度调查等业务。

    什么是QC?

    QC 是 Quality Control

        指检验,在质量管理发展史上先出现了“QC”,产品经过检验后再出货是质量管理最基本的要求。QC的
    工作主要是产成品,原辅材料等的检验,QA是对整个公司的一个质量保证,包括成品,原辅料等的放行,质量管理体系正常运行等.
        QC最重要的职责在于对制成品(主要包括Raw material,in-process goods,finish goods,In-process audit)的监控,侧重于通过Sample Inspection来Detect defect.

  • 一些答案

    2007-12-08 19:55:13

    1.怎么做好文档测试

    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
    检查文档的编写是否满足文档编写的目的
    内容是否齐全,正确
    内容是否完善
    标记是否正确

    2.

    什么是软件测试?

    使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

    3.软件验收测试包括正式验收测试、alpha测试、beta测试三种测试。

     

    4.软件验收测试合格通过准则:1软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。2所有测试项没有残余的一级二级三级的错误。3立项审批表、需求分析文档、设计文档和编码实现一致。4验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)

     

    5.设计系统测试计划需要参考的项目文档有软件测试计划、软件需求工件、和迭代计划

     

    6.

    简述集成测试的过程



     

    根据IEEE标准 集成测试划分为4个阶段:计划阶段,设计阶段,实现阶段,执行阶段(实施阶段)
    计划阶段
    1
    )时间安排       概要设计完成评审后大约一个星期

    2
    )输入           需求规格说明书 概要设计文档  产品开发计划路标
    3
    )入口条件       概要设计文档已经通过评审
    4
    )活动步骤      1.定被测试对象和测试范围 2.评估集成测试被测试对象的数量及难度,即工作量 3.确定角色分工和作任务4.标识出测试各阶段的时间,任务,约束等条件5.考虑一定的风险分析及应急计划6.考虑和准备集成测试需要的测试工具,测试仪器,环境等资源7.考虑外部技术支援的力度和深度,以及相关培训安排8.定义测试完成标准
    5
    )输出           集成测试计划
    6
    )出口条件       集成测试计划通过概要设计阶段基线评审
    设计阶段
    1
    )时间安排 详细设计阶段开始
    2
    )输入  需求规格说明书  概要设计  集成测试计划
    3
    )入口条件  概要设计基线通过评审
    4
    )活动步骤  1.被测对象结构分析 2.集成测试模块分析3.集成测试接口分析4.集成测试策略分析
       5.
    集成测试工具分析6.集成测试环境分析7.集成测试工作量估计和安排。
    5
    )输出  集成测试设计(方案)
    6.
    出口条件  集成测试设计通过详细设计基线评审。
    实现阶段
    1
    )时间安排 在编码阶段开始后进行
    2
    )输入 需求规格说明书  概要设计  集成测试计划 集成测试设计
    3
    )入口条件 详细设计阶段
    4
    )活动步骤  集成测试用例设计 集成测试程设计 集成测试代码设计(如果需要)  集成测试脚本(如果需要)  集成测试工具(如果需要)
    5
    )输出  集成测试用例 集成测试规程 集成测试代码 集成测试脚本 集成测试工具
    6
    )出口条件  测试用例和测试规程通过编码阶段基线评审
    执行阶段
    1
    )时间安排 单元测试已经完成后就可以开始执行集成测试了
    2
    )输入     需求规格说明书 概要设计  集成测试计划  集成高度设计  集成测试例 集成测试规程  集成测试代码(如果有)  集成测试脚本 集成测试工具 详细设计  代码  单元测试报告  
    3
    )入口条件 单元测试阶段已经通过基线化评审

    4
    )活动步 执行集成测试用例 回归集成测试用例  撰写集成测试报告  
    5
    )输出  集成测试报告

    6
    )出口条件  集成测试报告通过集成测试阶段基线评审

     

    7系统测试计划是否需要同行审批,为什么?

    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

     

    8比较负载测试,容量测试和强度测试的区别

    负载测试:在一定的工作负荷下,系统的负荷及响应时间。

    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

    容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。


  • Vista兵败成事实,不成功的十大原因

    2007-12-08 13:19:35

    12月份是回望和总结2007年的时候,让我们来看一下Windows Vista失利的十大原因。是的,Vista远没有达到微软的期望,即使抛却专家和用户个人的观点,它失利的信号还是处处可见:

    l         Windows Vista广告瞬间消失的速度就像它们当初出现的一样;

    l         微软对Vista的发行量言过其实;

    l         Windows Vista Ultimate Extras(可以理解成微软的增值服务包)最终成为空话

    l         微软已经公布了Vista接班人——Windows 7的计划

    十大原因:

    10,版本过多。从盈利角度来说,六个Vista SKU (包括Starter Edition)没错,但从市场来看却是个灾难——顶多两个就可以了:普通用户的Vista Home Premium和商业用户的Vista Enterprise。

    9,美国和欧盟的反垄断。这影响了微软的Vista,许多原本该捆绑到Vista的功能只能单独发行。

    8,Office 2007断弦。从1995年到2006年12月30日微软再也没有一起发布过Office和Windows。上次微软将Office和Windows95一起发布大获全胜,Offcie 2007和Vista也这么干就好了。

    7,广告策略。虽然微软对Windows Vista做了大量的广告,却时机不当,原因是整个2005和2006年微软都在宣传Windows XP有多棒,那会离Vista发布只有18个月。人们会疑惑:既然XP这么好,为什么这么快出Vista呢?

    6,生态链不完善。Vista发布的时候准备工作还没有做好。2003年的时候比尔盖茨展望了2006年的PC,Vista开始研发。等到Vista发布的时候, PC却没有达到当初预想的程度,现在也可以看出:许多电脑配置和动力不够。另外,Vista还缺乏足够的应用支持。

    5,由委员会设计微软花费数年时间收集分析公司、用户、合作伙伴、测试等的意见来设计Vista,然而这实在是个不怎么样的方式,因为众口难调,微软收集的建议实在太多了。

    4,错误的发布时间。为什么不在2006年假期时(美国的假期)发布?利用假期Vista的发行量将极大提升,因为许多零售商40%的营收都来自感恩节和圣诞节时段。

    3,复杂性。微软在Vista上做了结构性的改变,尤其是安全性、用户接口设计等让Vista太过复杂,复杂性同时成为一把双刃剑。

    2,撞上了“足够好”的墙。微软最大的竞争对手就是他自己,所以在市场上新产品的最大竞争者是上一代的产品,不巧的是Vista的上一代Windows XP已经达到了“足够好”的程度。

    1,Windows XP的生态网络。微软多次谈论到Windows的生态网络:开发者、合作伙伴、硬件商等为用户创造价值的同时也的确促进了Windows操作系统成功。然而这张网也同时遏止了Vista:由于Windows XP生存了太长时间,导致Windows这张生态网最适合的是Windows XP而不是Vista.

  • 饭后8件事最谋杀健康

    2007-12-08 12:34:52

    凶手1、饭后吃水果
    很多人都喜欢饭后吃点水果,这是一种错误的生活习惯。食物进入胃以后,需要经过1到2小时的消化,如果饭后立即吃水果,就会被先前吃进的食物阻挡,致使水果不能正常地消化。时间长了,就会引起腹胀腹泻便秘等症状。

    凶手2、饭后饮浓茶
    饭后喝茶,会冲淡胃液,影响食物的消化。另外,茶叶中含有大量鞣酸,饭后喝茶,就会使胃中没来得及消化的蛋白质同鞣酸结合在一起形成不易消化的沉淀物,影响蛋白质的吸收。茶叶还会妨碍铁元素的吸收,长期如此甚至能够引发缺铁性贫血。

    凶手3、饭后吸烟

    凶手4、饭后洗澡
    饭后洗澡,体表血流量就会增加,胃肠道的血流量便会相应减少,从而使肠胃的消化功能减弱,引起消化不良。

    凶手5、饭后放松裤带
    很多人吃饭过量后感觉撑得慌,常常放松皮带扣,这样虽然肚子舒服了,但是会造成腹腔内压的下降,逼迫胃部下垂。长此以往,就会患上真的胃下垂

    凶手6、饭后散步
    饭后“百步走”,非但不能活“九十九”,还会因为运动量的增加,影响消化道对营养物质的吸收。尤其是老年人,心脏功能减退、血管硬化,餐后散步多会出现血压下降等现象。

    凶手7、饭后唱卡拉OK
    民间还有句俗话叫“饱吹饿唱”,这句话是正确的。吃饱后人的胃容量增大,胃壁变薄,血流量增加,这时唱歌会使膈膜下移,腹腔压力增大,轻则引起消化不良,重则引发胃肠不适等其他病症。

    凶手8、饭后开车
    司机饭后立即开车容易发生车祸。这是因为饭后胃肠对食物的消化需要大量的血液,造成大脑器官暂时性缺血,从而导致操作失误

  • Alpha和Beta测试的区别

    2007-12-07 22:04:45

    大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。

    Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。

    Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。

    由于Alpha和Beta测试的组织难度大,测试费用高,测试的随机性强、测试周期跨度较长,测试质量和测试效率难于保证,所以,很多专业软件可能不再进行Beta测试。随着测试技术的提高,以及专业测试服务机构的大量涌现,很多软件的Beta测试外包给这些专业测试机构进行测试。
    α测试和β测试
    在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测的.
    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的
    测试.
    α测试的目的是评价软件产品的FLURPS(即功能,局域化,可使用性,可靠性,性能和支持).尤其注重产品的
    界面和特色.
    α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程
    中产品达到一定的稳定和可靠程度之后再开始.
    β测试是由软件的多个用户在实际使用环境下进行的测试.这些用户返回有关错误信息给开发者.
    测试时,开发者通常不在测试现场.因而,β测试是在开发者无法控制的环境下进行的软件现场应用.
    在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告.
    β测试主要衡量产品的FLURPS.着重于产品的支持性,包括文档,客户培训和支持产品生产能力.
    只有当α测试达到一定的可靠程度时,才能开始β测试.它处在整个测试的最后阶段.同时,产品的所有手册
    文本也应该在此阶段完全定稿.
  • 冒泡排序

    2007-12-06 21:33:41

    (1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果
    a(n)然后比较第n-1个和第n-2个数据;依次类推,直到第2个数据和第1个数据
    进行比较交换,这称为一趟冒泡。这一趟最明显的效果是:将最小的数据传到了
    第1位。由此还可推断出,对于n个数,一趟应该进行n-1 次比较操作。

    (2)然后,对2至n个数据进行同样操作,则具有次小值的数据被安置在第2位
    上。

    (3)重复以上过程,每次的移动都向最终排序的目标前进,直至没有数据需要
    交换为止。

    ----先选出最小的 排到最上面

    具体算法
      void BubbleSort(SeqList R)
       { //R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序
         int i,j;
         Boolean exchange; //交换标志
         for(i=1;i<n;i++)

         { //最多做n-1趟排序
           exchange=FALSE; //本趟排序开始前,交换标志应为假
           for(j=n-1;j>=i;j--) //对当前无序区R[i..n]自下向上扫描
            if(R[j].key<R[j-1].key){//交换记录
              R[0]=R[j]; //R[0]不是哨兵,仅做暂存单元
              R[j]=R[j-1];
              R[j-1]=R[0];
              exchange=TRUE; //发生了交换,故将交换标志置为真
             }
           if(!exchange) //本趟排序未发生交换,提前终止算法
                 return;
         } //endfor(外循环)
        } //BubbleSort

  • 工作之余为自己挖一口井

    2007-12-06 21:33:16

    有两个和尚住在隔壁,所谓隔壁就是隔壁那座山,他们分别住在相邻的两座山上的庙里。这两座山之间有一条溪,于是这两个和尚每天都会在同一时间下山去溪边挑水,久而久之他么变成为了好朋友。
      就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水,右边那座山的和尚心想:“他大概睡过头了。”便不以为意。

        哪知道第二天左边这座山的和尚还是没有下山挑水,第三天也一样。过了一个星期还是一样,直到过了一个月右边那座山的和尚终于受不了,他心想:“我的朋友可能生病了,我要过去拜访他,看看能帮上什么忙。”

      于是他便爬上了左边这座山,去探望他的老朋友。

      等他到了左边这座山的庙,看到他的老友之后大吃一惊,因为他的老友正在庙前打太极拳,一点也不像一个月没喝水的人。他很好奇地问:“你已经一个月没有下山挑水了,难道你可以不用喝水吗?”

      左边这座山的和尚说:“来来来,我带你去看。”于是他带着右边那座山的和尚走到庙的后院,指着一口井说:“这五年来,我每天做完功课后都会抽空挖这口井,即使有时很忙,能挖多少就算多少。如今终于让我挖出井水,我就不用再下山挑水,我可以有更多时间练我喜欢的太极拳。”

        我们在公司领的薪水再多,那都是挑水。而把握下班后的时间挖一口属于自己的井,未来当年纪大了,体力拚不过年轻人了,还是有水喝,而且喝得很悠闲。
  • SQL SEVER 中的的内连接与外连接

    2007-12-06 21:32:42

    内连接,典型的连接用算,使用如 = <>,之类的比较用算符,包括相等连接和自然连接。内连接根据各个表中共有的列来匹配表中的行!

          比如 用户表(M-USER)中有部门编号(BUMENCD)字段,部门表(M-BUMEN)中也有部门编号(BumenCd,现在欲抽出用户表(M-USER)和部门表(M-USER)中具有相同部门编号的的用户信息:

    Select xxx,xxx,xxx                                               / /抽出的用户其他信息,如姓名,年龄 编号等

    From M-USER, M-USER                                       / / 表名

    Where M-USER .BUMENCD,=M-USER. BumenCd / / 抽出条件 部门编号相同

    Ord by xxx                                                             / / 抽出信息排列 可选

    内连接若连接的结果集中只保留了符合连接条件的元组,而排除了两个表中没有对应的或匹配的元组情况,这种连接称为内连接。在内连接的查询结果中,会丢失一部分信息

    外连接 如果要求查询结果集中保留非匹配的元组,则为外连接, 分为为左外连接,右外连接 ,及完整外连接

         FROM   子句中指定外联接时,可以由下列几组关键字中的一组指定:   
        
    LEFT JOIN      
         LEFT     OUTER     JOIN
      
    左向外联接的结果集包括     LEFT     OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。   
        
        RIGHT     JOIN   
         RIGHT     OUTER     JOIN     
      
    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。   
        
        FULL     JOIN   
         FULL     OUTER     JOIN     
      
    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

    比如

    1. 左外连接

                      Select A. xxxx, A . xxxx , B .xxx , B .xxx

                      From M-USER as A   left outer join   M-BUMEN as B

                      On A . BUMENCD = B . BumenCd

    2 .右外连接 换关键字            right outer join                 on

  • C++中class与struct的区别

    2007-12-06 21:31:42

    关于使用大括号初始化

      class和struct如果定义了构造函数的话,都不能用大括号进行初始化

      如果没有定义构造函数,struct可以用大括号初始化。

      如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。

      关于默认访问权限

      class中默认的成员访问权限是private的,而struct中则是public的。

      关于继承方式

      class继承默认是private继承,而struct继承默认是public继承。

      且看如下代码(看看编译器给出的错误信息):

    class T1
    {
     public:
      void f()
      {
       cout<<"T1::f()"<<endl;
      }
     int x,y;
    };

    struct T2
    {
     int x;
     void f(){cout<<"T2::f()"<<endl;}
    };


    struct TT1 : T1
    {
    };

    class TT2 : T2
    {
    };

    int main()
    {
     TT1 t1;
     TT2 t2;
     t1.f();
     t2.f();
    }

      关于模版

      在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。

    template <struct X>
    void f(X x)
    {
    }
    //出错信息:d:codecpptestcpptestcpptest.cpp(33) : error C2065: 'X' : undeclared identifier
  • 缺陷测试报告的组成

    2007-12-06 21:31:04

    缺陷测试报告的组成:

    (1)缺陷的标题;

    (2)缺陷的基本信息;

            测试的软件和硬件环境;

            测试的软件版本;

            缺陷的类型;

            缺陷的严重程度;

            缺陷的处理优先级。

    (3)复现缺陷的操作步骤;

    (4)缺陷的实际结果描述;

    (5)期望的正确结果描述;

    (6)注释文字和截取的缺陷图像。

     

     

    编号
    如:ut-dt00016
    标题
    如:文字排版功能.字间距.MarchCalculator计算错误
    版本号
    如:V1.3
    执行状态(缺陷状态)
    如:空白/草稿/提交/审批/分发/正在修改/修改完毕/正在确认/关闭…
    修改记录
    如:2003年7月2日;肖睿编制/修改;原因
    测试环境和版本号码、程序编写人员
    错误严重程度和优先级别
    错误详细描述
    重现步骤和方式、对应的测试记录编码
    附件
    建议修改方式
    修改内容、结果及修改人员签字/日期
    确认内容、结果及确认人员签字/日期

  • 软件缺陷生命周期

    2007-12-06 21:30:23

    软件缺陷的生命周期指的是一个软件缺陷被发现、报告到这个缺陷被修复、验证直至最后关闭的完整过程。
    简单的软件缺陷生命周期:
    1、发现——打开:测试人员找到软件缺陷并将软件缺陷提交给开发人员;
    2、打开——修复:开发人员再现、修复缺陷,然后提交测试人员去验证;
    3、修复——关闭:测试人员验证修复过的软件,关闭已不存在的缺陷。
    但是这是一种理想的状态,在实际的工作中是很难有这样的顺利的,需要考虑的各种情况都还是非常多的。
    复杂的软件缺陷生命周期:
    1、新建一个软件缺陷,这个软件缺陷是(open)状态,进行bug审查,不是代码问题,就是设计需要修改;
    2、新建一个软件缺陷,这个软件缺陷是(open)状态,进行bug审查,以后修改的,就可以延期;
    3、新建一个软件缺陷,这个软件缺陷是(open)状态,进行bug审查,实际没有这个bug,可以将其关闭;
    4、新建一个软件缺陷,这个软件缺陷是(open)状态,看是否 清楚可重现,如果不能重现,就是缺少信息,需要返回到(open)状态;如果能够重现,就进行修正,修正后关闭,进行回归测试。
    软件缺陷生命周期中的不同阶段是测试人员、开发人员和管理人员一起参与、协同测试的过程。软件缺陷一旦发现,便进入测试人员、开发人员、管理人员严格监控之中,直至软件缺陷的生命周期终结,这样可保证在较短的时间内高效率的关闭所有缺陷,缩短软件测试的进程,提高软件质量,同时减少开发和维护成本。
     
     
    理想的软件缺陷生命周期:
    new—open—fixed—closed
    复杂的软件缺陷生命周期:
    1、new一个软件缺陷,经PM/CBB评审,是postphone,到最后期限,不得不open,fixed,close
    2、new一个软件缺陷,经PM/CBB评审,是duplicate,测试人员可以将close
    3、new一个软件缺陷,经PM/CBB评审,是abandon,测试人员可以将其close
    4、new一个软件缺陷,这个软件缺陷是(open)状态,开发人员reject,测试人员进行bug审查,bug不存在,可以将其close;
    5、新建一个软件缺陷,这个软件缺陷是(open)状态,开发人员fixed,测试人员进行回归测试,回归测试不通过,交给开发人员reopen,fixed,close
  • 白盒测试覆盖

    2007-12-06 21:26:23

     

    http://www.51testing.com/html/9/1511.html

    白盒测试,所关注的是:测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。因此,也可以认为是逻辑覆盖测试。具体方法有五个,按其逻辑覆盖的从弱到强依次列出:

     
      • 语句覆盖(面): 将程序中的每条语句至少执行一次,但实现不太可能,该准则有很大的不足,以至于它通常没有什么用处
      • 判定/分支覆盖(线): 必须编写足够的测试用例,使得每一个判断都至少有一个为真和为假的输出结果。即:每条分支路径都必须至少遍历一次。换句话说:所有判断的每个可能结果都至少执行一次,以及将程序或子程序的每个入口点都至少执行一次。需要指出的是:该准则满足语言覆盖准则。
      • 条件覆盖(点):  编写足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次。
      • 判定/条件覆盖(点线结合): 设计出足够的测试用例,将一个判断中的每个条件的所有可能结果至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。需明确一点,该准则有一个极大的缺点:尽管看上去所有条件的所有结果似乎都执行到了,但由于某些特定的条件会屏蔽掉其他的条件,通常并不能全部都执行到。例如:该准则并不一定会发现逻辑表达式中的错误(与、或)。  
      • 多重条件覆盖(点线组合):
          编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。需要说明的是,满足多重条件覆盖准则的测试用例集,同样满足判定覆盖准则、条件覆盖准则以及判定/条件覆盖准则。需明确的是:在存在循环的情况下,多重条件覆盖准则所需要的测试用例的数量通常会远远小于其路径的数量。
      文尾,作者小结了一下。
      • 包含每个判断只存在一种条件的程序,最简单的测试准则就是:设计出足够数量的测试用例,将每个判断的所有结果都至少执行一次;将所有的程序入口都至少调用一次,以确保全部的语句都至少执行一次。
      • 包含多重条件判断的程序,最简单的测试准则是:设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

     


     

  • 同行评审和阶段评审有何区别与联系

    2007-12-06 18:28:01

    同行评审目的:发现小规模工作产品的错误,只要是找错误;
    阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

    同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
    阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

    同行评审内容:内容小 一般文档 <  40页, 代码 < 500行
    阶段评审内容: 内容多,主要看重点

    同行评审时间:一小部分工作产品完成
    阶段评审时间: 通常是设置在关键路径的时间点上!

    达到CMM3的软件机构一定会施行,CMM3有一个KPA叫同行评审,但是没有达到的也不一定不会开展这样的活动!
    测试人员当然一定要介入,最好的介入就是在需求阶段!

231/212>

数据统计

  • 访问量: 14664
  • 日志数: 24
  • 建立时间: 2007-11-18
  • 更新时间: 2008-08-26

RSS订阅

Open Toolbar