海是我向往的地方,吸纳和咆哮是他的魅力!!!

发布新日志

  • 在linux下安装bugzilla

    iseedeadpeople 发布于 2010-03-08 16:35:58

    在linux下安装bugzilla,以前做过,由于涉及到很多其他服务器的安装,故重温一下,以便查阅,正所谓“好记性比不过烂笔头啊",下面开始了。。
    涉及到的安装:apache+mysql+sendmail+perl+bugzilla要求的perl模块+bugilla(系统有不用安了)
       软件的安装无非是这几种方式:rpm安装,tar.gz安装,从系统光盘安装,除系统光盘自带的安装外,下面从两种途径来进行。
    一、安装Apache
    *******tar包安装

          1、下载源码包:htttp://download.chinaunix.net/down.php?id=114&ResourceID=66&site=1

          2、解包:tar -xvf apapche-httpd-2.2.0.tar.bz2

          3、安装:cd apache-http*

                          ./configure --prefix=/usr/local/apache2 --enable-module=so

                          make    然后再    makeinstall     完成安装

          4、配置:vi /usr/local/apache2/conf/httpd.conf   

              添加: AddHandler cgi-scrīpt .cgi
                  <Directory "/var/www/bugzilla/"> *你的bugzilla目录
                  Options All
                  AllowOverride Limit
                  Order allow,deny
                  Allow from all    
                  </Directory>

              修改
          “DirectoryIndex index.html”在"index.html"前加入“index.cgi”

    找到,DocumentRoot "/var/www/html",将引号中的内容替换为bugzilla的安装路径,本例为 /root/bugzilla/bugzilla-2.18rc2 ,替换完结果为:

    DocumentRoot“/root/bugzilla/bugzilla-2.18rc2”

    说明:指定Apache服务器存放网页的根目录

    (可选)找到 ServerName

    在行#ServerName new.host.name:80 下面添加如下内容:

    ServerName 192.168.94.40:80


          5.启动与关闭APACHE2服务

             /usr/local/apache2/bin/apachectl stop

             /usr/local/apache2/bin/apachectl start     
          6、测试APACHE2是否服务启动成功
            http://ip或localhost
             如果显示it works就表示服务已成功。

    *******rpm包安装

    1、首先检查是否已经安装了httpd服务

    rpm-q httpd

    没有就安装,如:rpm-ivh httpd-2.0.40-21.i386.rpm

    4、启动关闭httpd,命令

    /etc/rc.d/init.d/httpd start/stop/restart 或 service httpd ...分别对应 启动/停止/重启

    配置测试同上(可能httpd.conf文件位置不一样)。

    二、安装mysql

    ********tar包安装

          1、下载源码包:http://download.chinaunix.net/down.php?id=24933&ResourceID=7159&site=1

          2、解包:tar -zxvf mysql-5.0.32.tar.gz

          3、安装:cd mysql-5.0*

                          ./configure --prefix=/usr/local/mysql

                          make     然后    make install    完成安装

          4、初始化mysql:/usr/local/mysql/bin/mysql_install_db --user=root

                                      /usr/local/mysql/bin/mysqld_safe --user=root &  (启动mysql服务端)

                                      /usr/local/mysql/bin/mysql --user=root    ( 启动mysql客户端)

                                      use mysql; (选择系统数据库)  

                                      update user set Password=password('YourPassword') where User='root';(设置数据库root密码)

    insert into user  (User,Host,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Index_priv,Alter_priv,Create_priv,Drop_priv,Grant_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv) values('mysql','',password('YourPassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); (增加数据库用户)

    *********rpm安装
    安装和启动

    1、mysql依赖于三个安装包中,分别是:

    MySQL-server-4.0.21-0.i386.rpm

    MySQL-client-4.0.21-0.i386.rpm

    MySQL-devel-4.0.21-0.i386.rpm

    2、安装三个包:

    rpm-ivhMySQL*.rpm

    3、启动mysql数据库

    /etc/rc.d/init.d/mysql start

    4、查看mysql进程

    ps-ef | grep mysql

    配置及初始化

    1、连接到mysql

    mysql -u root

    注意:初始安装的MySQL,超级用户没有口令

    2、设置口令,在mysql提示符下,输入命令

    Set password for root=password("123456") ;

    为root设置口令为123456 ,注意sql语句以“;”结束

    设置后进入为:

    mysql -u root -p

    (输入密码)!

    3、创建数据库bugs

    Create database bugs ;

    show databases;

    use bugs;

    4、创建用户bugs

    Grant select,insert,update,delete,index,alter,create,lock tables,create temporary tables,drop,references ON bugs.* TO bugs@localhost identified by ‘123456’

    5.退出数据库
    exit 或 quit

    注意:(1)mysql中的sql语句是不区分大小写的,所以在mysql提示符下的输入不必在意大小写

    (2)mysql语句必须要以分号“;”结束

    (3)退出语句exit和quit后可以不写分号

    三、安装Perl(系统自带不用安)

          1、下载源码包:http://download.chinaunix.net/down.php?id=78&ResourceID=44&site=1

          2、解包:tar -jvxf perl-5.8.8.tar.bz2

          3、安装:rm -f config.sh Policy.sh

                          sh Configure -de

                          make    然后 make test    通过后再 make install

          (类似的开发工具包建议在安装系统时就装上,以后会少很多麻烦。假如这里编译出现问题,根据提示,找到相应的包装上就可以了。也可以用ubuntu的apt-get install。

    四、安装perl模块

    ***网络自动安装

          1、首先初始化perl的cpan:perl -MCPAN -e 'shell'

                命令执行以后会进行一系列的配置,都有提示这一步是比较简单的,一般一路回车就可以了,最后会选模块搜索服务器,这个在大陆比较快(http://cpan.linuxforum.net/)把它选在前面就可以了。

               cpan是Comprehensive Perl Archive Network的英文缩写,一个巨大的网络资源库。有了它后面安装perl的模块会相对简单一些。

          2、安装bugzilla所需的perl模块

          必要模块:    

          1. CGI 2.93 or CGI 3.11 if using mod_perl
          2. Date::Format (2.21)
          3. DBI (1.41)
          4. DBD::mysql (2.9003) if using MySQL
          5. DBD::Pg (1.45) if using PostgreSQL
          6. File::Spec (0.84)
          7. Template (2.12)
          8. Email::Send (2.00)
          9. Email::MIME::Modifier (any)

    其中DBD模块在本章中先不进行安装,因为这个模块需要先安装mysql,其他模块均可安装

         可选模块:

          1. GD (1.20) for bug charting
          2. Template::Plugin::GD::Image (1.20) for Graphical Reports
          3. Chart::Base (1.0) for bug charting
          4. GD::Graph (any) for bug charting
          5. GD::Text (any) for bug charting
          6. XML::Twig (any) for bug import/export
          7. MIME::Parser (5.406) for bug import/export
          8. LWP::UserAgent (any) for Automatic Update Notifications
          9. PatchReader (0.9.4) for pretty HTML view of patches
         10. Image::Magick (any) for converting BMP image attachments to PNG
         11. Net::LDAP (any) for LDAP Authentication
         12. SOAP::Lite (any) for the web service interface
         13. HTML::Parser (3.40) for More HTML in Product/Group Descrīptions
         14. HTML::Scrubber (any) for More HTML in Product/Group Descrīptions
         15. Email::MIME::Attachment::Stripper (any) for Inbound Email
         16. Email::Reply (any) for Inbound Email
         17. mod_perl2 (1.999022) for mod_perl
         18. CGI (2.93) for mod_perl
         19. Apache::DBI (0.96) for mod_perl2

             不过,别急~ perl提供了很简便的模块安装方式:(单模块安装方式)perl -MCPAN -e 'install 模块名'或用cpan:perl -MCPAN -e 'shell'连上后,键入:install xxx 。

    (批量安装方式)比如安装bugzilla的模块,执行这个命令就可以了:perl -MCPAN -e 'install "Bundle::Bugzilla"' 。(上面个命令是将所有模块一起装,还可以将各模块分开装,比如:perl -MCPAN -e 'install GD::Graph"')。

    ******手动下载安装

    先要到网上把bugzilla所需的模块都下下来(http://download.chinaunix.net)然后分别解压,安装就OK了。perl模块的安装稍微有点不同。
    ./configure换成perl Makefile.PL 后面一样了make  make test(可选)  然后 make install


    五、安装sendmail或者(qmail)

            红帽sendmail默认已经可以用了,如果没有,建议安装qmail。

    没有就安装:下载相关的rpm包,解压安装后,关键是配置。。

    sendmail的配置

    首先进入 /etc/mail 目录

    1、配置文件 sendmail.mc

    (1)打开文件 sendmail.mc

    visendmail.mc

    (2)在命令状态下,输入

    /DAEMON_OPTIONS

    查找字符串:

    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

    (3)在该字符串前面加上dnl ,把该行注释掉,即:

    dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

    保存退出

    (4)执行命令

    m4/etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    输出新的配置文件

    2、配置文件access

    (1)打开文件 access

    viaccess

    (2)在文件中添加

    192.168.94RELAY

    (注意:网段根据实际确定)

    保存退出

    (3)执行命令

    makemaphash/etc/mail/access.db< /etc/mail/access

    建立索引文件

    3、配置文件local-host-names

    (1)打开文件 local-host-names

    vilocal-host-names

    (2)在文件中添加

    btest.com

    mail.btest.com

    设置本地域名,以进行本地传递

    4、修改hosts文件,用于接收邮件

    hosts文件位于 /etc目录下

    (1)进入/etc目录,打开hosts文件

    vihosts

    (2)添加linux服务器的IP地址和别名,内容如下:

    192.168.94.40btest.com

    5、修改完以上配置文件,重启sendmail

    /etc/rc.d/init.d/sendmailrestart

    (注意可能时间会比较慢)

     
    安装配置POP3IMAP(可选)

    1、加载CD2,进入RedHat/RPMS目录,找到文件imap-2001a-18.i386.rpm和imap-devel-2001a-18.i386.rpm ,进行安装

    rpm-ivhimap*.rpm

    2、进入目录 /etc/xinetd.d目录

    3、找到imap文件和ipop3 这两个文件,分别进行修改,把原来内容中

    disable的值由 yes 变为 no

    保存退出

    4、重新启动

    /etc/rc.d/init.d/xinetdrestart

    5、添加一个用户,并设置密码

    adduserzhaods

    passwdzhaods

    密码:123

    六、安装bugzilla

          1、下载源码包:http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.22.2.tar.gz

          2、解包:tar zxvf bugzilla-2*

          3、配置:mkdir /var/www/bugzilla    (创建bugzilla目录)

                          cd bugzilla*        然后         mv * /var/www/bugzilla    (移动bugzilla文件到apache服务目录)

                          chmod -R 777 /var/www/bugzilla    (改变权限)

                          /var/www/bugzilla/checksetup.pl (检查安装,如果上一步的perl模块没有装好,这里会提示)

                          vi /var/www/bugzilla/localconfig 修改以下内容:

                                             $db_host = "localhost";
                                             $db_name = "bugs";
                                             $db_user = "mysql";
                                             $db_pass = "YourPassword";

                          /var/www/bugzilla/checksetup.pl (自动创建数据库,设置目录权限,完了以后,要你输入bugzilla管理员的邮箱,密码等,这是登录用的,要记住。)

                          再来一次 /var/www/bugzilla/checksetup.pl 确认已经成功

    七,其他可能问题

    1。收不到邮件,要修改 /etc/hosts 文件,添加相关的ip记域名

    2。bugzilla配置文件设置(参考,老版本,有问题可以试一下)

       1、在自己的bugzilla安装路径下(如本例为/root/bugzilla/bugzilla-2.18rc.2目录),找到文件   localconfig

       vilocalconfig

       2、找到

       $index_html=0

       改为:

       $index_html=1

    这样会生成一个index.html文件,该文件指向index.cgi

    3、找到

    $db_pass=‘’

    改为:

    $db_pass=‘123456’

    注意:单引号中为创建bugs用户的密码,一定与前面设置的相同

    修改后保存退出

    4、在bugzilla安装路径,输入命令:

    perlchecksetup.pl

    创建bugs数据库中的表

    最后将提示输入如下信息:

    • Enter the e-mail address of the administrator:

    输入:zhaods@btest.com

    说明:要求输入bugzilla管理员e-mail地址,注意是自己前面配置的邮箱帐户,这是登录bugzilla的帐户

    • You entered 'zhaods@btest.com'.Is this correct? [Y/n]

    说明:确认刚才输入的e-mail地址是否正确,回答 y 即可

    • Enter the real name of the administrator:

    输入:zhaods

    说明:输入真实姓名

    • Enter a password for the administrator account:

    输入:123

    说明:登录bugzilla的密码,可以与前面不同,但一定要记住

    • Please retype the password to verify:

    输入:123

    说明:进行密码确认

    (6)这时将出现如下信息:

    'zhaods@btest.com' is now set up as an administrator account.

    表示帐户创建成功

    (7)这时,可以到mysql数据库中查看

    A、输入命令:

    mysql-uroot-p123456

    进入mysql

    B、在mysql提示符下输入命令:

    Usebugs;

    连接bugs数据库

    C、在mysql提示符下输入命令:

    Showtables;

    可以看到bugs数据库中已经创建好了表

    (8)退出mysql即可

    一 切OK了后,用邮件客户端工具(如:outlook/foxmail,或linux下的kmail等)来接收邮件,重启http和network,在IE 里打开地址(如:http://192.168.1.188/bugzilla)即可看到bugzilla的界面...

    参考:http://www.cy-btesting.com/news01/news140.htm
         http://hi.baidu.com/godmap/blog/item/d56569dac15c5adab7fd485d.html
  • 百度软件测试吧,本人用户名iseedeedpeople

    iseedeadpeople 发布于 2009-12-29 16:49:14

    软件测试吧官测试群(40753766)已开始进行整理

    清除长期不在线、不发言的人员

    欢迎喜爱讨论、愿意交流的朋友们加入

    让我们每个人都一起进步

    软件测试吧官测试群(40753766)欢迎你的加入


                                              吧主:幽灵小爱
                                              QQ:382844565

    2楼

    软件测试吧官测试3群(19243520)
    软件测试吧官测试4群(3161908)
    软件测试吧官测试5群(8844820)
  • 其它测试网站

    iseedeadpeople 发布于 2010-01-13 14:48:21


    http://bdonline.sqe.com/ 一个关于网站测试方面的网页,对这方面感兴趣的人可以参考



    http://citeseer.nj.nec.com/ 一个丰富的电子书库,内容很多,而且提供著作的相关文档参考和下载,是作者非常推荐的一个资料参考网站



    http://groups.yahoo.com/group/LoadRunner 性能测试工具LoadRunner的一个论坛



    http://groups.yahoo.com/grorp/testing-paperannou-nce/messages 提供网站上当前发布的软件测试资料列表



    http://satc.gsfc.nasa.gov/homepage.html 软件保证中心是美国国家航天局(NASA)投资设立的一个软件可靠性和安全性研究中心,研究包括了度量、工具、风险等各个方面



    http://seg.iit.nrc.ca/English/index.html 加拿大的一个研究软件工程质量方面的组织,可以提供研究论文的下载



    http://sepo.nosc.mil/ 内容来自美国SAN DIEGO的软件工程机构(Sofrware Engineering Process Office)主页,包括软件工程知识方面的资料



    http://www.asq.org/ 是世界上最大的一个质量团体组织之一,有着比较丰富的论文资源,不过是收费的



    http://www.automated-testing.com/ 一个自动化软件测试和自然语言处理研究页面,属于个人网页,上面有些资源可供下载



    http://www.benchmarkresources.com/ 提供有关标杆方面的资料,也有一些其它软件测试方面的资料



    http://www.betasoft.com/ 包含一些流行测试工具的介绍、下载和讨论,还提供测试方面的资料



    http://www.brunel.ac.uk/~csstmmh2/vast/home.html VASTT研究组织,主要从事通过切片技术、测试技术和转换技术来验证和分析系统,对这方面技术感兴趣的人是可以在这里参考一些研究的项目及相关的一些主题信息



    http://www.cc.gatech.edu/aristotle/ Aristole研究组织,研究软件系统分析、测试和维护等方面的技术,在测试方面的研究包括了回归测试、测试套最小化、面向对象软件测试等内容,该网站有丰富的论文资源可供下载



    http://www.computer.org/ IEEE是世界上最悠久,也是在最大的计算机社会团体,它的电子图书馆拥有众多计算机方面的论文资料,是研究计算机方面的一个重要资源参考来源



    http://www.cs.colostate.edu/testing/ 可靠性研究网站,有一些可靠性方面的论文资料



    http://www.cs.york.ac.uk/testsig/ 约克大学的测试专业兴趣研究组网页,有比较丰富的资料下载,内容涵盖了测试的多个方面,包括测试自动化、测试数据生成、面向对象软件测试、验证确认过程等



    http://www.csr.ncl.ac.uk/index.html 学校里面的一个软件可靠性研究中心,提供有关软件可靠性研究方面的一些信息和资料,对这方面感兴趣的人可以参考



    http://www.dcs.shef.ac.uk/research/groups/vt/ 学校里的一个验证和测试研究机构,有一些相关项目和论文可供参考



    http://www.esi.es/en/main/ ESI(欧洲软件组织),提供包括CMM评估方面的各种服务



    http://www.europeindia.org/cd02/index.htm 一个可靠性研究网站,有可靠性方面的一些资料提供参考



    http://www.fortest.org.uk/ 一个测试研究网站,研究包括了静态测试技术(如模型检查、理论证明)和动态测试(如测试自动化、特定缺陷的检查、测试有效性分析等)



    http://www.grove.co.uk/ 一个有关软件测试和咨询机构的网站,有一些测试方面的课程和资料供下载



    http://www.hq.nasa.gov/office/codeq/relpract/prcls-23.htm NASA可靠性设计实践资料



    http://www.io.com/~wazmo/ Bret Pettichord的主页,他的一个热点测试页面连接非常有价值,从中可以获得相当大的测试资料,很有价值



    http://www.iso.ch/iso/en/ISOOnline.frontpage 国际标准化组织,提供包括ISO标准系统方面的各类参考资料



    http://www.isse.gmu.edu/faculty/ofut/classes/ 821-ootest/papers.html 提供面向对象和基于构架的测试方面著作下载,对这方面感兴趣的读者可以参考该网站,肯定有价值



    http://www.ivv.nasa.gov/ NASA设立的独立验证和确认机构,该机构提出了软件开发的全面验证和确认,在此可以获得这方面的研究资料



    http://www.kaner.com/ 著名的测试专家Cem Kanner的主页,里面有许多关于测试的专题文章,相信对大家都有用。Cem Kanner关于测试的最著名的书要算Testing Software,这本书已成为一个测试人员的标准参考书



    http://www.library.cmu.edu/Re-search/Engineer- ingAndSciences/CS+ECE/index.html 卡耐基梅陇大学网上图书馆,在这里你可以获得有关计算机方面各类论文资料,内容极其庞大,是研究软件测试不可获取的资料来源之一



    http://www.loadtester.com/ 一个性能测试方面的网站,提供有关性能测试、性能监控等方面的资源,包括论文、论坛以及一些相关链接



    http://www.mareinig.ch/mt/index.html 关于软件工程和应用开发领域的各种免费的实践知识、时事信息和资料文件下载,包括了测试方面的内容



    http://www.mtsu.ceu/-storm/ 软件测试在线资源,包括提供目前有哪些人在研究测试,测试工具列表连接,测试会议,测试新闻和讨论,软件测试文学(包括各种测试杂志,测试报告),各种测试研究组织等内容



    http://www.psqtcomference.com/ 实用软件质量技术和实用软件测试技术国际学术会议宣传网站,每年都会举行两次



    http://www.qacity.com/front.htm 测试工程师资源网站,包含各种测试技术及相关资料下载



    http://www.qaforums.com/ 关于软件质量保证方面的一个论坛,需要注册



    http://www.qaiusa.com/ QAI是一个提供质量保证方面咨询的国际著名机构,提供各种质量和测试方面证书认证



    http://www.qualitytree.com/ 一个测试咨询提供商,有一些测试可供下载,有几篇关于缺陷管理方面的文章值得参考



    http://www.rational.com/ IBM Rational的官方网站,可以在这里寻找测试方面的工具信息。IBM Rational提供测试方面一系列的工具,比较全面



    http://rexblackconsulting.com/Pages/publicat-ions.htm
    Rex Black的个人主页,有一些测试和测试管理方面的资料可供下载



    http://www.riceconsulting.com/ 一个测试咨询提供商,有一些测试资料可供下载,但不多



    http://www.satisfice.com/ 包含James Bach关于软件测试和过程方面的很多论文,尤其在启发式测试策略方面值得参考



    http://www.satisfice.com/seminars.shtml 一个黑盒软件测试方面的研讨会,主要由测试专家Cem Kanar和James Bach组织,有一些值得下载的资料



    http://www.sdmagazine.com/ 软件开发杂志,经常会有一些关于测试方面好的论文资料,同时还包括了项目和过程改进方面的课题,并且定期会有一些关于质量和测试方面的问题讨论



    http://www.sei.cmu.edu/ 著名的软件工程组织,承担美国国防部众多软件工程研究项目,在这里你可以获俄各类关于工程质量和测试方面的资料。该网站提供强有力的搜索功能,可以快速检索到你想要的论文资料,并且可以免费下载



    http://www.soft.com/Institute/HotList/ 提供了网上软件质量热点连接,包括:专业团体组织连接、教育机构连接、商业咨询公司连接、质量相关技术会议连接、各类测试技术专题连接等



    http://www.soft.com/News/QTN-Online/ 质量技术时事,提供有关测试质量方面的一些时事介绍信息,对于关心测试和质量发展的人士来说是很有价值的



    http://www.softwaredioxide.com/ 包括软件工程(CMM,CMMI,项目管理)软件测试等方面的资源



    http://www.softwareqatest.com/ 软件质量/测试资源中心。该中心提供了常见的有关测试方面的FAQ资料,各质量/测试网站介绍,各质量/测试工具介绍,各质量/策划书籍介绍以及与测试相关的工作网站介绍



    http://www.softwaretestinginstitute.com/ 一个软件测试机构,提供软件质量/测试方面的调查分析,测试计划模板,测试WWW的技术,如何获得测试证书的指导,测试方面书籍介绍,并且提供了一个测试论坛



    http://www.sqatester.com/index.htm 一个包含各种测试和质量保证方面的技术网站,提供咨询和培训服务,并有一些测试人员社团组织,特色内容是缺陷处理方面的技术



    http://www.sqe.com/ 一个软件质量工程服务性网站,组织软件测试自动化、STAR-EASE、STARWEST等方面的测试学术会议,并提供一些相关信息资料和课程服务



    http://www.stickyminds.com/ 提供关于软件测试和质量保证方面的当前发展信息资料,论文等资源



    http://www.stqemagazine.com/ 软件策划和质量工程杂志,经常有一些好的论文供下载,不过数量较少,更多地需要通过订购获得,内容还是很有价值的



    http://www.tantara.ab.ca/ 软件质量方面的一个咨询网站,有过程改进方面的一些资料提供



    http://www.tcse.org/ IEEE的一个软件工程技术委员会,提供技术论文下载,并有一个功能强大的分类下载搜索功能,可以搜索到测试类型、测试管理、 测试分析等各方面资料



    http://www.testing.com/ 测试技术专家Brain Marick的主页,包含了Marick 研究的一些资料和论文,该网页提供了测试模式方面的资料,值得研究。总之,如果对测试实践感兴趣,该网站一定不能错过



    http://www.testingcenter.com/ 有一些测试方面的课程体系,有一些价值



    http://www.testingconferences.com/asiastar/home 著名的AsiaStar测试国际学术会议官方网站,感兴趣的人一定不能错过



    http://www.testingstuff.com/ Kerry Zallar的个人主页,提供一些有关培训、工具、会议、论文方面的参考信息



    http://www-sqi.cit.gu.edu.au/ 软件质量机构,有一些技术资料可以供下载,包括软件产品质量模型、再工程、软件质量改进等






    PS: 有的网站可能打不开了.不过绝大多数还是可以看见的,
  • Shell 编程的一些常见笔试题

    iseedeadpeople 发布于 2010-12-08 16:45:45

    1.  Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下。

    #!/bin/bash
    #1.sh
    #
    判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下
    #file executable: chmod 755 1.sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    echo -e "The program will Judge a file is or not a device file.\n\n"
    read -p "Input a filename : " filename
    if [ -b "$filename" -o -c "$filename" ]
    then
           echo "$filename is a device file" && cp $filename /dev/ &
    else
           echo "$filename is not a device file" && exit 1
    fi
    ----------------------------------------------------
    2.
    设计一个shell程序,添加一个新组为class1然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx0130

    #!/bin/bash
    #2.sh
    #
    设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx0130
    #file executable: chmod 755 2.sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    groupadd class1
    for i in {9901..9930}
    do
           xx=`echo $i | sed 's/99//g'`
           useradd -g class1 std$xx
           echo std$xx | passwd std$xx --stdin
           echo -e "user std$xx password is std$xx" >> /root/newuser.txt
    done

    -------------------------------------------
    3
    .编写shell程序,实现自动删除50个账号的功能。账号名为stud1stud50

    #!/bin/bash
    #4.sh
    #
    编写shell程序,实现自动删除50个账号的功能。账号名为stud1stud50
    #file executable: chmod 755 3.sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    i=1
    while [ i -le 50 ]
    do
       let i++
           userdel -r stud$i
    done

    ---------------------------------------------
    4
    .某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
    1)在下午4 :50删除/abc目录下的全部子目录和全部文件;
    2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;
    3)每逢星期一下午5:50/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz
    4)在下午5:55IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);
    5)在早晨8:00前开机后启动。

    vim /etc/crontab
    在里面增加下面内容:

    50 16 * * * root rm -rf /abc/* 2>&1 &
    00 8-18 * * * root cat /xyz/x1|awk '{print $1}' >> /backup/bak01.txt 2>&1 &
    50 17 * * 1 root cd /data;tar -zcvf backup.tar.gz * 2>&1 &
    55 17 * * * root umount /hdc 2>&1 &

    5
    )在早晨8:00前开机后启动 --> 这个我不是很明白它的意思,不知道是不是8点前开机就启动上面的设定,8点后才开机就不用启动的意思。
    姑且用下面这个命令吧
    chkconfig --level 2345 crond on

    ---------------------------------------------
    5
    .设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名
    为如下形式yymmdd_etcyy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。

    vim /usr/bin/fileback.sh

    #!/bin/bash
    #fileback.sh
    #file executable: chmod 755 fileback.sh
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    filename=`date +%y%m%d`_etc.tar.gz
    cd /etc/
    tar -zcvf $filename *
    mv $filename /root/bak/
    ------------------------------------------------------
    vim /etc/crontab
    加入
    * * 1 * * root ./fileback.sh &

    ------------------------------------------------
    6
    .有一普通用户想在每周日凌晨零点零分定期备份/user/backup/tmp目录下,该用户应如何做?
    可以用 contab -e 来做,和上面一题差不多。


    7.
    设计一个Shell程序,在/userdata目录下建立50个目录,即user1user50,并设置每个目录的权限,其
    中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

    #!/bin/bash

     

     

     

    如何把两个文件中相同的单词,去除掉。

    以下上文件3.sh的内容
    对本题做出了回答 诚请各位大侠多多指教

    >lwp1
    for a in $(cat A)
    do
    echo $a>>lwp1
    done

    >lwp2
    for b in $(cat B)
    do
    echo $b>>lwp2
    done

    >comf
    for c in $(cat lwp1)
    do
    for d in $(cat lwp2)
    do
    if [ "$c" = "$d" ]
    then echo $c>>comf
    fi
    done
    done

    >ptf1 
    >ptf2

    diff lwp1 comf|grep "\<"|tr "<" "\0" > ptf1
    diff lwp2 comf|grep "\<"|tr "<" "\0" > ptf2

    echo "ptf1 ---->>>> A "
    echo "ptf2 ---->>>> B "


    题目:

    1. a.log文件中提取包含"WARNING""FATAL"同时不包含"IGNOR"的行,然后提取以":"分割的第5个字段

    2. 编写一个脚本,只想简单的减法运算,要求提示输入变量

    3. Shell脚本阅读(解释下面执行的功能),请挑出下面程序或脚本中的错误,并说明错在哪里。

    #!/bin/bash

    #监控cpuserpoint端口是否正常

    logname="/home/forum/log/lpointlog.wf"

    flagfile="/home/forum/log/lognum.txt"

    lodnum=sed -n "1,1 p"$flagfile

    newnum=wc -l ${logname}

    echo $newnum >$flagfile

    totalnum=expr $newnum -$oldnum

    tail -n $totalnum $logname |grep "POINT_THREAD WARNING"

    if [$?==0]

    then

       mail -s "cpuser point "端口异常,请处理!" test@aa.com</dev/null

    fi>

     

    答案:

     

    1.

    #!/bin/bash
    awk -F: '{if ($0~/(WARNING|FATAL)/ && $0!~/IGNOR/) {print $5}}' a.log

    2.

    #!/bin/bash
    read -p "input a num:" num1
    read -p "input another num:" num2
    result=`expr $num1 - $num2`

    #let "result=num1-num2"
    #let result=num1-num2
    echo $result
    ~

    3.

    命令行替换用反引号,if [$?==0] 应该写做if [ $?=0 ],用来判断上次命令是否执行成功;

    倒数第二行应该是>/dev/null,最后fi后面的>去掉。

     

    、写脚本实现,可以用shellperl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
    2
    、写脚本实现,可以用shellperl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。

    答案:

    1

    #!/bin/sh
    for filename in `find /tmp -type f -name "abc*"|head -n 100`
    do
    sed -n '1p' $filename>>new
    done
    或者
    #!/bin/bash

    #for filename in `find ./ -type f -name "*.sh" |head -n 5`

    for filename in `ls *.sh |head -n 5`

    do

    read line1<$filename

    echo $line1>>new

    done
    或者

    find /tmp -type f -name “abc*” | head -n 100 | xargs head -q -n 1 >> new

    2.

    grep -vxFf a b | tee c | wc -l

    sort a b | uniq -u | tee c | wc -l  不行!!!)



     

     

    利用top某个进程的CPU的脚本:

    #/bin/sh

    Max_CPU=0
    Avg_CPU=0
    Total_Time=1

    Process=$1
    Interval=$2

    # check the parameters
    if [ $# -ne 2 ]; then
       echo "Usage: $0 ProcessName Interval"
       exit
    fi

    LogFile="Per.txt"
    echo "`date`" > $LogFile

    while sleep $Interval
    do
       top -d 1 -n 1|grep $Process|grep -v grep|awk '{print $9"\t"$10}' >> $LogFile
    done


     

    添加用户:

     

    #/bin/bash

     

    groupadd -f class1

    for i in {9909..9911}

    do

            xx=`echo $i | sed 's/99//g'`

            useradd -g class1 std${xx}

            echo std${xx} | passwd std${xx} --stdin

            echo -e "user std${xx} passwd is std${xx}">>/root/newuser.txt

    done

    exit 0

     

           注意等号的前后不要有空格:xx=`echo $i | sed 's/99//g'`

           变量如果前后有字符,要是大括号

     

    统计IP访问:

    要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。以下是apache的访问日志节选

     

    202.101.129.218 - - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065 HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

     

     

    # awk '{print $1}' log      |sort |uniq -c|sort -r |head -n10

          5 221.224.78.15

          3 221.233.19.137

          1 58.63.148.135

          1 222.90.66.142

          1 222.218.90.239

          1 222.182.95.155

          1 221.7.249.206

          1 221.237.232.191

          1 221.235.61.109

          1 219.129.183.122

     

    这个地方有个疑问,为什么在使用uniq之前要sort

     

    2个数之和

    #/bin/bash

    typeset first second

    read -p "Input the first number:" first

    read -p "Input the second number:" second

    result=$[$first+$second]

    echo "result is : $result"

    exit 0

     

     

    文本分析

    取出passwordshell出现的次数
    第一种方法结果:
          4 /bin/bash
          1 /bin/sync
          1 /sbin/halt
         31 /sbin/nologin
          1 /sbin/shutdown
    第二种方法结果:
    /bin/sync       1
    /bin/bash       1
    /sbin/nologin   30
    /sbin/halt      1
    /sbin/shutdown  1

     

    答案:

    cat /etc/passwd|awk -F: '{if ($7!="") print $7}'|sort|uniq –c

    cat /etc/passwd|awk -F: '{if ($7!="") print $7}'|sort|uniq -c | awk '{print $2,$1}'

     

     

    文件整理

    employee文件中记录了工号和姓名
    employee.txt:
    100 Jason Smith
    200 John Doe
    300 Sanjay Gupta
    400 Ashok Sharma
    bonus
    文件中记录工号和工资
    bonus.txt:
    100 $5,000
    200 $500
    300 $3,000
    400 $1,250
    要求把两个文件合并并输出如下
    处理结果:
    400 ashok sharma $1,250
    100 jason smith  $5,000
    200 john doe  $500
    300 sanjay gupta  $3,000

     

    答案:join employee bonus | sort -k 2

     

     

    打印本机的交换分区大小

    处理结果:
    Swap:1024M

     

    free -m | sed -n '/Swap/p' | awk '{ print $2}'

    free -m | sed -n 's/Swap:\ *\([0-9]*\).*/\1/p'

     

    输出本机创建20000个目录所用的时间

    处理结果:
    real    0m3.367s
    user    0m0.066s
    sys     0m1.925s

     

    答案:

    # time for i in {1..2000} ; do mkdir /root/neil$i; done

     

    real    0m6.200s

    user    0m1.128s

    sys     0m4.710s

     

    打印当前sshd的端口和进程id

    处理结果:
    sshd Port&&pid: 22 5412

     

    答案:netstat -anp | grep sshd | sed -n 's/.*:::\([0-9]*\)\ .* \ \([0-9]*\)\/sshd/\1 \2/p'

     

    打印root可以使用可执行文件数

    处理结果:
    root's bins: 2306

     

    echo "root's bins: $(find ./ -type f | xargs ls -l | sed '/-..x/p' | wc -l)"

    root's bins: 3664

     

    编译当前目录下的所有.c文件:

     

    for file in *.c; do echo $file ; gcc -o $(basename $file .c) $file  ; sleep 2;  done > compile 2>&1

     

    将一目录下所有的文件的扩展名改为bak

    for i in *.*;do mv $i ${i%%.*}.bak;done

     

     

     

  • 一个测试计划小模版

    iseedeadpeople 发布于 2011-05-25 11:22:55


    仅仅是一个小的例子,由于公司的都是保密的~~实际写的时候记得综合各种
    不要忘了check list
    应交付文档,挂起恢复条件,出口入口原则,各种类型以及流程

    测试计划
    产品名称:    三普销售助手标准版
    项目承担部门    研发部
    撰写人(签名)    白红勃
    完成日期    
    本文档使用部门    测试部
    评审负责人(签名)    
    评审日期    
    版本   


    目 录
    1.    概述    ............1
    1.1    产品简介   1
    1.2    范围    1
    1.3    限制条件    1
    1.4    参考文档    1
    2.    约定    2
    2.1    测试目标    2
    2.2    接收标准    2
    2.3    资源和工具    2
    2.3.1    资源    2
    2.3.2    工具    2
    2.4    送测要求    2
    2.5    编号规则    2
    3.    测试种类及测试标准    3
    3.1    测试种类    3
    3.2    测试方法及标准    3
    3.2.1    功能测试    3
    3.2.2    业务测试    3
    3.2.3    压力测试    3
    3.2.4    安装测试    3
    3.2.5    验收测试    3
    4.    测试重点及顺序    4
    4.1    预测风险    4
    4.2    测试重点    4
    4.2.1    功能测试    4
    4.2.2    业务测试    4
    5.    暂停标准和再启动要求    5
    6.    测试任务和进度    6
    7.    测试提交物    7

     
    1.    概述
    1.1    产品简介
    本次开发是在销售助手一期的基础上进行的后续开发,包括新增客服功能模块、解决一期遗留的售前部分问题、完成必要的库房管理功能。二期结束后产品就成为一个比较完整的销售管理软件。
    1.2    范围
    本测试计划是针对<销售助手二期概要设计说明书>中规定内容的测试计划,包括:
        改进后的报价书
        改进后的客户关怀
        销售机会中新增加的客户反馈
        销售机会中新增加的客户组织分析
        销售机会中改进的竞争管理(待定)
        销售机会中改进的联系人
        改进后的产品和价格配制器
        新增的销售知识库
        新增的联系活动管理
        新增的客户请求模块
        新增的客服活动模块
        新增的客服合同模块
        新增的客服计划模块
        新增的客服知识库模块
        新增的完成关联任务模块
        公共部分新加或改进的日历浏览数据
        公共部分新加或改进的报表功能
        公共部分新加或改进的个人事务中心
    1.3    限制条件
    本测试计划受限于产品开发人员提交测试的内容和时间的事实。根据开发人员提交模块的实际情况,本计划会做出相应修改。
    1.4    参考文档 
    序号    名称    作者    备注
    1.        二期概要设计说明书       
    2.        客服物理模型       
    3.        日历模块详细设计说明       
    4.        个人事务中心模块详细设计说明       
    5.        客服产品缺陷详细设计说明       
    6.        客户请求详细设计说明       
    7.        客服活动详细设计说明       
    8.        产品和价格配制器详细设计说明       
    9.        完成关联任务详细设计说明       
    10.        客服合同详细设计说明       
    11.        客服计划详细设计说明       
    12.        客服报表详细设计说明       
    13.        客服知识库详细设计说明       
    14.        联系活动管理详细设计说明       
    15.    商品组装方案详细设计说明       
    16.    销售机会修改详细设计说明       
    17.    选择商品修改详细设计说明       
    18.    销售知识库详细设计说明       
    19.    客户关怀修改详细设计说明       













    2.    约定
    2.1    测试目标
    通过测试,达到以下目标:
        测试已实现的产品是否达到设计的要求,包括:各个功能点是否以实现,业务流程是否正确。
        产品规定的操作和运行稳定。
        Bug数和缺陷率控制在可接收的范围之内。
    2.2    接收标准
    本节所述的接收标准是指可测试的标准,这个标准以测试组接收测试为限。单元测试接收标准的详细规定参见文档三普销售助手——测试接收标准.doc。其余各阶段接收标准,以经过审核后的上一阶段测试报告为准,每一阶段停止标准的详细规定参见文档软件测试停止标准.doc。
    2.3    资源和工具
    2.3.1    资源
        测试服务器
    稳定的测试服务器,IP地址为:192.131.0.1。
        人员
    测试审核人一名,测试实施人员4 名。
    2.3.2    工具
        测试中使用的Bug管理工具为经过改进的Bug管理工具。
        自动化测试工具待定。
    2.4    送测要求
    销售助手开发人员提交的测试按以下要求进行:
    步骤    动作    负责人    相关文档或记录    要求
    1    打包、编译    开发人员    无    确认可测试
    2    审核并提交测试    Xx    经审核的上一级测试报告    测试报告xx审核并签字
    3    接收测试    测试人员    经xx审核并签字的上一级测试报告   
    4    开始测试    测试人员    Bug单、小结    测试小结个人编写个人的内容

    2.5    编号规则
    与本测试计划相关的编号规则如下:
        测试用例中的编号,功能名+界面名(每个字第一个汉语拼音大写)+编号
    例如:新增报价书第一个用例
    XZ BJS 0001
        测试用例文件命命名规则,模块名+测试用例
    例如:客服合同模块
    客服合同测试用例

























    3.    测试种类及测试标准
    3.1    测试种类
    计划完成以下类型测试
        功能测试
        业务测试
        压力测试
        安装测试
        验收测试
    3.2    测试方法及标准
    3.2.1    功能测试
    3.2.1.1 功能
    系统能按照设计要求实现模块的各个功能,数据应完整、界面美观、操作方便。
    具体可参照本文档测试重点及顺序部分。
    3.2.1.2  界面测试
      详细的界面测试可以参考界面测试.doc。
    3.2.1.3  数据项测试
          字母数字数据项是否能够正确回显,并输入到系统中?
          图形模式的数据项(如滑动条)是否正常工作?
        是否能够识别非法数据?
        数据输入消息是否可理解?
    3.2.1.4  帮助文档测试
        文档是否精确描述了如何使用各种使用模式?
        交互顺序的描述是否精确?
        例子是否精确?
        术语、菜单描述和系统响应是否与实际程序一致?
        是否能够很方便地在文档中定位指南?
        是否能够很方便地使用文档排除错误?
        文档的内容和索引是否精确完整?
        文档的设计(布局、缩进和图形)是否便于信息的理解?
        显示给用户的错误信息是否有更详细的文档解释?
        如果使用超级链接,超级链接是否精确完整?
    3.2.2    业务测试
    功能测试完成后进行业务测试,业务测试关注的要点是业务流程,及数据流从软件中的一个模块流到另一个模块的过程中的正确性。业务测试的方法及标准参考业务测试用例.doc。
    3.2.3    压力测试
    3.2.3.1 压力测试说明
    本次压力测试根据实际情况包含性能测试,重点模拟客户进行多用户测试。压力测试有一条8:2原则。及百分之八十的业务量在百分之二十的时间内输入。例如:正常每天有100条新数据,测试时在两小时内输入80条数据。我们无法知道用户的业务量,所以只有利用公司现有资源进行大量的数据量的测试。
    3.2.3.2 压力测试工具
        待定
    3.2.3.3 压力测试方法及标准
        压力测试的方法及标准参考压力测试计划.doc
    3.2.4    安装测试
    3.2.4.1 安装测试说明
    除了嵌入式软件之外,安装是软件产品实现其功能的第一步,没有正确的安装根本就谈不上正确的执行,因此对于安装的测试就显得尤为重要。
    3.2.4.2 安装测试方法及标准
        自动安装还是手工配置安装,测试各种不同的安装组合,并验证各种不同组
    合的正确性,最终目标是所有组合都能安装成功。
        安装退出之后,确认应用程序可以正确启动、运行。
        卸载测试和安装测试同样重要,如果系统提供自动卸载工具,那么卸载之后需检验系统是否把所有的文件全部删除,注册表中有关的注册信息是否也被删除。
        至少要在一台笔记本上进行安装测试,因为有很多产品在笔记本中会出现问题,尤其是系统级的产品。(有条件的情况下)
        安装完成之后,可以在简单地使用之后再执行卸载操作,有的系统在使用之后会发生变化,变得不可卸载。
        安装时间是否合理;
        对于客户服务器模式的应用系统,可以先安装客户端,然后安装服务器端,测试是否会出现问题。
        考察安装该系统是否对其他的应用程序造成影响,特别是Windows操作系统,经常会出现此类的问题。
    3.2.5    验收测试
    3.2.5.1 验收测试说明
    软件产品测试部对经过内部单元测试、集成测试和系统测试后的软件所进行的测试,测试用例采用业务流程测试用例。
    3.2.5.2 验收测试方法及标准
     参考三普软件验收测试规范.doc和软件测试停止标准.doc


















    4.    测试重点及顺序
    4.1    预测风险
    本次测试过程中,可能出现的风险如下:
        bug的修复情况
        模块功能的实现情况
        系统整体功能的实现情况
        代码的编写质量
        人员经验以及对软件的熟悉度
        开发人员、测试人员关于项目约定的执行情况
        人员调整导致研发周期延迟
        开发时间的缩短导致某些测试计划无法执行
    4.2    测试重点
    4.2.1    功能测试
    这里仅为测试重点的描述,具体测试方法以及内容请参见测试用例。
    4.2.1.1 商品组装方案
        是否使用右键和菜单实现了增、删、改功能
        增加零配件使用产品和价格配制器,查看零配件使用商品编辑窗口
        拖动功能是否正确
    4.2.1.2 销售机会修改
        销售机会中与联系人有关的地方是否已经关联
        增、删、改功能是否已经实现
        各列表中显示是否正确
        销售费用中右键菜单中增加生成费用单的功能是否实现
    4.2.1.3 产品和价格配制器
        搜索到的结果是否正确
        按类别和视图查询是否正确
    4.2.1.4 客户关怀
        右键的新增费用单功能是否实现
        列表显示是否正确
        新增数据到知识库是否正确
    4.2.1.5 联系活动管理
        浏览窗口是否正确
        编辑功能是否实现
        是否根据指定条件搜索
        新增数据到知识库是否正确
    4.2.1.6 销售知识库
        浏览时列表显示是否正确
        增、删、改功能是否已经实现
        能否编辑类别
        搜索是否正确
    4.2.1.7 选择商品的修改
        参考商品和价格配制器
    4.2.1.8 客服合同
        浏览窗口显示是否正确
        增、删、改功能是否已经实现
        能否按照指定条件搜索
        新增数据到知识库是否正确
    4.2.1.9 客服请求
        增、删、改功能是否已经实现
        浏览界面是否正确
        能否按照指定条件搜索
        新增数据到知识库是否正确
        选择界面是否可用
    4.2.1.10 客服计划
        右键和菜单的增、删、改功能是否已经实现
        浏览界面是否正确
        能否按照指定条件搜索
        明细选择界面能否使用
    4.2.1.11 客服知识库
        正常的增、删、改功能是否实现外,能否对类别增、删、改
        能否按类别进行浏览
        搜索界面显示是否正确
    4.2.1.12 产品缺陷
        增、删、改功能是否已经实现
        浏览界面是否正确
        能否按照指定条件搜索
        缺陷选择界面是否实现
    4.2.1.13 客服活动
        增、删、改功能是否进行了与之相关联的增、删、改
        右键功能和双击功能是否正确
        浏览窗口显示是否正确
        能否按照指定条件搜索
    4.2.1.14 客服报表
    待定
    4.2.1.15  日历
    待定
    4.2.1.16  相关数据查看
    待定
    4.2.1.17  个人中心
    待定
    4.2.2    业务测试
    这里只是描述了业务测试的大概情况,具体测试方法以及内容请参见业务测试用例。这里的业务测试包含模块之间的关系。
    4.2.2.1 销售机会修改
        增加费用时关联到费用单
        联系人关联到联系活动、客户计划决策人、组织分析
        与知识库关联
    4.2.2.2 客户关怀
        右键增加费用时关联到费用单
        与知识库关联
    4.2.2.3 联系活动管理
        与知识库关联
    4.2.2.4 客服合同
        销售合同中可以查看客服合同
        客服合同中可查看销售合同
        客服合同中选择销售合同
        与知识库关联
        自动导入商品
    4.2.2.5 客服请求
        客服请求的增、删、改使用客服计划编辑、选择界面
        新建客服计划
        查看相关客服计划
        查看相关客服活动
        新建产品缺陷
        增加数据到客服知识库
    4.2.2.6 客服计划
        查看项目来源、查看项目执行情况(相关的客服活动模块)
        查看产品缺陷
        查看客服请求
    4.2.2.7 产品缺陷
        新建客服计划项目
        查看相关客服计划项目
        查看相关客服活动
        增加数据到客服知识库
    4.2.2.8 客服活动
        费用单、收入单的生成
        选择、删除关联费用单
        查看客服请求
        查看产品缺陷
        查看计划明细
        新建产品缺陷
        增加数据到客服知识库
















    5.    暂停标准和再启动要求
        软件系统在进行单元、集成、确认、系统、安装、验收测试时,发现一级错误(大于等于1)、二级错误(大于等于2)暂停测试返回开发。
        软件项目需暂停以进行调整时,测试应随之暂停,并备份暂停点数据。
        软件项目在其开发生命周期内出现重大估算,进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份暂停或终止点数据。
        如有新的项目需求,则在原测试计划下做相应的调整。
        若开发暂停,则相应测试也暂停,并备份暂停点数据。。
        若项目中止,则对已完成的测试工作做测试活动总结。
        项目再启动时,测试进度重新安排或顺延。
































    6.    测试任务和进度
    测试阶段    测试任务    工作量估计    人员分配    起止时间
    第一阶段
    单元测试    客服合同、客服知识库、组装方案、联系活动、产品和价格配制器、产品缺陷用例设计    参考二期开发计划    参考二期开发计划    5.10至5.21
        客服合同、客服知识库、组装方案、联系活动、产品和价格配制器、产品缺陷单元测试    1. 联系活动、产品和价格配制器、产品缺陷
    2. 客服合同、客服知识库
    3. 组装方案    Xx    5.24至5.28
        客服活动、销售知识库、销售机会、客服计划、客户关怀修改、客户请求用例设计    参考二期开发计划    参考二期开发计划    5.31至6.4
        客服活动、销售知识库、销售机会、客服计划、客户关怀修改、客户请求单元测试    1. 客服计划、客户关怀修改、客户请求
    2. 销售知识库、销售机会
    3. 客服活动    Xx
        6.7至6.11
        单元测试BUG审核    5日    Xx    6.14至6.18
    第二阶段
    集成测试    1. 客服合同、客服知识库、组装方案、联系活动、产品和价格配制器
    2. 客服活动、销售知识库、销售机会、客服计划、客户关怀修改
    3. 日历、个人中心、客服报表、产品缺陷、客户请求                               5日    Xx    6.20至6.25
    根据实际任务情况人员做一定调整
    第三阶段
    业务测试    1.    业务流程测试
    2.    关注数据的准确性,特别是报表    8日    待定    6.27至7.8
    第四阶段
    性能测试    性能测试    2日    待定    7.8至7.9
    第五阶段
    帮助和用户手册测试    1. 帮助测试
    2. 用户手册测试    5日    Xx    7.12至7.16
    第六阶段
    审核BUG    审核单元测试以外的BUG    3日    Xx    7.19至7.21
    第七阶段
    安装测试    程序的安装过程    2日    Xx    7.22至7.23
    第八阶段
    验收测试    模仿用户使用过程的测试    5日    待定    7.26至7.31
    第九阶段
    附加测试            待定   
    测试总结    测试总结和分析、问题反馈    1日    测试人员    8.3













    7.    测试提交物
    本次测试完成后的提交物:
        测试计划
        测试用例
        测试Bug单
        测试小结
        测试分析报告
     
  • Android模拟器的基本操作

    inking 发布于 2010-01-12 15:03:45

    运行环境:

    1、安装JDK

    2、安装Android SDK

    建议:添加JDK、SDK的环境变量,将路径添加到path环境变量中。

    配置步骤:

    1、进入cmd命令行模式下,判断JDK和Android是否安装和配置成功

    (判断JDK是否安装好,请输入java -version,如果能返回java的版本信息,则安装成功)

    (判断Android是否安装好,请输入Android -h,如果能返回Android的版本信息,则安装成功)

    2、创建AVD、SDcard

    2.1创建AVD,cmd命令行模式下,输入

    >android create avd --name sdk_1_5_avd --target 2

    (sdk_1_5_avd 为创建的AVD的名字,可以取任意名字)

    2.2创建SDcard,cmd命令行模式下,输入

    >mksdcard 1024M c:\\\\sdcard.img

    (c:\\\\sdcard.img 为创建的SDcard的名字和路径,可以取任意名字)

    3、从android-sdk\\\\tools目录下的emulator.exe发送个快捷方式到桌面上,然后查看emulator.exe快捷方式的属性,在“目标”后面添加 -avd sdk_1_5_avd -sdcard c:\\\\sdcard.img的参数

    (sdk_1_5_avd为AVD文件

    c:\\\\sdcard.img为创建的SD卡文件)

    修改为C:\\\\android-sdk-windows-1.5_r2\\\\tools\\\\emulator.exe -avd test -sdcard c:\\\\sdcard.img

    4、双击运行桌面的emulator.exe快捷方式,则可以启动带SD卡的emulator.exe模拟器

    5、安装apk文件

    例如有个apk文件在E:\\\\software\\\\android\\\\Mine.apk

    在cmd命令行模式下,输入

    >adb install E:\\\\software\\\\android\\\\Mine.apk

    则会提示如下信息  pkg: /data/local/tmp/Mine.apk success

    6、在模拟器的Menu菜单栏里已经添加了刚才安装软件的快捷方式,点击即可运行该软件。

    7、上传文件到指定目录

    在cmd命令行模式下,输入

    >adb push E:\\\\music\\\\hello.mp3 /sdcard/

    (查看目录方法

    >adb shell  进入she\\\’ll命令模式下

    #ls  查看即可)

  • (转载)一个女孩从软件测试工程师到主管的成长历程

    walker1020 发布于 2013-02-22 10:02:21

     

    http://bbs.51testing.com/thread-894042-1-1.html

     

    燕子(化名)从前是学经济贸易的,由于对测试行业的强烈兴趣,毕业后在北京学校学习软件测试工程专业。工作不到一年的时间里,她已经从测试员升职到测试主管了。对于学习、工作,她积累了许多点点滴滴的经验,愿意与大家分享。
       走入测试行业:兴趣、知识
      说实话,我做测试工作的时间不是很长,学完软件测试工程师的课程后,到现在也就是一年多的时间吧,不过,我愿意自己学习和工作中积累起的这些点滴与大家分享。
      我走入测试行业完全是因为兴趣,兴趣产生学习和工作的热情,真的是一点都不假。从我选择走入这个行业,学习、工作,从测试员到测试主管,我都是快乐的,也很充实,很有成就感。
      我觉得,在决定走入测试行业后,就要在这方面多做准备和积累,首先要有坚实的测试理论基础,这些知识不仅是学习的时候要学的扎实,在以后的工作中还要继续 不断的完善。其次,要有一定的行业知识。毕业后找工作时,有做手机测试的,也有做外包测试的。我做的是ERP产品。大家都知 道,ERP(Enterprise Resource Planning)就是企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理 平台。我在学习测试专业前曾接触到ERP,所以,在毕业的找工作的时候就往这方面发展了。
      说到找工作,我觉得精心制作简历是一方面,同时还要有灵活的面试技巧。有时还要把在生活中学到的东西应用到面试中去。我记得我第一次去面试的时候比较凑 巧,面试前的头天晚上我在电视里刚好看到一个和面试有关的节目,结果,第二天在我自己去面试的时候就被我用到了。当时是在问到薪金待遇时。我觉得这是很多 人包括我自己在面试时都会觉得是比较头疼的问题,因为,说的多了,不行;说的少了,也不行。这时,你就要用一些技巧了。
      这时你可以先试探性的询问对方公司招聘这个职位的时候是怎么规定的?等你了解了这些后,你再就自己的技术能力来衡量相应薪金的比价,另外就是看这个公司 的实力,还有一点就是行业内这个职位的大致待遇情况。这样的话,在你说出你对薪金的要求的时候,如果,应聘的公司较小,但是还是存在一定发展空间而且你也 想试试的情况下,你要得工资低,对方会考虑到可能是你已大致了解了公司的实力所以才开出这样的条件,而不是你自己的技术不行;如果你看到这个公司的状况还 是比较好的,是家有一定实力的公司,这时,你可以适当抬高自己的身价。
      我的应聘还是比较顺利的,第一天应聘,第二天就上班了。我记得当时面试的时候大约谈了两个半小时,就一次性面试过关。另外我自己也比较引以自豪的是我是我们公司唯一一个在两个月之内转正的。
       初来乍到:熟悉环境,尽快融入
      开始进入公司的时候首先要熟悉公司的环境。在一些大的公司可能会给大家熟悉环境的时间,还会安排一些相应的培训什么的。我当时进的那家公司比较小,没有什么相关的培训,当初只是我们部门经理拿来一些相关的资料文档,让网管给配置工作环境。不过小公司有小公司的好处,他会很快让你介入到工作当中,给你分配任务。
      所以,你必须尽快的在一到两周之内熟悉公司各个方面的环境,尤其是人员环境。我觉得人际关系在整个公司里面也是很重要的一方面,夸张一点说甚至是比你的本职工作还要重要的。因为,掌握技术是你智商方面的问题,而与人交往就不是那么简单,因为我们的兴趣、爱好可能差别很大,性格也有内向和外向的,所以在进入 社会步入工作岗位后与人交往真的是很考验一个人。如果你在公司人际关系搞得好的话,工作各方面的协调顺利,工作的进展也会很顺利。
      还有就是要尽快的熟悉公司的测试环境,操作系统、开发语言、平台,接着就是要了解公司的产品,掌握产品相关的知识。像我们公司是自己研发的经销群、财务这 样的一个系统。你要了解公司产品的时候,可以向产品研发部或设计部要一些相关的说明文档,尽快的介入这个行业,熟悉自己要做的测试项目。说实话,我是学习 经贸专业的,不是学计算机的,所以我当初的时候有点晕,我就直接拿着产品自己在那儿摸索,自己写出一个产品使用说明。向这样的事情,可能在大的公司会有专 门的配选,在小公司可能就要自己学习产品了。不过,我觉得这样是挺锻炼人的,又发掘了你另一方面的潜能呢。
       尽可能多的参加研发部的会议
      员工间的技术交流。在我们公司像这样的会一周大概要有一到两次,大家相互交流工作进展情况,或者是一些相关的技术方面的交流。不一定是非常正式的,但我感觉这样的会议是非常有必要的。
      还有就是公司研发部召开的会议,你也要一定要也应该的介入、参加。我当初介入最早的是他们的研发意向,然后他的一些需求调研啊,还有其他的一些设计啊等等 一些会议。像这样的会议我觉得是一定要抽出时间来参加的,因为这确实是对你的工作有很大的帮助的。因为在立项会议上,你可以了解项目的可操作性,以及项目的特点;在调研会议上,了解需求,市场需求是开发的依据,也是测试的依据。同时一定要参加需求更改会议,以便你更好的进行测试工作。在这些都做到位后,我们就开始写测试计划了。
       测试计划
      写测试计划就像我们在课堂上学到的那些,测试计划、测试用例,开始我们的测试流程。这时就是具体应用的时候。写测试计划的时候要跟研发部要详细设计文档、 产品规格说明书和需求调研的说明(产品使用说明)这样的相关文档。如果在大公司的话,他的设计部会写产品使用说明或者是一些测试规约。还有就是一定要他的开发计划,因为你做每一步测试是根据开发进度来进行的,开发计划是必不可少的。
      最后根据上述的文档,从时间、内容、资源、所用工具,还有人力安排,这样一份简单的测试计划已经成形。像一般小的公司,他会对哪个人在哪天完成那项工作是 很关注的,像我们原来学的那种比较完整的文档,在这样小的公司是需要变通的,因为他们也没有很多的人力物力、没有很多的时间去看那样的文档。
      编写测试用例首先要根据产品的特点编写。你的产品的特点在产品没有成型之前,你肯定不是特别了解也不是特别清楚,但是你可以根据它的框架大概的给搭出来,你能想到的尽量给细化写到文档里面,然后在测试过程中不断的完善。
      如果在测试执行的过程中突然间发现一个比较好的测试用例,一定要及时给补充进去,你不给它补充上去是你的一大损失,因为你以后的工作中可能还会需要这样的 文档,或者以后接手你工作的人,他可能会看到这个文档,这对他以后的工作也会有很大的帮助。在大的公司有专门的测试设计人员来编写这些东西,在小公司就是 测试主管或者测试员编写。
      像我们公司从测试用例、测试计划、测试执行什么的都是我来做的。当初是因为公司比较小,我自己做,本来是给我招了一个助手,也就用了大概一两个月吧。我个人的感觉是除非你招特别熟练的,对行业,对测试技术各方面都比较熟悉的,一来就能上手工作的还行。如果不这样,招一个刚毕业的应届生,他对测试行业不是很 了解,而小公司人手本身就少,你根本就没有时间给他做培训,而你还要工作,也没有那么大的精力去手把手的教人家。
      在设计测试用例的时候要考虑周到,不要重复。就我的工作来说做ERP产品就是注意各个模块的借口以及数据测试。有好多的接口,比如说销售模块是和财务模块 在测试时是会发生重复的部分,这个要自己注意。行业性比较强接下来说执行测试。要按照测试用例来执行。你不能说做了测试用例而在工作的时候根本就不看,这 样对你的工作是没有帮助的。因为你按照测试用例来执行的话基本就是按照自己的思路来做,这样你走到哪一步心里都非常的清楚。这样最大的好处就是减少重复的 工作,可以提高工作效率。我想这点无论是在小公司还是大公司,还是就我们工作的本身都是很重要的。
      然后,最好是做测试记录,目的就是明确自己测试到哪里,以免重复工作。就我自己来说,我在做测试的时候每天都会做测试日记,一个是记录我今天发现了多少个bug,工作到哪一步了?做了哪些工作。我发现这个做测试记录是很有意思的。每天测出了多少个bug,我虽然在那个管理工具上录入了一遍,但是我还是要把它记录下来。
      我当初第一天去上班的时候,第一次接触到这个执行测试的时候,我记得特别清楚,我是找出了65个bug。我觉得这说明两个问题,一个是我工作特别认真,一个是研发部有问题确实是有问题。所以,你不要觉得搞研发的都很厉害,很牛啊,你会有点怵。
      当初我们公司也是联想、方正、惠普的这三个主力支柱,但是我没有觉得怵,虽然他们很自负。基本上很小的错误都能提出来,他们认为那根本不是bug。但是你 到了讨论会或技术交流会、评估会的时候可以提出来,因为这是你作为一个测试员最基础的必须的工作,也是你对工作认真负责的态度。
      和开发人员的沟通。这个是对测试人员很重要的。这个我在前面提到过,每个人不是独立的在做事情,工作中都是需要相互的配合,特别是测试工作,有问题,你需 要及时的和研发人员沟通。如果你连沟通都做不好,那么,你的测试工作根本就没有办法进行。在这当中,你要坚持自己的原则,就是对事不对人,因为,这个产品 有问题,它就是存在bug,那么,就要有人负责去修改。你不能说,对方是部门领导你就不敢坚持自己提出的问题。第二,就是要坚守其他的测试原则,这就是我 们在学习理论的时候所掌握的一些知识。因为,我们学习时的课程设计就是根据项目来设置的,很多东西基本和实际工作中相吻合。
      作为测试负责人,在测试工作中我给自己订了一个基本的工作流程,现在也就当作是部门的规章制度在执行。就是录入bug以后,我会在下面做bug描述,开发 人员是否要修改,为什么要修改,大概时间是多少,这样督促对方的话,会有利于工作的进度。不然,如果工作没有完成,就会出现相互推诿的现象。
      查出bug后就是督促开发人员修改bug。同时也要注意bug管理工具。自己要用好bug管理工具,也要督促开发人员用好bug管理工具。因为,有很多开发人员还都是比较懒的,他当时会跟你说,都有什么bug,你到我的机器上演示给我看不就行了吗?
      这是一个不好的习惯,也很费时间。所以,你一定要督促他们使用bug管理工具。这是我深有体会的,而且,还在两次较大的公司会议上提出,最终是被大家所接 受认同。大家都知道,一般开发的男同事较多,做测试的女孩子较多,你在提出问题的时候态度不要太强硬,在日常的工作中委婉的提醒他,大家一般都不会太为难 你的。不但工作解决了,同事间的关系也很融洽。
      接着就是测试报告的编写。这些我们在就业班的时候都学过,就是测试背景、内容、测试通过率。以及产品的优点、缺陷,还有你对项目的建议。这一切都做好了就是开测试评估会了。
       关于自动化测试我的个人意见
      我个人认为现在是自动化成风。现在很多的公司,无论是大是小,无论这公司有没有用过这个测试工具,他都会问你会用几种测试工具,会自动化测试吗?我当时去 面试的时候,也遇到这个问题,当时我首先问他的是,咱们公司做过手工以外的不管是性能啊还是功能其他测试吗?他们回答说没有。一个没有做好手工测试的产 品,是坚决不能用工具代替手工的。
      自动化测试是不能代替手工的。自动化测试用好了可以节省时间提高效率。但是如果你用不好,反而会增加自己的工作量。如果你的需求和界面一直在增加,那么自 动化也是用不起来的。我觉得适合自动化测试的公司,一个是产品对安全和性能要求严格的;一个可以有专人对教本文档进行维护的。像那些手工测试不过关,需求 经常变动,人员少,产品的GUI 经产改动的公司都不太适合用自动化测试。
      一不小心就整理了这么多点滴出来,还真没想到自己还是很能写的嘛。估计这和我在公司除了做测试工作,还做些其他工作有关。我说过,因为我们是小公司,所以,一些产品的使用说明、产品的安装说明,包括客服培训,都是由我来写的。在测试之余,一些和测试无关的工作我也会去做,比如测试制度的编写,OA 产品管理员,售前咨询顾问这样的工作。我想我就是这么锻炼出来的。

  • windows 性能监视器常用指标分析【转】

    没翅膀的飞鱼 发布于 2013-01-14 21:59:45

    怀疑内存不足时:
    方法1:
    【监控指标】:Memory Available MBytes ,Memory的Pages/sec, page read/sec, Page Faults/sec
    【参考值】:
    如果 Page Reads/Sec 比率持续保持为 5,表示可能内存不足。
    Page/sec 推荐00-20(如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题)。

    方法2:根据Physical Disk 值分析性能瓶颈
    【监控指标】:Memory Available MBytes ,Pages read/sec,%Disk Time 和 Avg.Disk Queue Length
    【参考值】:%Disk Time建议阈值90%
            当内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。

    怀疑内存泄漏时
       【监控指标】:Memory Available MBytes ,Process/Private Bytes和Process/Working Set,PhysicalDisk/%Disk Time
    【说明】: 
    Windows资源监控中,如果Process/Private Bytes计数器和Process/Working Set计数器的值在长时间内持续升高,同时Memory/Available bytes计数器的值持续降低,则很可能存在内存泄漏。内存泄漏应该通过一个长时间的,用来研究分析当所有内存都耗尽时,应用程序反应情况的测试来检验。

    CPU分析
    【监控指标】:
    System %Processor Time CPU,Processor %Processor Time CPU
    Processor%user time 和Processor%Privileged Time
    system/Processor Queue Length
    Context Switches/sec 和%Privileged Time
    【参考值】: 
    System/%Total processor time不持续超过90%,如果服务器专用于SQL Server,可接受的最大上限是80-85% ,合理使用的范围在60%至70%。
    Processor %Processor Time小于75%
    system/Processor Queue Length值,小于CPU数量的总数+1

    CPU瓶颈问题
    1:System/%Total processor time如果该值持续超过90%,且伴随处理器阻塞,则说明整个系统面临着处理器方面的瓶颈.
    注: 在某些多CPU系统中,该数据虽然本身并不大,但CPU之间的负载状况极不均衡,此时也应该视作系统产生了处理器方面的瓶颈.
    2:排除内存因素,如果Processor %Processor Time计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU 瓶颈。(内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。)

    造成高CPU使用率的原因:
    频繁执行程序,复杂运算操作,消耗CPU严重
    数据库查询语句复杂,大量的 where 子句,order by, group by 排序等,CPU容易出现瓶颈
    内存不足,IO磁盘问题使得CPU的开销增加

    磁盘I/O分析
    【监控指标】:PhysicalDisk/%Disk time,PhysicalDisk/%Idle Time,Physical Disk/ Avg.Disk Queue Length, Disk sec/Transfer
    【参考值】:%Disk Time建议阈值90%

    Windows资源监控中,如果% Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
    Processor%Privileged Time该参数值一直很高,且如果在 Physical Disk 计数器中,只有%Disk time 比较大,其他值都比较适中,硬盘可能会是瓶颈。若几个值都比较大, 那么硬盘不是瓶颈。若数值持续超过80%,则可能是内存泄露。如果 Physical Disk 计数器的值很高时该计数器的值(Processor%Privileged Time)也一直很高, 则考虑使用速度更快或效率更高的磁盘子系统。

    Disk sec/Transfer 一般来说,该数值小于15ms为最好,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或是硬盘的RAID方式了
  • SQL Server简单的增,删,改,查语句

    等待上手的新兵 发布于 2013-02-22 16:01:44

    创建一个namestudy的数据库

    create database study

    on  primary

    (

      name='study_data',

      filename='d:\study_data.mdf',

      size=5mb,

      maxsize=100mb,

      filegrowth=15%

    )

    log on

    (

      name='study_log',

      filename='d:\study_data.ldf',

      size=2mb,

      filegrowth=1mb

    )

     

     

    删除数据库

    use master 
    go
    if exists(select * from sysdatabases where name='study')
    drop database study
    go

    创建表(创建一个名为member的表)

    use study

    go

    create table member

    (

      name char(10) not null,

      stuno int primary key,

      number int not null

    )

     

     

    创建表(创建一个名为class的表)

    use study
    go
    create table class
    (
      grade char(10) not null primary key,
      teachername char(20),
      stuno int,
      address varchar(50)
    )

     

     

    表中插入一条数据

    insert into member(name,stuno,number) values('zhang',001,93)

    insert into class(grade,teachername,stuno,address) values('一年级','李玉刚',5,'南山区')

     

     

    表中插入多条数据

    insert into member(name,stuno,number)

    select 'wa',007,84

    union all

    select 'lw',009,67

     

    insert into class(grade,teachername,stuno,address)

    select '六年级','李玉刚',1,'sz'

    union all

    select '二年级','王力宏',7,'gz'

    union all

    select '七年级','周杰伦',10,'zg'

     

    从表中删除一条数据

    delete from member where stuno=3

     

    从表中删除多条数据

    delete from member where stuno in(4,9)

     

    修改表中的一条数据

    update member set name='xiao' where stuno=1

     

    内连接两个表
    select member.*,class.* from member join class on member.stuno=class.stuno

     

    查询学号为1的学生的所有信息

    select member.*,class.* from member join class on member.stuno=class.stuno where member.stuno=1

     

     

  • 【Shell脚本】Shell读取配置文件/etc/fstab中的每一行并处理

    smile033 发布于 2013-02-22 14:16:27

    【脚本要求】
    脚本读取/etc/fstab中的每一行并将其转换成大写字符形式。

    【基础知识】
    /etc/fstab用于设置开机时就自动挂载的文件系统,将想要在开机时就自动挂载的文件系统写入这个文件即可。

    【脚本清单】
    #!/bin/sh
    FILE=/etc/fstab
    #{ read line1
    #  read line2
    #  read line3
    #}< $FILE
    i=0
    while read line
    do
    echo "The line $i in $FILE is:"
    echo $line
    #将小写字母转成大写字母,此处可以联想对line变量进行其他处理
    Line=`echo $line | tr '[a-z]' '[A-Z]'`
    echo $Line
    i=$(($i+1))
    done <$FILE
    exit 0

    【知识点总结】
    1、{}中代码每次读取一行数据到变量line中
    2、while循环将/etc/fstab中所有的行依次读入到变量line中
    3、tr是管道命令,此处进行变量的替换,tr还可以进行字符的删除,例如,tr -d ':'
    4、此脚本的重点是读取配置文件的每一行并对其进行处理

    ================

    希望大家看过后,能给提出意见、建议和疑问,相信通过交流我们提高的更快。

  • 六年软件测试感悟

    bob123654 发布于 2012-09-03 09:00:13

      软件测试人员应该居安思危

      每当经济不好,公司业绩不好的时候,公司都可能进行裁员。首先裁的就是测试人员。因为测试人员的技术水平相对来说比较低,容易被替代,招起来也比较容易。公司往往先拿测试人员开刀。

      身为测试人员,虽然我们平常的工作大部分都比较安逸。但是千万不能温水煮青蛙。应该自强不息,要像开发人员一样,不断学习,提高自己的编程水平。这样就算被裁也能很快找到新的工作。

      测试人员应该比开发人员更熟悉业务需求

      测试人员的水平主要体现在测试用例的设计上。要设计出全面,覆盖广的测试用例,需要测试人员对自己所测试的项目的业务需求非常熟悉,甚至要比开发人员还要熟悉。

      如果是测试银行系统,通信行业,或者ERP软件。这些业务知识非常有用的,学习起来比较有激情。

      要做到精通业务需求谈何容易。

      1、要熟读功能需求文档,任何有疑问的地方都要去和PM确认。

      2、把自己当成最终用户,经常使用自己所测试的软件。模拟用户的行为。

      3、熟记软件的每个功能。

      假如倒霉碰到一些又没用,又繁琐的软件,真的是不想去学习它的业务(出了这个公司就再也用不到的业务)

      学会如何跟开发人员相处

      测试人员必须跟开发人员密切合作,所以跟开发人员搞好关系是相当重要的。

      1、和开发人员成为朋友。

      熟悉了干啥都方便

      2、不要打扰开发人员

      看到开发在聚精会神写代码的时候,千万不要去打扰人家。写代码需要集中精力,如果被打扰,就会中断思考。

      3、集中问问题。

      把需要问的问题都总结起来,集中起来问开发,这样能节省大量的时间。

      4、写好Bug,不被开发人员烦。

      如果开发人员看到一个Bug描述不清楚,还无法重现,他肯定会骂测试人员。所以测试人员一定要写好Bug,描述精确,简洁,没有歧义,详细简洁的重现步骤,加截图。

      测试人员应该懂一些基本的编程

      你的产品是用C#开发的,那测试人员应该有C#的入门知识。你测试web程序,你起码要了解HTML,CSS,Javascript,Jquery吧,否则你测了一两年web程序,都不知道这东西是怎么做的,悲剧了吧。

      只有懂代码你才能和开发人员交流,不被开发鄙视。

      测试人员搭建开发环境

       产品的代码是最好的学习资料了,我们不能总跟在开发屁股后面做测试,不能老是等开发build一个版本后,我们就测试这个版本,开发checkin了什 么代码,测试人员一点都不知道。偶尔我们应该了解下产品代码是怎么设计的,了解下开发人员是如何修复bug的。说不定编程水平高了,还能帮开发做 codereview。

      使用源代码工具把产品代码checkout到本机。经常看看代码,经常看看开发修复bug时候提交的代码。


      写文档是测试人员的核心能力

      我记得我以前的testlead说,之所以她能当lead,是因为她很会写文档发邮件。写文档需要总结归纳的能力,还要逻辑清晰。她非常擅长分 析几十页的Spec,写出几十页的测试计划。她还非常擅长汇总测试报告。每天将完整,清晰,漂亮的测试报告发给各个组,让公司所有的人都能清晰的看到测试 组的工作。

      在她的带领下,我们总结出很多文档,比如,“New hire checklist”,“on boarding traning”,测试工具使用的文档,等等。

      写多了博客后我发现我写文档能力提高了很多。

      测试后期应该做两天交叉测试

      交叉测试,就是指两个测试工程师,互相交换下测试的项目。这样做有很多好处。

      1、有利于找出bug,测试工程师测久了自己的项目,容易形成眼盲。会对一些Bug熟视无睹。

      2、有利于知识和业务共享,避免人员离职,请假,造成无人测试的情况。

      3、测试思想不一样,可以互相找出很多问题

      测试人员的瓶颈

      手动测试工作做个两三年,基本上就能掌握测试需要的大部分知识,如果没有爬到test lead的位置,很多人就感觉到发展瓶颈了,每天重复测试,学不到东西,很快就会对测试工作失去激情。

      学不到东西,技术水平低下,是测试这个行业最大的毛病。

      如何突破瓶颈?我也不知道。

      尽量实现自动化

      一点要抽时间尽量把自己的测试工作实现自动化,可以节省测试的时间,提高自己的技术水平,也可以避免老是重复测试。

      自动化测试VS手动测试

      现在很多公司招测试的要求越来越高,很多好公司招senior QA,都要求5年工作经验以上,掌握一门编程语言,有丰富的自动化测试经验。当然自动化测试的待遇也会比手动测试好很多。

      自动化是趋势,只会做手动测试的人,以后肯定会失去竞争力。

      自动化测试的技术和开发用到的技术相差太远

      以前很多同事想由测试转开发,现在几年过去了,还是没转成,他们原先想利用自动化测试的技术积累,转去做开发。哪知道自动化测试用到的技术跟开发用到的技术相比,实在是相差太远。

      测试转开发?难

      努力学习编码,然后用于测试,才是正道

      做测试最郁闷的是无法听懂开发人员讨论技术

      有时候跟开发人员一起开会,会议上开发人员都热烈讨论。而我做为测试人员基本上听不懂这群开发在说什么,根本插不上话。很多会议我甚至都没说过一句话。

      优秀的测试人员非常稀少

      想把测试做好非常不容易,优秀的测试人员需要很广的知识面,良好的沟通能力(不但要和开发人员和项目经理打交道,还要跟其他组的人交流)。丰富的测试经验,对测试工作有极大的热情,耐心。还需要测试人员有丰富的业务知识,还要会写代码。

      代码写得好的人,肯定就不会做测试,而是做开发去了。

      大部分的测试经理都是有开发背景的

      我发现我的几任上司都是由开发转来做测试的。 他们都是有几年的开发经验,然后不知道什么原因转行做测试经理了。他们既能开发又能测试,啥都会,能给手下的测试人员提供技术支持。

      假如一个测试经理啥技术都不懂,对内hold不住手下的人,对外其他组的人不鸟你。

      软件测试的确非常枯燥,需要花费大量精力

      不可否认测试工作需要耗费大量的精力,所以欧美才会把大量的测试职位外包给中国,一遍又一遍的重复测试,不停地执行测试用例, 测得天昏地暗,头发晕。

      我还记得我以前测试过一个程序的各个版本在Windows update中的升级,先安装老版本的程序,然后Windows update 重启后看看有没有升级,最后卸载。 然后又安装,又卸载。最后测的差点吐血。

      英语是测试人员的救命稻草

      技术上已经不如开发了。在英语上一定占有一些优势。

      同等的技术水平下,英语好的测试人员可以进外企,比一个英语不好的测试人员的待遇要高不少。

      尽量少用UI自动化测试,多使用单元测试,接口测试

      能找到bug的自动化测试,才是有用的,否则就是个噱头

      UI自动化测试比较不稳定,对于测试结果的分析也困难。而且UI改动也大。所以应该尽量多做一些底层的的自动化测试,比如ASP.NET MVC 中UI和逻辑分开了,针对逻辑的自动化测试就比较好做了。

      出自:http://www.cnblogs.com/TankXiao/archive/2012/08/27/2576962.html

  • loadrunner下载地址

    泡芙拓 发布于 2012-07-12 13:36:48

    有好多性能测试工具,下载了几个。不过网址没有及时记下了,现在也回忆不起来了。就记录了这两个的。

    LR9.1下载地址:http://kuai.xunlei.com/d/EJJCHBWHGWWZ

    LR9.5下载地址:http://kuai.xunlei.com/d/ERYHAPHUWHOX

    LR11下载地址:http://kuai.xunlei.com/d/ELUKJQXCPRRP
    LR11汉化地址:http://kuai.xunlei.com/d/EHRXNVSKIQTA

    webload下载地址http://www.webload.com/try-webload.aspx,要注册再下载,试用30天

  • Loadrunner视频教程汇总(转载)

    keepupwith 发布于 2012-07-04 11:30:55

    小布老师视频:
    测试工具概述,兼LoadRunner介绍 -1-4
    http://www.boobooke.com/v/bbk1046
    http://www.boobooke.com/v/bbk1046.zip
    http://www.boobooke.com/v/bbk1047
    http://www.boobooke.com/v/bbk1047.zip
    http://www.boobooke.com/v/bbk1048
    http://www.boobooke.com/v/bbk1048.zip
    http://www.boobooke.com/v/bbk1055
    http://www.boobooke.com/v/bbk1055.zip
    LR系列培训视频  - LoadRunner概述(上下)
    http://www.boobooke.com/v/bbk1059
    http://www.boobooke.com/v/bbk1059.zip
    http://www.boobooke.com/v/bbk1060
    http://www.boobooke.com/v/bbk1060.zip
    LR系列培训视频  - LoadRunner安装
    http://www.boobooke.com/v/bbk1061
    http://www.boobooke.com/v/bbk1061.zip
    LR系列培训视频  - 录制和回放测试脚本(1-3)
    http://www.boobooke.com/v/bbk1063
    http://www.boobooke.com/v/bbk1063.zip
    http://www.boobooke.com/v/bbk1064
    http://www.boobooke.com/v/bbk1064.zip
    http://www.boobooke.com/v/bbk1065
    http://www.boobooke.com/v/bbk1065.zip
    LR系列培训视频 - LoadRunner测试Tuxedo应用系统 1-4
    http://www.boobooke.com/v/bbk1067
    http://www.boobooke.com/v/bbk1067.zip
    http://www.boobooke.com/v/bbk1068
    http://www.boobooke.com/v/bbk1068.zip
    http://www.boobooke.com/v/bbk1071
    http://www.boobooke.com/v/bbk1071.zip
    http://www.boobooke.com/v/bbk1072
    http://www.boobooke.com/v/bbk1072.zip
    开源性能测试工具Curl-Loader快速实战 - 1
    http://www.boobooke.com/v/bbk1808
    http://www.boobooke.com/v/bbk1808.zip
    开源性能测试工具Curl-Loader快速实战 - 2
    http://www.boobooke.com/v/bbk1809
    http://www.boobooke.com/v/bbk1809.zip
    开源性能测试工具Curl-Loader快速实战 - 3
    http://www.boobooke.com/v/bbk1835
    http://www.boobooke.com/v/bbk1835.zip
    开源性能测试工具Curl-Loader快速实战 - 4
    http://www.boobooke.com/v/bbk1836
    http://www.boobooke.com/v/bbk1836.zip
    使用LoadRunner测试Oracle实例研究 - 1
    http://www.boobooke.com/v/bbk2159
    http://www.boobooke.com/v/bbk2159.zip
    使用LoadRunner测试Oracle实例研究 - 2
    http://www.boobooke.com/v/bbk2170
    http://www.boobooke.com/v/bbk2170.zip
    使用LoadRunner测试Oracle实例研究 - 3
    http://www.boobooke.com/v/bbk2171
    http://www.boobooke.com/v/bbk2171.zip
    小强作品:
    性能测试常见用语-性能测试基本概念剖析
    http://www.boobooke.com/v/bbk1577
    1. lr目录分析
    http://www.boobooke.com/v/bbk1574
    2.1 lr界面分析
    http://www.boobooke.com/v/bbk1735
    http://www.boobooke.com/v/bbk1735.zip
    2.2 lr界面分析
    http://www.boobooke.com/v/bbk1736
    2.3 lr界面分析
    http://www.boobooke.com/v/bbk1737
    3 lr常用术语
    http://www.boobooke.com/v/bbk1620
    4. hpwebtours 分析
    http://www.boobooke.com/v/bbk1762
    5 lr录制测试脚本
    http://www.boobooke.com/v/bbk1763
    6. lr回放测试脚本
    http://www.boobooke.com/v/bbk1764
    7. HTML和URL比较
    http://www.boobooke.com/v/bbk1771
    8. lr自动关联
    http://www.boobooke.com/v/bbk1778
    9. lr测试脚本的增强方法
    http://www.boobooke.com/v/bbk1772
    10. run time settings
    http://www.boobooke.com/v/bbk1782
    11. lr脚本编写实践过程
    http://www.boobooke.com/v/bbk1781
    小强作品:12 错误处理
    http://www.boobooke.com/v/bbk1776
    小强作品:13 脚本调试
    http://www.boobooke.com/v/bbk1777
    小强作品:14java虚拟用户
    http://www.boobooke.com/v/bbk1901
    小强作品:15 调用dll
    http://www.boobooke.com/v/bbk1900
    小强作品:16 lr录制sql脚本
    http://www.boobooke.com/v/bbk1526
    http://www.boobooke.com/v/bbk1526.zip
    小强作品: HP Web Tour网站介绍
    http://www.boobooke.com/v/bbk1762
    http://www.boobooke.com/v/bbk1762.zip
    小强作品:LoadRunner常用术语介绍
    http://www.boobooke.com/v/bbk1620
    http://www.boobooke.com/v/bbk1620.zip
    小强作品:LoadRunner之Portmapping技术
    http://www.boobooke.com/v/bbk2163
    小强作品:性能分析基础知识
    http://www.boobooke.com/v/bbk2162
    小强作品: LoadRunner之结果分析
    http://www.boobooke.com/v/bbk2144
    小强作品:LoadRunner之Portmapping技术
    http://www.boobooke.com/v/bbk2163
    小强作品: LoadRunner之面向目标场景
    http://www.boobooke.com/v/bbk2168
    小强作品: LoadRunner之第一部分基础知识完结篇
    http://www.boobooke.com/v/bbk2201
     
    小歪作品:LoadRunner参数化之研究
    http://www.boobooke.com/v/bbk1617
    http://www.boobooke.com/v/bbk1617.zip
    小歪作品:使用NMON监控系统性能
    http://www.boobooke.com/v/bbk1609
    http://www.boobooke.com/v/bbk1609.zip
    小歪作品:LoadRunner关联之研究
    http://www.boobooke.com/v/bbk1586
    http://www.boobooke.com/v/bbk1586.zip
    雪鹰老师:LoadRunner中如何手工编写ftp测试脚本
    http://www.boobooke.com/v/bbk1349
    http://www.boobooke.com/v/bbk1349.zip
    雪鹰老师:LoadRunner中web_reg_find和web_find两个函数的区别。本系列讲座一共两集
    http://www.boobooke.com/v/bbk1333
    http://www.boobooke.com/v/bbk1333.zip
    http://www.boobooke.com/v/bbk1334
    http://www.boobooke.com/v/bbk1334.zip


  • LoadRunner从入门到精通【zhuan】

    li_feibo 发布于 2012-06-19 23:03:35

    《零基础学习软件测试》之LoadRunner从入门到精通

    0性能测试常见用语
    http://www.boobooke.com/v/bbk1577
    1 lr目录分析
    http://www.boobooke.com/v/bbk1574
    2.1 lr界面分析
    http://www.boobooke.com/v/bbk1735
    2.2 lr界面分析
    http://www.boobooke.com/v/bbk1736
    2.3 lr界面分析
    http://www.boobooke.com/v/bbk1737
    3 lr常用术语
    http://www.boobooke.com/v/bbk1620
    4 hpwebtours 分析
    http://www.boobooke.com/v/bbk1762
    5 lr录制测试脚本
    http://www.boobooke.com/v/bbk1763
    6 lr回放测试脚本
    http://www.boobooke.com/v/bbk1764
    7 HTML和URL比较
    http://www.boobooke.com/v/bbk1771
    8 lr自动关联
    http://www.boobooke.com/v/bbk1778
    9 lr测试脚本的增强方法
    http://www.boobooke.com/v/bbk1772
    10 run time settings
    http://www.boobooke.com/v/bbk1782
    11 lr脚本编写实践过程
    http://www.boobooke.com/v/bbk1781
    12 错误处理
    http://www.boobooke.com/v/bbk1776
    13 脚本调试
    http://www.boobooke.com/v/bbk1777
    14java虚拟用户
    http://www.boobooke.com/v/bbk1901
    15 调用dll
    http://www.boobooke.com/v/bbk1900
    16 lr录制sql脚本
    http://www.boobooke.com/v/bbk1526
    17 创建负载测试场景
    http://www.boobooke.com/v/bbk2145
    18 面向目标的场景
    http://www.boobooke.com/v/bbk2168
    19 分析场景
    http://www.boobooke.com/v/bbk2144
    20 lr手动关联
    http://www.boobooke.com/v/bbk2161
    21 配置端口映射
    http://www.boobooke.com/v/bbk2163
    22 性能分析基础知识
    http://www.boobooke.com/v/bbk2162
    23 Load Runner 8.0 Student Workbook介绍
    http://www.boobooke.com/v/bbk2991
    24 性能测试与调优概览
    http://www.boobooke.com/v/bbk3511
    25 Loadrunner再谈
    http://www.boobooke.com/v/bbk3510
    26 LR使用指南-第一部分基础知识完结篇
    http://www.boobooke.com/v/bbk2201

  • LR中参数设置【转】

    Structure0101 发布于 2012-07-30 13:32:56

    LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值,这个过程叫做参数化。

    参数化过程比较简单,参数化时复杂的是对参数属性的设置。主要是以下两个属性的组合。
    select  next row 中有三个选项:  Sequential(顺序读取)、Random(随机读取)、Unique (唯一)
    update the value 中也有三个选项:  Each Occurrence(每次遇到 )、  Each iteration(每次迭代  )、 Once(一直 )
    这两个属性可以有九种组合方式,每种方式都不一样。接下来我们就用一个小实例来验证一下每种取值方式的效果。
    录制一个lr自带实例WebTours的定单脚本。脚本中将出发城市与到达城市均参数化一下。参数化后还需做个关联(这个就重点说了)保证回放脚本成功。
    设置10个用户并发持续加载的场景(参数文件中有10个数据),用默认设置均可。即每15秒加载两个用户,持续时间为5分钟,每30秒停止5个用户。
    然后并发跑脚本。
    以下为9种组合的测试结果:
    (1)sequential       Once
    十个用户 每个用户取值均一样,,每个用户的所有迭代中的取值均一样。
    第一个用户执行了5次迭代,每次迭代均取得第一个参数。
    第二个用户也执行了5次迭代,每次迭代均取的第一个参数。
    第三个。。第四个。等等十个用户均一样。
    (2)unique      once
    十个用户 每个用户取值都唯一,每个用户的所有迭代中的取值均一样。
    第一个用户执行了5次迭代,每次迭代均取第一个参数;
    第二个用户执行了5次迭代,每次迭代均取第二个参数;
    第三个。。。第四个。。。依此类推。
    第十个用户执行了5次迭代,每次迭代均取第十个参数。
    (3)Random  Once
    十个用户,每个用户为随机取值,每个用户的所有迭代中的取值均一样。
    第一个用户执行了5次迭代,每次迭代均取第三个参数;
    第二个用户执行了5次迭代,每次迭代均取第七个参数;
    第三个。。。第四个。。。依此类推十个用户随机取值。
    (4)Sequential      Each iteration
    十个用户,每个用户每次迭代取一个新值。
    第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。
    第二个用户,第一次迭代,取第一个参数;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。
    第三个。。第四个。。。依此类推。
    (5)Unique     Each iteration
    由于只设置了十个参数,运行过程中报参数不足的错误。
    第一个用户,第一次迭代,取第一个参数;第二次迭代报错。。。第十次迭代报错。
    第二个用户,第一次迭代,取第二个参数;第二次迭代报错。。。第十次迭代报错。
    第三个。。第四个。。依此类推。
     
    如果修改为100个参数则:
    第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。
    第二个用户,第一次迭代,取第十一个参数;第二次迭代,取第十二个参数 。。。。第十次迭代,取第二十个参数。
    第三个。。第四个。。。依此类推。
    (6)Random     Each Iteration
    十个用户,每个用户每次迭代均随机去一个值。
    第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第四个参数 。。。。第十次迭代,取第七个参数。
    第二个用户,第一次迭代,取第三个参数;第二次迭代,取第二个参数 。。。。第十次迭代,取第一个参数。
    第三个。。第四个。。。依此类推。
    (7)Sequential        Each ocurrance
    十个用户,每个用户每次遇到均取一个值。
    第一个用户,第一次迭代,每次遇到顺序取一个值;第二次迭代,按顺序接着取值。。。。。
    第二个用户,第一次迭代,每次遇到顺序取一个值(从第一个参数开始);第二次迭代,按顺序接着取值。。。。。
    依此类推。
    (8) unique          Each occurrance
    十个用户,每个用户每次遇到均取一个不同的值。
    参数列表中要有足够的参数。
     
    (9) Random       Each Occurrance
    十个用户,每个用户每次遇到随机取一个值。
    第一个用户,第一次迭代,每次遇到随机取一个值,第二次迭代,随机再取值。。。。。
    第二个用户,第一次迭代,每次遇到随机取一个值,第二次迭代,随机再取值。。。。。
    依此类推。
     
    总之,主要区分 sequential 、Unique、Random 的区别。
    sequential为顺序取,每个用户均从第一个参数开始取值。
    Unique为唯一,每个用户取值均不同。
    Random 为随机,每个用户均随机取值。
  • LoadRunner脚本编写之一

    bob123654 发布于 2012-07-23 09:12:59

      性能测试工程师要懂代码么?答案是必须的。好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了。还有非计算机专业出身的测试员,所以对代码望都比较望而生畏。

       好多人认为loadrunner只支持C语言(包括我之前也一直这么认为),因为loadrunner默认的脚本是C语言的,其实它支持目前所有主流的 语言,如:Java User、VB User、VB script. User 、Javascript. User、Mmicrosoft .NET等,总有一款适合你的吧,最起码C语言是必修课吧。

      对于编写loadrunner脚本的态度

       现在有一辆自行车放在你的面前,你为显示自己体力很好,每天走路去上班。我骑车只要半小时,而你走路却要2小时,我们的目的是一样的,你是为了让人说你 牛呢,还是让人说你傻呢?当然自行车不是万能的,比如,上班的地点在山上,自行车跟本上不去,自然走路就是唯一的选择了。

      所以,对于loadrunner脚本,能录制的部分就录制改,不能录制的就手写,但前提是我们要会写脚本。

      认识loadrunner脚本

      Loadrunner自带了一个小飞机订票系统

      我们先启动 Start Web server 服务,如果启动成功,桌面右下角会有一个绿色的X ,然后打开浏览器访问http://127.0.0.1:1080/WebTours/

      下面是我们loadrunner录制一个登录过程。

    Action()
    {
       
        web_url("WebTours",
            "URL=http://127.0.0.1:1080/WebTours/",
            "Resource=0",
            "RecContentType=text/html",
            "Referer=",
            "Snapshot=t1.inf",
            "Mode=HTML",
            LAST);

        lr_rendezvous("集合点");

        lr_start_transaction("登陆时间");
        web_submit_form("login.pl",
            "Snapshot=t2.inf",
            ITEMDATA,
            "Name=username", "Value=test1", ENDITEM,
            "Name=password", "Value=123456", ENDITEM,
            "Name=login.x", "Value=59", ENDITEM,
            "Name=login.y", "Value=5", ENDITEM,
            LAST);
        lr_end_sub_transaction("登陆时间",LR_ABORT);

        return 0;
    }  

      上面的代码中有大括号“{}”,返回函数“ return ”,如果你有编程基础的不会说对于上面的代码一点都看不懂。只是上面的脚本没有使用我们平时用到的东西,如定义常量、变量,分支(if....else if....)、循环语句(for...)

      下面我们动手写个小程序,一个乘法运算,求员工工资的总合。

    #define COUNT 100
    #define SALARY 4000

    Action()
    {
        int total;
        total = COUNT * SALARY;
        lr_output_message("100人合计薪资支出为:%d",total);

        return 0 ;
    }

      #define COUNT 100

      #define SALARY 4000     定义一个全局常量。

      lr_output_message    输出语句,这个和我们所学的C 语言不一样,在C中我们会用println 来输入结果。

      运行结果:

    ..........
    Starting iteration 1.
    Starting action Action.
    Action.c(9): 100人合计薪资支出为:400000    ----这里将运行结果打印输出
    Ending action Action.
    Ending iteration 1.
    ..........

      一个有意思的小程序

      当然了,上面的程序太鸡肋了,我只是想表达,loadrunner 也可以运行我们上学时学的那些普通的小程序。他们是一样一样的。

      下面看个比较有意思的小程序,通过随即数和分支(选择)语句switch来完成

    Action()
    {
        int randomnumber;  
        randomnumber = rand() % 3+1;

        switch (randomnumber) {
       
        case 1:
            {
                lr_rendezvous("访问百度集合点");

                web_url("www.baidu.com",
            "URL=http://www.baidu.com/",
                    "Resource=0",
                        "RecContentType=text/html",
                        "Referer=",
                        "Snapshot=t12.inf",
                        "Mode=HTML",
                        EXTRARES,
                        "Url=http://s1.bdstatic.com/r/www/img/i-1.0.0.png", ENDITEM,
                        "Url=/favicon.ico", "Referer=", ENDITEM,
                        "Url=http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif", ENDITEM,
                        LAST);

                return 0;

            }

        case 2:
            {
                lr_rendezvous("访问谷歌集合点");

                web_url("www.google.com.hk",
                        "URL=http://www.google.com.hk/",
                        "Resource=0",
                        "RecContentType=text/html",
                        "Referer=",
                        "Snapshot=t10.inf",
                        "Mode=HTML",
                        EXTRARES,
                        "Url=http://ssl.gstatic.com/gb/images/b_8d5afc09.png", ENDITEM,
                        "Url=/images/srpr/logo3w.png", ENDITEM,
                        "Url=/extern_chrome/749e1ce3c3e5f171.js", ENDITEM,
                        "Url=/images/swxa.gif", ENDITEM,
                        "Url=/favicon.ico", "Referer=", ENDITEM,
                        "Url=http://ssl.gstatic.com/gb/js/sem_0e1289051da7e9e3697c2025d9490acd.js", ENDITEM,
                        "Url=http://www.google.com/textinputassistant/tia.png", ENDITEM,
                        LAST);

                return 0;

            }
        case 3:
            {
                lr_rendezvous("访问有道集合点");

                web_url("www.youdao.com",
                        "URL=http://www.youdao.com/",
                        "Resource=0",
                        "RecContentType=text/html",
                        "Referer=",
                        "Snapshot=t7.inf",
                        "Mode=HTML",
                        EXTRARES,
                        "Url=http://shared.ydstatic.com/oxo/p/pic.gif", ENDITEM,
                        "Url=http://shared.ydstatic.com/oxo/p/logo.png?1", ENDITEM,
                        "Url=http://shared.ydstatic.com/oxo/p/nv_line.gif", ENDITEM,
                        "Url=http://shared.ydstatic.com/r/2.0/p/pic.gif", ENDITEM,
                        LAST);

                return 0;
            }
            
        }
       
    }


      上面的程序,我分别录制了百度、谷歌、有道访问三个网的首页的代码,我想在运行脚本时,随机的去访问其中一个网站,如何做呢?我们通过随机函数,随机出1~3之间的整数,根据随机来的结果,然后执行switch语句中的代码。

      下面来看我的结果

      为了查看脚本结果更清晰,我在每一段脚本前面加了一个集合点“lr_rendezvous”函数。

    Starting iteration 1.
    Starting action Action.
    Action.c(57): Rendezvous 访问有道集合点
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/pic.gif" (specified by argument number 9)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/logo.png?1" (specified by argument number 11)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/nv_line.gif" (specified by argument number 13)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/r/2.0/p/pic.gif" (specified by argument number 15)      [MsgId: MMSG-26577]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/yd.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/nav.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/suggest.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): web_url("www.youdao.com") was successful, 30006 body bytes, 3347 header bytes, 39 chunking overhead bytes      [MsgId: MMSG-26385]
    Ending action Action.
    Ending iteration 1.

      通过脚本读取文件

      为了增加语言的强大,高级语言不可以把一个程序的实现从头到尾写到文件里,这样可读性和维护很差,也无法实现团队发,肯定会相互调用接口函数库等。当然,读取文件也是常用的操作,下面我们来看一个读取文件的例子。

      我们事先准备一个文件test.txt ,里面随便你输入些什么内容吧!

    Action()
    {

        int count,total=0;
        char buffer [50];
        long file_stream;
        char * filename = "C:\\test.txt";  //读取文件的存放位置

        //判断是否可以读取文件
        if((file_stream =fopen(filename,"r"))==NULL)  
        {
            lr_error_message("不能打开%s文件!",filename);

            return -1;
        }

        while(!feof(file_stream))
        {
            count=fread(buffer,sizeof(char),50,file_stream);  //从文件中读取50个字符
            total=total+count;   //字符个数计数
            if(total>=50)
            {
                fclose(file_stream);  //关闭文件
                lr_output_message("文件的前50字符:%s",buffer);
                break;  //退出循环
            }

        }
        return 0;
    }

      上面的代码中我加了注释,这里没必须再做解释。

      下面来看我的运行结果:

    Starting iteration 1.
    Starting action Action.
    Action.c(24): 文件的前50字符:01234567890123456789012345678901234567890123456789
    Ending action Action.
    Ending iteration 1.

      LoadRunner难么?对于有编程基础的一点都不都。我们所要做的就是熟悉LoadRunner的常用函数罢了。

  • LoadRunner参数化详解 (转载)

    junjunsh2010 发布于 2012-07-23 10:30:41

       参数化的方法

    选中要参数化的内容。

    方法一,右键---Replace with a new parameter

    方法二,菜单【insert----new Parameter

    Parameter Properties (参数属性对话框)----我们的参数化设置就通过这个对话框完成。

    参数化的方式

    其实参数化得方式有很多种,这里简述几种比较常见人方式。其实方式略有不同,但其结果都是将数据添加进来。

    1、 编辑数据

    点击Create Table 会出现表格,在表格,再次点击Edit with Notepad ,然后会打开一个记事本,我们可以对记事本进行添加数据

    2、 添加txt数据文件

    点击File输入框后面的“Browse..”按钮,找到本地的txt数据文件,进行添加就可以了。

    需要注意的是,文件里面的数据不要乱写,每条数据一行,不然会读取有误。

    3、 数据库添加数据

    在很多情况下,我添加的数据不是十条二十条,也不是一百两百,如果还通过上面的两种方式添加,我想会是一件非常纠结的事情。所以我们可以通过数据库将数据导入。你是否疑虑数据库的数据怎么弄,数据库的数据生成非常简单,可以写一段简单的代码生成,也可以通过数据库数据生成工具来完成

    点击Date Wizard 打开连接数据库向导。

    这里先告诉你有这种方式,后面再介绍具体操作。^_^

    4、 其他类型设置

    如果我们要参数化的不是一个文件,比如是特定的日期时间,可以从Parameter type 列表中进行选择

    这里可以设置日期时间格式,循环迭代方式,不过除了file类型外,其他用的不多。其他类型用法我也不是十分了解。

    参数化之间的关联

      前面我们已经对用户名进行了参数化,或对密码进行了参数化,这样是不是脚本就能正常跑了,不好说。因为用户名和密码不是一一对应关系,每次运行脚本时取的用户名和密码没有对应上的话肯定就会出问题。

    假设,我们已经对用户名已经进行了参数化,参数名为【username】,下面设置密码参数化与用户名关联。

    点击“Properites…”会打开编辑用户名参数化窗口。File列表框中,刚才保存用户名信息的文件"username.dat"。

    点击“Add Column,添加新的一列信息,用于放置密码。

    点击“Edit with Notepad”再次编辑参数化数据文件,使用户名密码建立一一对应关系。

    完成之后,我们已经成功对用户名和密码进行了参数化,并且让用户名和密码形成了对应关系。

    数据分配与更新方式

      脚本设置完参数化,脚本运行的每一遍所取的参数化的值都不一样,那么这个值按照个什么情况来取呢?会有很多种方式

    Select next row【选择下一行】:

    顺序(Sequential:按照参数化的数据顺序,一个一个的来取。

    随机(Random:参数化中的数据,每次随机的从中抽取数据。

    唯一(Unique:为每个虚拟用户分配一条唯一的数据

    Update value on【更新时的值】:

    每次迭代(Each iteration) :每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。

    每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。

    只取一次(once) :参数化中的数据,一条数据只能被抽取一次。(如果数据轮次完,脚本还在运行将会报错)

    上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。

    Select Next Row

    【选择下一行】

    Update Value On

    【更新时的值】

    Replay Result

    【结果】

    顺序(Sequential

    每次迭代(Each iteration)

    结果:分别将15条数据写入数据表中

    功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

    如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

    顺序(Sequential

    每次出现(Each occurrence)

    结果:分别将15条数据写入数据表中

    功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

    如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

    顺序(Sequential

    只取一次(once)

    结果:表中写入15条一模一样的数据。

    功能说明:每次迭代都取参数化文件中第一行的数据。

    随机(Random

    每次迭代(Each iteration)

    结果:表中写入15条数据,但可能有重复数据出现

    功能说明:每次从参数化文件中随机选择一行数据进行赋值

    随机(Random

    每次出现(Each occurrence)

    结果:表中写入15条数据,但可能有重复数据出现

    功能说明:每次从参数化文件中随机选择一行数据进行赋值

    随机(Random

    只取一次(once)

    结果:表中写入15条相同数据

    功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。

    唯一(Unique

    每次迭代(Each iteration)

    自动分配块大小

    结果:分别将15条数据写入数据表中

    功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

    注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。

    唯一(Unique

    每次出现(Each occurrence)

    步长为1

    结果:分别将15条数据写入数据表中

    功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

    注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values”属性来判断当数据不够时的处理方式

    Abort Vuser:中断虚拟用户

    Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。

    Countinue with last value:继续用最后一条数据

    唯一(Unique

    只取一次(once)

    结果:表中写入15条相同数据

    功能说明:每次都取参数文件中的第一条数据进行赋值

     http://www.cnblogs.com/fnng/archive/2012/06/22/2558900.html

  • LR测试小结

    xuyanhui0713 发布于 2012-07-24 16:39:32

    1.LR运行时
    connection time out
    需要进行option的请求时间的调整;
    每次在进行压力测试时,首先要保证测试环境的网络环境干净,测试环境正常干净,达到最优配置;
    linux中进行内存使用的查看 free -m
                        硬盘使用 df -m
    清楚缓存  echo 3>/proc/sys/vm/drop_caches
    (为什么我没有去优化环境,是因为已经知道环境有很多人使用)
    成功的解决方法:
     
    在负载生成器的注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters里,有如下两个键值:
    TcpTimedWaitDelay
    MaxUserPort
    1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
    2,也可以把MaxUserPort调大(如果这个值不是最大值的话)。
    2.在回放脚本过程中,LR自动关闭的问题,该IE版本与LR的兼容问题。
      打开IE的‘internet选项‘,在‘高级’里面把‘启用第三方浏览器扩展’前面的勾去掉
      每次重起电脑以后它会又恢复的,记的重起了就把它去掉
      以上方法没有用,可以继续采用其他方式进行录制脚本,但是在使用QTP录制脚本时必须使用启用第三方 浏览器扩展,否
      则不能正确使用QTP录制脚本。

     
  • Loadrunner笔记

    skybold 发布于 2012-07-28 18:55:37

    一、Loadrunner组件
    1、Virtual user generator
    2、Controller
    3、Analysis
    4、Load Generator
    二、Loadrunner操作流程
    1、VuGen模拟用户行为
    1)选择协议
    2)选择录制模式
    3)选择浏览器
    4)开始录制
    5)添加事物、检查点、集合点、思考时间
    6)进行参数化、关联
    7)在Run-time-setting中设置迭代次数、日志、思考时间、网络带宽等
    2、Controller
    1)选择脚本
    2)设定用户数
    3)设置负载机
    4)设置脚本运行方式
    5)设置集合点
    6)设置Run-time-setting
    7)设置IP欺骗
    8)设置服务器监控计数器
    9)执行脚本
    3、Analysis
    1)查看分析结果,查看响应时间、吞吐量、执行用户人数等
    2)使用网页细分功能进行分析
     
     
  • Loadrunner破解

    sunxl_840603 发布于 2012-08-01 14:32:37

    我安装的是Loadrunner11.0,安装后,提示只能用10天,10天后将过期,再网上查了下,发现网上资料真不少,感谢各位高手的帮忙,我也总结了下,作为记录,给大家作为参考。
     
    首先下载附件的两个dll文件,覆盖到lr安装目录下bin文件里,一般目录为C:\Program Files\HP\LoadRunner\bin
     
    然后执行附件的lr删除注册表的工具
     
    再允许LoadRunner,输入license,我在网上找的license,下面这两个都可以:
    golba-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI
    web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB
     
    然后再运行lr就可以用啦:)
Open Toolbar