谁有allandall or none orders字体,发我一下,或者提供一个下载链接也行,谢谢!

人人网,中国领先的实名制SNS社交网络。加入人人网,找到老同学,结识新朋友。
您的用户名和密码不匹配
为了账号安全,已向您的邮箱: 发送了一封确认信,请通过邮件内链接登录。
您的账号已停止使用,如有疑问请联系
您的账号由于以下某种原因需要解锁才能登录
删除过账号
长时间没有登录网站
第三方登录
其它账号登录:
人人移动客户端下载ljhappy1 日志(2) - SUNNY TESTING - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
灿烂的阳光,苦涩的生活,认真做,你能行!
Transactions(用户事务分析)用户事务分析是站在用户角度进行的基础性能分析1、Transation Sunmmary(事务综述)对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。2、Average Transaciton Response Time(事务平均响应时间)“事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。3、Transactions per Second(每秒通过事务数/TPS)“每秒通过事务数/TPS”显示在场景运行的每一秒钟,每个事务通过、失败以及停止的数量,使考查系统性能的一个重要参数。通过它可以确定系统在任何给定时刻的时间事务负载。分析TPS主要是看曲线的性能走向。将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。例:当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈。4、Total Transactions per Second(每秒通过事务总数)“每秒通过事务总数”显示在场景运行时,在每一秒内通过的事务总数、失败的事务总署以及停止的事务总数。5、Transaction Performance Sunmmary(事务性能摘要)“事务性能摘要”显示方案中所有事务的最小、最大和平均执行时间,可以直接判断响应时间是否符合用户的要求。重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围内,需要进行原因分析。6、Transaction Response Time Under Load(事务响应时间与负载)“事务响应时间与负载”是“正在运行的虚拟用户”图和“平均响应事务时间”图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。此图可以查看虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。7、Transaction Response Time(Percentile)(事务响应时间(百分比))“事务响应时间(百分比)”是根据测试结果进行分析而得到的综合分析图,也就是工具通过一些统计分析方法间接得到的图表。通过它可以分析在给定事务响应时间范围内能执行的事务百分比。8、Transaction Response Time(Distribution)(事务响应时间(分布))“事务响应时间(分布)”显示在场景运行过程中,事务执行所用时间的分布,通过它可以了解测试过程中不同响应时间的事务数量。如果系统预先定义了相关事务可以接受的最小和最大事务响应时间,则可以使用此图确定服务器性能是否在可以接受的范围内。
来自塞北云
这两天又温习了一下SQL,好久没有动过了。。。人都锈竇了哦。
第一种分钟自增:
declare @i int,@a varchar(20),@c datetimeset @i=0 set @a=''set @c=' 10:06:01'while @i&=20begin
&&& insert T_create_time&&&& select left(@a,9)+right('000'+ltrim(@i),3),&&&&&&&&&&&& dateadd(minute,1,@c)&&&&&&& &&&&& set @i=@i+1&&&&& set @c=dateadd(minute,1,@c)end
=============运行结果如下
&&&&&&& 10:07:01
&&&&&&& 10:08:01
&&&&&&& 10:09:01
第二种分钟自增:
declare @i int,@a varchar(20),@c datetimeset @i=0 set @a=''set @c=' 10:06:01'while @i&=20begin
&&& insert T_create_time&&&& select left(@a,9)+right('000'+ltrim(@i),3),&&&&&&&&&&&& dateadd(minute,1,@c)&&&&&&& &&&&& set @i=@i+1&&&&& set @c=@c+1end
=============运行结果如下
&&&&&&& 10:07:01
&&&&&&& 10:07:01
&&&&&&& 10:07:01
利用这种方法可以为数据库中的某个表插入大量数据库,可以做大数据量的测试工具打好前提,如果涉及多张表的话,可以考虑用触发器同时对多表进行操作。 :)
若表t_run_users中有字段user_no , user_name ,create_date 三字段,其中主键user_no中值为(12位),user_name的值为0000,(应该不为主键也可用此办法)
declare @i int,@a varchar(20)set @i=1 set @a='1001'while @i&=200begin&&& insert T_Run_Users&&&& select left(@a,4)+right(''+ltrim(@i),8),&&&&&&&&&&&&right('0000'+ltrim(@i),4),&&&&&&&&&&&&&' 09:22:39'&&&&& set @i=@i+1end
扫行出来的结果如下
------------------
user_no&&&&&&&&&&&&& user_name&&&&&&&& create_date
&&&&&&&&&0000&&&&&&&&&&&&&& 09:22:39
&&&&&&&&&0001&&&&&&&&&&&&&& 09:22:39
&&&&&&&&&0002&&&&&&&&&&&&&& 09:22:39
1.To disable any reference to these checkings, set $tlCfg-&config_check_warning_mode = SILENT;解决方案,找到config.inc.php,找到“Cfg-&config_check_warning_mode”,修改如下:/** $tlCfg-&config_check_warning_mode = 'FILE';&&& &&& */$tlCfg-&config_check_warning_mode = 'SILENT';&&
2.在IE中访问,弹出Testlink页面为英文,修改配置文件使其默认为中文;打开C:"xampp"htdocs"testlink下的config.inc.php文件;查找$g_default_language = 'en_GB';修改为$g_default_language = 'zh_CN';3.汉化TestLink:下载utf8版本的strings.txt替换C:\xampp\htdocs\testlink\locale\zh_CN目录下的strings.txt即可;
更改第一个站点的根目录:在文件Apache2.2\conf\httpd.conf中查找 DocumentRoot 属性,将后面的路径改为你的主站点的路径,如:D:\www\web1 为第二个Apache服务建立配置文件:复制并重命名httpd.conf为web2.conf(举个例子而已,也可以叫my.conf等等),修改web2.conf中的Listen 8080(原来为80)、ServerName localhost:8080(原来为80)、DocumentRoot "D:/www/web2" (原来为web1) 添加第二个Apache服务:Apache安装目录的bin子目录下,使用如下命令将Apache安装为Windows NT服务:httpd.exe -k install -n "服务名" -f "d:\apache2.2\conf\web2.conf" 其他的命令: 将Apache安装为Windows NT服务: httpd -k install 指定服务的名称,当你在同一机器上安装多个Apache服务时,你必须为它们指定不同的名字。 httpd -k install -n "服务名" 为不同名称的服务使用不同的配置文件,则安装时需要指定配置文件: httpd -k install -n "服务名" -f "c:\files\my.conf" 如果你使用的是第一个命令,也就是除 -k install 外没有其它命令行参数,那么被安装的服务名称将是:Apache2 ,配置文件将使用conf\httpd.conf 。 移除一个Apache服务: httpd -k uninstall 使用下述命令移除特定名称的Apache服务: httpd -k uninstall -n "服务名" 通常,启动、重启、关闭Apache服务的方法是使用Apache Service Monitor工具,另外也可以使用控制台命令:NET START Apache2 和 NET STOP Apache2 或者通过Windows服务控制面板。在启动Apache服务之前,你应当使用下面的命令检查一下配置文件的正确性: httpd -n "服务名" -t 你可以通过命令行开关来控制Apache服务。要启动一个已经安装的Apache服务,可以使用: httpd -k start 要停止一个已经安装的Apache服务,可以使用: httpd -k stop 或 httpd -k shutdown 要重启一个运行中的Apache服务,强制它重新读取配置文件,可以使用: httpd -k restart
1,& 用 mysqldump 命令进行备份: &&& 在命令提示符窗口(注意不是 MySQL 的 MySQL Command Line Client 窗口)中输入, &&& C:\Program Files\MySQL\MySQL Server 5.0\bin&mysqldump -hlocalhost -uroot -proot&&&&&&& temp& & temp_.sql &&& 或:C:\Program Files\MySQL\MySQL Server 5.0\bin&mysqldump -hlocalhost -u root -proot&&& temp & temp_.sql &&& 或:C:\Program Files\MySQL\MySQL Server 5.0\bin&mysqldump -h localhost -u root -proot& temp & temp_.sql &&& 先进入到 MySQL安装目录的bin目录下(便于存放生成的*.sql文件,也可以直接打开命令提示符窗口,默认存放路径为"C:\Documents and Settings\Administrator&").其中-h,-u两个参数名与参数值之间可用或不用空格分隔, 但-p参数的参数名与参数值之间是一定不能加空格的,也可以这样输入: &&& C:\Program Files\MySQL\MySQL Server 5.0\bin&mysqldump -hlocalhost -uroot -p temp & temp_.sql &&& Enter password: root &&& 在后面再输入密码也可以成功. &&& -h指出备份的数据库在本机,-u指出用户名,-p指出密码,temp为数据库名,后面可具体指定备份的数据表. &&& 结果生成的 temp_.sql 文件会自动存在C:\Program Files\MySQL\MySQL Server 5.0\bin目录下. &&&
2,& 用mysql 命令进行恢复: &&& C:\Program Files\MySQL\MySQL Server 5.0\bin&mysql& -hlocalhost& -uroot& -proot&&&&&&&&& temp& & temp_.sql &&& 输入此命令后,数据库中的数据将恢复到备份时的数据. &&& 注意:恢复时, temp 必须存在,数据库可空.恢复时会自动删除要恢复的表,再重新创建,插入数据.
Mantis没有使用过,有待调查。现在讲Windows下安装 TestLink1.7.5(和bugzilla运行于同一服务器上)
在安装Testlink之前,需要首先安装Apache, PHP, Mysql支持软件包,我选择的是XAMPP,XAMPP集成了这些,特别方便。
1 访问 下载并安装最新的XAMPP版本。比如我下载的是xampp1.7.1版本
2 安装“xampp”采用默认方式,一直“下一步”操作即可;
3 启动“Apache”,“Mysql”服务(修改mysql的root用户的密码为123123),如下图所示:
下载Testlink1.7.5
5 安装TestLink1.7.5
(1)& 将TestLink解压缩到D:\xampp\htdocs,命名为testlink;
(2)& 在IE中访问;
(3)& 点击“New Installation”安装TestLink;
(4)& Mysql数据库和TestLink数据库访问权限设置;
Database Type Mysql
Database host&& localhost
//配置访问Mysql的地址;
Database login&& root
Database password 123123
//配置访问mysql的权限;
TestLink DB login root
TestLink DB passwaord 123123
//配置访问Testlink数据库的权限 ;
(6) 点击“同意许可协议”,继续&
(7)安装完成,点击最后一行的(Please Click Me!)
(8)在Testlink第一次安装成功后,默认管理员帐户为admin,密码admin,使用其登录
(9)登录Testlink成功后,在菜单栏中的Personal中更改admin的密码,然后注销;(10)删除C:\xampp\htdocs\testlink\install目录;
(11)在IE中访问,弹出Testlink页面为英文,修改配置文件使其默认为中文;
&打开C:"xampp"htdocs"testlink下的config.inc.php文件;&查找$g_default_language = 'en_GB';&修改为$g_default_language = 'zh_CN'; &&&&
(12)汉化TestLink:目前xampp\htdocs\testlink\locale\zh_CN目录下的strings.txt已经汉化完成,只要修改步骤(11)的配置文件即可;
(13)修改配置文件config.inc.php,解决日期乱码问题;
打开xampp\htdocs\testlink下的config.inc.php文件;
在配置文件的最下方,添加如图所示内容’zh_CN’ =&,'zh_CN' =& "%Y-%m-%d %H:%M:%S"
(13)登录,即为已经汉化完成的TestLink主界面
(14)关于TestLink的配置、使用将在下篇中列举。
Windows 下安装Bugzilla整理本文将介绍搭建Windows下的Bugzilla服务器端的全部步骤。欢迎大家来信交流共同学习。Bugzilla下载并安装Bugzilla下载Bugzilla: 本文是以Bugzilla2.20版本为例子进行安装,同时可以在网站上找到相应的汉化包,感谢汉化作者为我们提供的方便与支持。下载解压缩到C:\Bugzilla ,保证Bugzilla文件放在C:\Bugzilla文件夹下,避免解压时生成多余的文件夹。MySQL下载 MySQL 4.1.x下载MySQL "Windows Essentials"版本: 不推荐使用MySQL 5.x安装可以选择典型(Typial)安装MySQL,笔者安装时选择的自定义安装,并将安装目录设置为:C:\mysql。创建Bugs数据库和用户使用mysql 命令行创建,打开开始菜单-运行,输入cmd,打开命令行窗口进入C:\mysql\bin&需要输入的蓝字命令如下:C:\mysql\bin&mysql --user=root -p mysqlEnter password: ********Welcome to the MySQL monitor. C or \g.Your MySQL connection id is 15 to server version: 4.0.20a-debugType '' or '\h' for help. Type '\c' to clear the buffer.mysql& Query OK, 1 row affected (0.11 sec)mysql& grant all privileges on bugs.* to
identified by 'shorelew';Query OK, 0 rows affected (0.03 sec)mysql&Query OK, 0 rows affected (0.00 sec)mysql& quitByeC:\mysql\bin&C:\mysql\bin&mysql --user=root -p mysqlEnter password: ********Welcome to the MySQL monitor. C or \g.Your MySQL connection id is 15 to server version: 4.1.11-ntType '' or '\h' for help. Type '\c' to clear the buffer.mysql& set password for
= OLD_PASSWORD('shorelew');Query OK, 0 rows affected (0.00 sec)mysql& quitByeC:\mysql\bin&ActiveState Perl下载ActiveState Perl 5.8.1 或更高的版本下载ActiveState Perl 5.8.1 或更高的版本: 安装Perl将ActiveState Perl 安装到C:\Perl创建Temp目录创建 C:\Temp 目录确保系统在访问时进行更改。安装 ModulesBugzilla 需要安装一些perl模块,请确保你的计算机能连接到internet,所有需要模块都在进入DOS命令行按如下蓝字操作,在安装到Template-Toolkit时注意按提示填写完成的安装路径。C:\&ppmPPM - Programmer's Package Manager version 3.1.Copyright (c) 2001 ActiveState Corp. All Rights Reserved.ActiveState is a devision of Sophos.Entering interactive shell. Using Term::ReadLine::Stub as readline library.Type 'help' to get started.ppm& rep add Bugzilla Repositories:[1] ActiveState PPM2 Repository[2] ActiveState Package Repository[3] Bugzillappm& install AppConfig====================Install 'AppConfig' version 1.52 in ActivePerl 5.8.7.813.====================Downloaded 50508 bytes....Successfully installed AppConfig version 1.52 in ActivePerl 5.8.7.813.ppm& install TimeDate====================Install 'TimeDate' version 1.16 in ActivePerl 5.8.7.813.====================Downloaded 19235 bytes....Successfully installed TimeDate version 1.16 in ActivePerl 5.8.7.813.ppm& install DBI====================Install 'DBI' version 1.43 in ActivePerl 5.8.7.813.====================Downloaded 508164 bytes....Successfully installed DBI version 1.43 in ActivePerl 5.8.7.813.ppm& install DBD-mysql====================Install 'DBD-mysql' version 2.9002 in ActivePerl 5.8.7.813.====================Downloaded 178803 bytes....Successfully installed DBD-mysql version 2.9002 in ActivePerl 5.8.7.813.ppm& install Template-Toolkit====================Install 'Template-Toolkit' version 2.13 in ActivePerl 5.8.7.813.====================Downloaded 530770 bytes....Successfully installed Template-Toolkit version 2.13 in ActivePerl 5.8.7.813.ppm& install MailTools====================Install 'MailTools' version 1.67 in ActivePerl 5.8.7.813.====================Downloaded 46881 bytes....Successfully installed MailTools version 1.67 in ActivePerl 5.8.7.813.ppm& install GD====================Install 'GD' version 2.07 in ActivePerl 5.8.7.813.====================Downloaded 363039 bytes....Successfully installed GD version 2.07 in ActivePerl 5.8.7.813.ppm& install Chart====================Install 'Chart' version 2.3 in ActivePerl 5.8.7.813.====================Downloaded 58641 bytes....Successfully installed Chart version 2.3 in ActivePerl 5.8.7.813.ppm& install GDGraph====================Install 'GDTextUtil' version 0.86 in ActivePerl 5.8.7.813.====================Downloaded 19178 bytes....Successfully installed GDTextUtil version 0.86 in ActivePerl 5.8.7.813.====================Install 'GDGraph' version 1.43 in ActivePerl 5.8.7.813.====================Downloaded 71764 bytes....Successfully installed GDGraph version 1.43 in ActivePerl 5.8.7.813.ppm& install PatchReader====================Install 'PatchReader' version 0.9.4 in ActivePerl 5.8.7.813.====================Downloaded 9558 bytes....Successfully installed PatchReader version 0.9.4 in ActivePerl 5.8.7.813.ppm& install Net::LDAP====================Install 'Convert-ASN1' version 0.19 in ActivePerl 5.8.7.813.====================Downloaded 26326 bytes....Successfully installed Convert-ASN1 version 0.19 in ActivePerl 5.8.7.813.====================Install 'perl-ldap' version 0.33 in ActivePerl 5.8.7.813.====================Downloaded 188548 bytes....Successfully installed perl-ldap version 0.33 in ActivePerl 5.8.7.813.====================Install 'Net-LDAP-Express' version 0.11 in ActivePerl 5.8.7.813.====================Downloaded 7693 bytes....Successfully installed Net-LDAP-Express version 0.11 in ActivePerl 5.8.7.813.ppm&Apache这里推荐使用Apache 作为运行Bugzilla 的web引擎。如果你想将Bugzilla 运行在IIS上,可以参考:下载 Apache 2.x下载Apache HTTP Server version 2.x 或更高版本: 安装默认安装即可,假设安装的路径是C:\Program Files\Apache Group 它将安装在C:\Program Files\Apache Group\Apache2。如果你已经运行了IIS,你在安装时配置apache运行在不同于80端口,否则你将不能访问。如果你的windows系统未安装IIS选择默认安装即可。允许Apache 可写创建如下目录:• C:\Bugzilla\data• C:\Program Files\Apache Group\Apache2\logs• C:\Temp配置httpd.conf文件在记事本中编辑 C:\Program Files\Apache Group\Apache2\conf\httpd.conf将httpd.conf和以下相应的内容比较,对照蓝色字体内容修改原有的内容。## Listen: Allows you to bind Apache to specific IP addresses and/or# ports, instead of the default. See also the &VirtualHost&# directive.## Change this to Listen on specific IP addresses as shown below to# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)##Listen 12.34.56.78:80Listen 80## DocumentRoot: The directory out of which you will serve your# documents. By default, all requests are taken from this directory, but# symbolic links and aliases may be used to point to other locations.#DocumentRoot "C:/Bugzilla"## Each directory to which Apache has access can be configured with respect# to which services and features are allowed and/or disabled in that# directory (and its subdirectories).## First, we configure the "default" to be a very restrictive set of# features.#&Directory /&Options FollowSymLinksAllowOverride None&/Directory&## Note that from this point forward you must specifically allow# particular features to be enabled - so if something's not working as# you might expect, make sure that you have specifically enabled it# below.### This should be changed to whatever you set DocumentRoot to.#&Directory "C:/Bugzilla"&## AddHandler allows you to map certain file extensions to "handlers":# actions unrelated to filetype. These can be either built into the server# or added with the Action directive (see below)## To use CGI scripts outside of ScriptAliased directories:# (You will also need to add "ExecCGI" to the "Options" directive.)#AddHandler cgi-script. .cgi## This should be changed to whatever you set DocumentRoot to.#&Directory "C:/Bugzilla"&## Possible values for the Options directive are "None", "All",# or any combination of:# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews## Note that "MultiViews" must be named *explicitly* --- "Options All"# doesn't give it to you.## The Options directive is both complicated and important. Please see# # for more information.#Options Indexes FollowSymLinks ExecCGI## AllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords:# Options FileInfo AuthConfig Limit#AllowOverride All## Controls who can get stuff from this server.#Order allow,denyAllow from all## Tell Apache to use Perl to execute .cgi#ScriptInterpreterSource Registry-Strict&/Directory&You also should add index.cgi to the DirectoryIndex list.## DirectoryIndex: sets the file that Apache will serve if a directory# is requested.## The index.html.var file (a type-map) is used to deliver content-# negotiated documents. The MultiViews Option can be used for the# same purpose, but it is much slower.#DirectoryIndex index.html index.html.var index.cgi在注册表中创建HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command 编辑默认值为C:\Perl\bin\perl.exe -T## The location and format of the access logfile (Common Logfile Format).# If you do not define any access logfiles within a &VirtualHost&# container, they will be logged here. Contrariwise, if you *do*# define per-&VirtualHost& access logfiles, transactions will be# logged therein and *not* in this file.##CustomLog logs/access.log common重新启动 Apache最后,在命令行中重新启动Apache。C:\&net stop apache2The Apache2 service is stopping..The Apache2 service was stopped successfully.C:\&net start apache2The Apache2 service is starting.The Apache2 service was started successfully.C:\&配置 Bugzillachecksetup.pl如下在命令行中操作,将自动创建localconfig文件。C:\&cd bugzillaC:\bugzilla&perl checksetup.plChecking perl modules ...Checking for AppConfig (v1.52) ok: found v1.55Checking for CGI (v2.93) ok: found v3.10Checking for Data::Dumper (any) ok: found v2.121_04Checking for Date::Format (v2.21) ok: found v2.22Checking for DBI (v1.38) ok: found v1.48Checking for File::Spec (v0.84) ok: found v3.05Checking for File::Temp (any) ok: found v0.16Checking for Template (v2.08) ok: found v2.13Checking for Text::Wrap (v) ok: found vChecking for Mail::Mailer (v1.65) ok: found v1.67Checking for Storable (any) ok: found v2.13The following Perl modules are optional:Checking for GD (v1.20) ok: found v2.16Checking for Chart::Base (v1.0) ok: found v2.3Checking for XML::Parser (any) ok: found v2.34Checking for GD::Graph (any) ok: found v1.43Checking for GD::Text::Align (any) ok: found v1.18Checking for PatchReader (v0.9.4) ok: found v0.9.5Most ActivePerl modules are available at Apache's ppm repository.A list of mirrors is available atYou can add the repository with the following command:ppm rep add apache Checking user setup ...This version of Bugzilla contains some variables that you may wantto change and adapt to your local settings. Please edit the file'./localconfig' and rerun checksetup.plThe following variables are new to localconfig since you last ranchecksetup.pl: index_html cvsbin interdiffbin diffpath create_htaccesswebservergroup db_driver db_host db_pass db_sock db_checkC:\bugzilla&编辑 localconfig打开C:\Bugzilla\localconfig 找到上一个步骤创建的localconfig文件用记事本编辑它,内容如下,请对照是否有蓝字所标出的内容,如没有显示如下内容请在localconfig文件中修改。## How to access the SQL database:#$db_host = "localhost"; # where is the database?$db_port = 3306; # which port to use$db_name = "bugs"; # name of the MySQL database$db_user = "bugs"; # user to attach to the MySQL database## Enter your database password here. It's normally advisable to specify# a password for your bugzilla database user.# If you use apostrophe (') or a backslash (\) in your password, you'll# need to escape it by preceding it with a \ character. (\') or (\\)#$db_pass = 'shorelew';checksetup.pl再次运行checksetup.pl 。这时将创建数据库相关表和初始化Bugzilla。操作如下。C:\bugzilla&perl checksetup.plChecking perl modules ...Checking for AppConfig (v1.52) ok: found v1.55Checking for CGI (v2.93) ok: found v3.10Checking for Data::Dumper (any) ok: found v2.121_04Checking for Date::Format (v2.21) ok: found v2.22Checking for DBI (v1.38) ok: found v1.48Checking for File::Spec (v0.84) ok: found v3.05Checking for File::Temp (any) ok: found v0.16Checking for Template (v2.08) ok: found v2.13Checking for Text::Wrap (v) ok: found vChecking for Mail::Mailer (v1.65) ok: found v1.67Checking for Storable (any) ok: found v2.13The following Perl modules are optional:Checking for GD (v1.20) ok: found v2.16Checking for Chart::Base (v1.0) ok: found v2.3Checking for XML::Parser (any) ok: found v2.34Checking for GD::Graph (any) ok: found v1.43Checking for GD::Text::Align (any) ok: found v1.18Checking for PatchReader (v0.9.4) ok: found v0.9.5Most ActivePerl modules are available at Apache's ppm repository.A list of mirrors is available atYou can add the repository with the following command:ppm rep add apache Checking user setup ...Creating data directory (./data) ...Creating graphs directory...Creating .htaccess...Creating Bugzilla/.htaccess...Creating ./data/.htaccess...Creating ./template/.htaccess...Creating ./data/webdot/.htaccess...Precompiling templates ...Checking for MySQL Server (v3.23.41) ok: found v4.0.20a-debugCreating table user_group_map ...Creating table series_data ...Creating table longdescs ...Creating table dependencies ...Creating table components ...Creating table keywords ...Creating table cc ...Creating table duplicates ...Creating table groups ...Creating table flagtypes ...Creating table profiles ...Creating table products ...Creating table bugs_activity ...Creating table series_categories ...Creating table keyworddefs ...Creating table fielddefs ...Creating table group_control_map ...Creating table profiles_activity ...Creating table group_group_map ...Creating table user_series_map ...Creating table bugs ...Creating table series ...Creating table versions ...Creating table flagexclusions ...Creating table logincookies ...Creating table watch ...Creating table bug_group_map ...Creating table votes ...Creating table attachments ...Creating table flags ...Creating table milestones ...Creating table tokens ...Creating table flaginclusions ...Creating table quips ...Creating table namedqueries ...Creating initial dummy product 'TestProduct' ...Populating duplicates table...Creating duplicates directory...Migrating old chart data into database ...Adding group tweakparams ...Adding group editusers ...Adding group creategroups ...Adding group editcomponents ...Adding group editkeywords ...Adding group admin ...Adding group editbugs ...Adding group canconfirm ...Looks like we don't have an administrator set up yet. Either this is yourfirst time using Bugzilla, or your administrator's privileges might haveaccidently been deleted.Enter the e-mail address of the administrator: You entered . Is this correct? [Y/n] yEnter the real name of the administrator: shorelewEnter a password for the administrator account: shorePlease retype the password to verify: shore is now set up as an administrator account.C:\bugzilla&参数配置现在就可以通过登陆Bugzilla,至此你就能使用等待以久的Bugzilla缺陷跟踪系统了,经过漫长的安装后,如果能和你一起分享安装成功的喜悦,可以写信给我噢!偶的MSN是:。打开登陆页面后,使用上面你输入的邮箱和密码就可以登陆了,在登陆页面右下角点选Parameters设置。Bugzilla其他信息Bugzilla汉化包在里能找到相应的bugzilla汉化包,本文的例子包使用的是2.20版本的。在包内有汉化的相关内容,很容易就能汉化。本文内容相关为了能更好的安装和调试Bugzilla,推荐下列网站,以供参考。
如果还有一些疑问,关于windows下在安装Bugzilla更详尽的内容请参考:
一.安装mysql
双击安装文件
进入MySql安装界面,点击next
选择custom,点击next,(注意选择custom)
更改安装目录为C:\MySQL,点击next
目录没有问题,点击install进行MySql的安装,安装很快
选skipsing-up跳过注册帐号,点击next,完成安装
点击finish,完成MySql的安装,选中configure the mysql server now马上对MySQL进行配置
选择standard configuration 标准配置,点击next
选中,点击next
设置root密码,点击next
执行配置,点击execute
执行成功 点击finish
接下来是对Mysql进行一些配置,需要建立BUG库,及使用该库的用户
开始——运行cmd
cd c:\mysql\bin
mysql -u root –p
输入刚安装Mysql时设置的密码
我们用root帐号成功登陆mysql
之后需要创建数据库,就是bugzilla所需要使用的数据库
输入创建语句
create database B
之后为数据库创建用户名Bugs,密码是bugs,则执行如下命令:
grant all privileges on bugs.* to
identified by 'bugs';
set password for
= OLD_PASSWORD('bugs');
二. 安装ActiveState Perl 5.8.8及perl模块
1.ActiveState Perl 5.8.8的安装只要默认就可以
2.点击d:\perl\bin&ppm-shell.bat
&的安装包地址有:
针对版本5.8的有
http://www.bribes.org/perl/ppm, for the www.bribes.org Perl 5.8 repository
http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58 (ActivePerl Build & 819) / http://theoryx5.uwinnipeg.ca/ppms/ (ActivePerl Build &= 819), for the uwinnipeg Perl 5.8 repository
http://trouchelle.com/ppm/, for the trouchelle Perl 5.8 repository
http://ppm.tcool.org/archives/, for the ppm.tcool.org Perl 5.8 repository
针对版本5.10的有
http://www.bribes.org/perl/ppm, for the www.bribes.org Perl 5.10 repository
http://trouchelle.com/ppm10/, for the trouchelle Perl 5.10 repository
http://cpan.uwinnipeg.ca/PPMPackages/10xx/, for the uwinnipeg Perl 5.10 repository
这几个地址有比较多的PPM安装包,也就是Perl模块的发布版本,直接可以用ActivePerl PPM 包管理器安装的
到的D;/perl/bin的目录下使用perl-shell.bat
执行 perl add bugzilla 命令
cmd到D:/bugzilla执行:perl checksetup.pl
把没有安装的perl模块进行安装,安装完成的话,会出现自动创建表的信息。
三 安装apache2.2.8-win32安装版apache2.2.8-win32
默认安装即可,假设安装的路径是C:\Program Files\Apache Group 它将安装在C:\Program Files\Apache Group\Apache2。如果你已经运行了IIS,你在安装时配置apache运行在不同于80端口,否则你将不能访问。如果你的windows系统未安装IIS选择默认安装即可。允许Apache 可写创建如下目录:• C:\Bugzilla\data• C:\Program Files\Apache Group\Apache2\logs• C:\Temp配置httpd.conf文件在记事本中编辑 C:\Program Files\Apache Group\Apache2\conf\httpd.conf
修改里面的黄色部分
## Listen: Allows you to bind Apache to specific IP addresses and/or# ports, instead of the default. See also the &VirtualHost&# directive.## Change this to Listen on specific IP addresses as shown below to# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)##Listen 12.34.56.78:80Listen 80
## DocumentRoot: The directory out of which you will serve your# documents. By default, all requests are taken from this directory, but# symbolic links and aliases may be used to point to other locations.#DocumentRoot "d:/Bugzilla"## Each directory to which Apache has access can be configured with respect# to which services and features are allowed and/or disabled in that# directory (and its subdirectories).## First, we configure the "default" to be a very restrictive set of# features.#&Directory /&Options FollowSymLinksAllowOverride None&/Directory&
## Note that from this point forward you must specifically allow# particular features to be enabled - so if something's not working as# you might expect, make sure that you have specifically enabled it# below.### This should be changed to whatever you set DocumentRoot to.#&Directory "d:/Bugzilla"&
## AddHandler allows you to map certain file extensions to "handlers":# actions unrelated to filetype. These can be either built into the server# or added with the Action directive (see below)## To use CGI scripts outside of ScriptAliased directories:# (You will also need to add "ExecCGI" to the "Options" directive.)#AddHandler cgi-script. .cgi
## This should be changed to whatever you set DocumentRoot to.#&Directory "C:/Bugzilla"&## Possible values for the Options directive are "None", "All",# or any combination of:# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews## Note that "MultiViews" must be named *explicitly* --- "Options All"# doesn't give it to you.## The Options directive is both complicated and important. Please see# # for more information.#
Options Indexes FollowSymLinks ExecCGI## AllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords:# Options FileInfo AuthConfig Limit#AllowOverride All## Controls who can get stuff from this server.#Order allow,denyAllow from all## Tell Apache to use Perl to execute .cgi#ScriptInterpreterSource Registry-Strict&/Directory&You also should add index.cgi to the DirectoryIndex list.## DirectoryIndex: sets the file that Apache will serve if a directory# is requested.## The index.html.var file (a type-map) is used to deliver content-# negotiated documents. The MultiViews Option can be used for the# same purpose, but it is much slower.#DirectoryIndex index.html index.html.var index.cgi
在注册表中创建HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command 编辑默认值为C:\Perl\bin\perl.exe -T
## The location and format of the access logfile (Common Logfile Format).# If you do not define any access logfiles within a &VirtualHost&# container, they will be logged here. Contrariwise, if you *do*
# define per-&VirtualHost& access logfiles, transactions will be# logged therein and *not* in this file.##CustomLog logs/access.log common
重新启动 Apache最后,在命令行中重新启动Apache。C:\&net stop apache2The Apache2 service is stopping..The Apache2 service was stopped successfully.C:\&net start apache2The Apache2 service is starting.The Apache2 service was started successfully.C:\&
Bugzilla是Mozilla公司向我们提供的一个开源的免费缺陷跟踪工具。作为一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告Bug、查询Bug记录并产生报表、处理解决、管理员系统初始化和设置四部分。并具有如下特点:
l基于Web方式,安装简单、运行方便快捷、管理安全。
l有利于缺陷的清楚传达。本系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的Bug报告。提供大量的分析选项和强大的查询匹配能力,能根据各种条件组合进行Bug统计。当错误在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得动态的变化信息,允许你获取历史纪录,并在检查错误的状态时参考这一记录。
l系统灵活,强大的可配置能力。Bugzilla工具可以对软件产品设定不同的模块,并针对不同的模块设定开发人员和测试人员;这样可以实现提交报告时自动发给指定的责任人;并可设定不同的小组。设定不同的用户对Bug记录的操作权限不同,可进行有效的控制管理。允许设定不同的严重程度和优先级,可以在错误的生命期中管理错误,从最初的报告到最后的解决,都有详细的记录,确保了错误不会被忽略,同时,可以让开发人员将注意力集中在优先级和严重程度高的错误上。
l自动发送Email通知相关人员。根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。
2Bugzilla操作流程:
2.1用户登录及设置流程:
l打开浏览器,输入Bugzilla服务器地址:
l进入主页面后,点击【新建帐号】,进入注册页面。
l在注册页面中输入E-Mail地址和用户代号,然后,点击【Create Account】,随后,你将收到一封包含初始密码的E-Mail。
l在收到E-Mail之后,点击【登录】,在帐号栏输入注册时使用的E-Mail地址,在密码栏输入邮件里通知的初始密码,然后,点击【Login】。
l如忘记密码,在登陆页面中输入注册用户名,点击【Submit Request】,根据收到的邮件进行重新设置密码。
l如果成功登录后,点击【Edit属性】-&【帐号设置】,进行密码修改。
l点击【Edit属性】-&【邮件设置】,进行邮件通知设置。
l点击【Edit属性】-&【权限】,进行权限查询。
2.2Bug的处理流程概述:
l测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,通过Email通知项目组长或直接通知开发者。
l项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
l开发者收到E-Mail信息后,判断是否为自己的修改范围。
A.若不是,重新reassigned分配给项目组长或应该分配的开发者;
B.若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明);
l测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
A.经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
B.还有问题,REOPENED,状态重新变为“New",并发邮件通知。
l如果这个BUG一周内一直没被处理过。Bugzilla就会一直用E-Mail骚扰它的属主,直到采取行动为止。
2.3一个Bug的生存周期图示:
2.4测试人员报告Bug的流程:
l请先进行查询,确认要提交的bug报告不会在原有纪录中存在,若已经存在,不要提交,若有什么建议,可在原有纪录中增加注释,告知其属主,让bug的属主看到这个后自己去修改。
l若Bug不存在,创建一份有效的bug报告后进行提交。
l具体操作:点击【新建】,选择产品后,填写一个Bug报告的表格。填表注意:【指派给】为空则默认为设定的owner, 也可手工制定。【抄送】可为多人,需用逗号隔开。【描述】中要详细说明下列情况:
A.发现问题的步骤;
B.执行上述步骤后出现的情况;
C.期望应出现的正确结果。
l【平台】、【操作系统】、【优先级】、【严重级】,可以根据具体情况自行选择。
l【依赖】是指与这个新Bug有关联的Bug号码。
l【Blocks】不太清楚J
l填写完毕之后,点击【Commit】提交,发送邮件通知给相关人员。
2.5Bug的不同处理状态解释:
lBug的属主(owner)确认并接受这个Bug,然后给出解决方法,并填写【附加说明】,还可以【建立新的附件】(如:更改提交单)等等。
l开发人员可以调整的Bug状态如下:
A.FIXED &&&&&&&&&&&&&&&&& =&&&& 描述的问题已经修改;
B.INVALID &&&&&&&&&&&&& =&&&& 描述的问题不是一个bug (输入错误后,通过此项来取消);
C.WONTFIX &&&&&&&&&& =&&&& 描述的问题将永远不会被修复;
D.LATER &&&&&&&&&&&&&&&& =&&&& 描述的问题将不会在产品的这个版本中解决;
E.DUPLICATE &&&&&& =&&&& 描述的问题是一个存在的bug的复件;
F.WORKSFORME&& =&&&& 所有要重新产生这个bug的企图是无效的。如果有更多的信息出现,请重新分配这个bug,而现在只把它归档。
l测试人员收到Bug的修改通知之后,还可以做如下的调整:
A.Leave as RESOLVED FIXED&&&&&& =&&& 保持FIXED状态不变;
B.Reopen bug&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& =&&&& 这个bug还有问题,重新打开;
C.Mark bug as VERIFIED&&&&&&&& =&&& 这个bug确实被正确修改了;
D.Mark bug as CLOSED&&&&&&&&&&&&&&&&&& =&&& 产品已经发布,将这个bug关闭。
2.6关于权限的说明:
l组内成员对bug具有查询的权利,但不能进行修改。
lBug的owner 和 reporter 具有修改的权利。
l具有特殊权限的用户具有修改的权利。
另:有关Bugzilla的安装请访问下面的连接:
作者Blog:
Testlink手册中关于“关键字”的描述:3.3 KeywordsKeywords were created to give users another level of depth when categorizing Test Cases.Keywords serve as a means of grouping Test Cases with some attribute within a TestSpecification. For example, you can use it to define:• Regression or Sanity set• Reviewed Test Cases• Set of Test Cases valid for one platformKeyword CreationAt this time keywords can only be created by users with the mgt_modify_key rights. Theserights are currently held only by Leaders. Once a keyword or grouping of keywords has beencreated users may assign them to Test Cases.Illustration 6: List of related Test Plans is listed on the "View Test Case" pageAssigning KeywordsKeywords may be assigned to Test Cases either from the assign keyword screen (in batch) orvia the Test Case management (individually).Filter by KeywordUsers have the ability to filter by Keywords to:• Search Test Cases in Test Specification.• Add groups of Test Cases in a Test Case Suite (Test Plan).• Execute test screen. Testlink@Fulong 中的关键字及其解释如下表所示:
功能 功能测试针对产品的功能点进行测试 &
可用性测试测试用户是否能够满意使用。具体体现为操作是否方便,界面是否友好等。 &
安全 安全性测试安全性和访问控制测试侧重于安全性的两个关键方面:应用程序级别的安全性,包括对数据或业务功能的访问系统级别的安全性,包括对系统的登录或远程访问。 &
性能 性能测试性能测试主要测试软件的性能,包括负载测试,强度测试,数据库容量测试,基准测试以及基准测试 &
恢复测试采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯或网络相关的系统。恢复测试时,应该参考性能测试的相关测试指标。 &
手动 手动测试需要人工干涉的测试 &
正面 正面测试用例即输入是系统定义中合法的输入数据的用例 &
自动 自动测试利用工具或脚本自动化测试 &
负面测试用例即输入[不是]系统定义中合法的输入数据的用例& /tr&
将BUGZILLA繁体中文语言包转换为简体中文的方法
使用软件“GB/BIG5/UTF-8 文件编码批量转换程序”进行转换。& 软件版本:1.3& 编译日期: & 程序作者:阿勇(fxy_)& 作者主页:WWW.PC-SOFT.CN
UTF-8 -& BIG5 -&&GB -& UTF-8
从事软件测试快1年了,各方面的书籍和知识也看了不少,实践却不是很多,虽然学了不少非测试的知识,对软件工程也算有了比较清晰的认识,但对于把测试作为主要学习对象的我来说。测试上的技术还远远不够,测试工具的使用有待进一步的加强。所以,这里也把一些知识总结一下,方便自己以后查询和复习。
软件性能:是一种指标,是参考一定标准的表现,表明软件系统或构件对于其及时性要求的符合程度,即在相应的硬件和软件环境下,该软件系统应该达到的一个水平。另外,性能是一种特性,可以用时间和空间来进行度量。
3种角度看性能:(1)用户角度:直观印象,主要是从响应时间来看;(2)管理员角度:建立在响应时间基础上,要考虑系统状态如系统资源的利用率,系统的扩展性和系统的稳定性;(3)开发人员:主要从系统架构,数据库设计,代码的优化来看待。
2.主要关键词
响应时间:对请求作出响应所需要的时间。web的普遍标准是2/5/10秒,即2秒以内的客户响应被认为是“非常好非常吸引人”的,5秒内是“比较不错”的,10秒是能接受的上限。但是响应时间具有相对性,如:一个月才进行一次的操作,20分钟是一个可以接受的等待时间。即:具体环境具体判断。
用户并发数:主要取决于服务端和客户端的性能。对服务端来说,每个用户和服务断都是离散的,用比较形象的话来说,就是一群小孩对着一堵墙踢球,每个小孩都有一个球,具体多少个小孩,每个小孩每次对着墙踢球的时间是不确定的或有一定规律的。而墙能承受多少小孩踢球而不跨掉,便是一个用户并发数的问题。而对客户端来说,每个小孩踢球的时间都是根据自己的实际情况来决定的,即根据用户实际的业务场景来决定的。所以,系统的服务端能承受的最大并发访问数主要取决于并发用户数和业务场景,一般可以通过对服务器日志的分析可以得到。 并发数确定的理论公式:C=nL/T (C是平均的并发用户数,n是login session“用户从登陆系统到退出系统的时间段”,T是考察的时间段即用户可能使用系统的总时间段)C^=C+3根号C。
例如:一OA系统,该系统有200用户,每天大约100人访问系统,一天内用户从登陆系统到退出系统的平均时间是4小时,一天内,用户最多使用8小时。
那么可以得到C=200*4/8=100 (并发用户数)
C^=100+3*根号100 (最大用户数)
吞吐量:单位时间内系统处理的客户请求的数量,主要体现软件系统的性能承载能力。
吞吐量的单位不定,可以是:请求数/秒,人数/天,业务数/小时……对于web系统来说,常用的是请求数(点击数)/秒或字节数/秒来体现
计算公式:F=N*R/T
F代表吞吐量,N代表Virtuae User的个数,R代表每个用户的请求数,T代表性能测试的时间
可以看到上列公式在图表里显示理论上是一根平滑的斜线,理论上随着用户数的请求数增加,时间也跟着增加,如果实际测试中。系统的性能出问题时,即用户数增加到一定数量,系统不能及时处理,此时,图表表现出来就会发生变化。
一般来说,2个不同的系统可能具有不同的用户数和用户使用模式,但如果具有基本一致的吞吐量,则可以说,他们具有基本相同的平均处理能力。
性能计数器(Counter)是描述服务器或操作系统性能的一些数据指标。例如,对windows操作系统来说,使用内存数,进程时间等都是常见的计数器。
思考时间:指用户在进行操作时,每个请求之间的间隔时间。
性能测试指标的基本概念
吞吐量/处理能力处理能力又叫吞吐量,指的是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求数/秒Or页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天Or页面访问量/天来衡量。
负载负载分为客户端负载和服务器端负载客户端负载的通俗解释就是有多少个用户在同时使用软件服务器端负载的通俗解释就是有多少个请求同时到达了服务器端,要求服务器进行处理。例如,某个网站当前有10000个人在线访问,从他们的客户端层面看过去,这个负载就是客户端负载,为10000。若某个网站当前有10000个人在线访问,某一时刻,从他们的客户端同时发出了1000个页面的请求到服务器,从服务器端层面看过去,这个负载就是服务器端负载,为1000。
响应时间响应时间是可以判断一个被测应用系统是否存在性能瓶颈的最直观的要素。例如,在执行完性能测试后,发现某个交易的“平均响应时间”为8秒,超过了预先确定下来的性能指标“该交易的性能指标为平均响应时间要小于等于3秒”。此时,就可以认为被测应用系统存在性能瓶颈了,要利用一定的手段去探查被测应用系统中哪个地方引起了系统的处理效率低以及低的原因了。响应时间一般包括最大响应时间和平均响应时间,响应时间包括网络上的传输时间,WEB服务器上处理时间、APP服务器上的处理时间、DB服务器上的处理时间,响应时间不包括浏览器上的内容显示时间。
同时在线用户对于一个网站来讲,当一个用户登录到该网站的首页后,开始在该网站上进行各种操作,包括浏览网页、检索内容、提交表单等,这个过程中的用户称为在线用户。若同一时间点或同一个时间段内,有很多这样的用户在访问该网站,这些用户统称为该网站的同时在线用户。同时在线用户的另一层理解是,将应用系统整体看作是一个黑盒子,从用户的客户端层面看向系统,总共有多少个人在使用它。当进行性能测试时,如果你使用的是同时在线用户,则可以称之为同时在线负载。
超级并发用户对于一个网站来讲,可能存在WEB服务器、应用服务器、数据库服务器三个层次,而用户所使用的浏览器是在最外面的客户端层面。如果某个时间点或时间段内,共有1000个用户同时在线,他们进行着各种各样的操作,而某个时间点上可能存在10个左右的用户同时进行了一个或多个操作,导致WEB服务器同时接收到了10个左右的交易请求,我们称这个10个左右的用户为超级并发用户。当进行性能测试时,如果你使用的是超级并发用户,则可以称之为超级并发负载。
性能测试脚本脚本是用负载模拟工具开发出来的。脚本是一些代码的组合体,它用代码来实现用户对应用系统的操作。例如,你在一个网站上访问首页、输入用户名和密码后点击登录按钮进行登录,这是用户对应用系统的两步操作内容,在脚本中则包含了实现这两个操作步骤的代码。如果你要模拟10000个用户的负载,这10000个用户中50%进行首页的访问、20%进行注册、20%进行查询、10%进行某个页面的浏览,则你需要制作5个脚本,分别是首页访问脚本、注册脚本、查询脚本、页面浏览脚本。
事务事务是脚本的一个特性,每个事务都包含开始事务和结束事务。事务用来衡量脚本中一行代码或多行代码的执行所耗费的时间。你可以将开始事务放置在脚本中某行代码的前面,将结束事务放置在该行代码的后面,在该脚本的虚拟用户运行时,这个事务将衡量该行代码的执行花费了多长时间。
交易交易分为业务层面和技术层面两种定义。业务层面交易是指完成一次完整的业务操作,例如进行一次取款、查询操作。技术层面的交易是指进行一次应用程序至应用程序、或者应用程序至数据库的系统操作。一般的一笔业务交易由多笔技术交易组成,根据业务交易的复杂度和系统应用架构的不同,其比例大致为1:2-1:10。
TPS与HPSTPS (Transactions Per Second)是估算应用系统性能的重要依据。其意义是应用系统每秒钟处理完成的交易数量,尤其是交易类系统。一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。依据经验,应用系统的处理能力一般要求在10-100左右。不同应用系统的TPS有着十分大的差别,一般需要通过性能测试进行准确估算。当系统没有达到性能瓶颈时,TPS随着负载的增加呈近似线性增长,当接近性能瓶颈时出现拐点;如果系统健壮性较好,在到达性能瓶颈后,TPS基本保持水平,不会再随着负载的增加而有显著增长;而如果系统存在比较严重的性能问题,当到达性能瓶颈后,TPS会出现明显的下降趋势。HPS:(Hits per Second)每秒点击次数,是指在一秒钟的时间内用户对Web页面的链接、提交按钮等点击总和它一般和TPS成正比关系,是B/S系统中非常重要的性能指标之一。TPS可以有多种衡量单位,在进行性能测试的业务模型分析时使用,例如:(1)在税务系统中,可以用“系统每个月要处理10万用户的业务操作”,这里的TPS用企业数/月来衡量;(2)在税务系统中,也可以用“系统在第七天的8个小时内要处理4万用户的业务操作”,这里的TPS用企业数/天来衡量;(3)在税务系统中,也可以用“系统在第七天的10点到11点之间要处理1.2万用户的3种缴税交易操作,即3.6万次缴税交易操作”,这里的TPS用交易数/小时来衡量;(4)在税务系统中,也可以用“系统在第七天的10点到11点之间要处理1.2万用户的3种缴税交易操作,即3.6万次缴税交易操作,每次缴税交易要从客户端向服务器发送平均10次HTTP请求,即36万次HTTP请求操作”,这里的TPS用请求数/小时来衡量。HPS是用来衡量很多用户使用客户端进行操作,向服务器发送请求的效率。我们认为HPS表现的是最终用户的整体行为,是衡量在线负载程度的一个指标。而TPS表现的是服务器端的程序行为,是衡量服务器处理能力高低的一个主要指标。例如:HPS=“点击次数/秒”;TPS=“处理事务数/秒”,HPS与TPS没有绝对的关系。
性能测试实现的准确性在进行了正确的性能测试分析后,获得了正确的性能测试需求,从而使用性能测试工具开发相应的性能测试脚本、开发相应的性能测试场景、在性能测试脚本中利用性能测试数据、在性能测试脚本中设置相应的思考时间、在性能测试场景中设置运行的参数等,以期能利用自动化的性能测试工具模拟现实中大量用户同时访问被测系统的情形。即,如果性能测试工具操作不当,将会导致无法准确的实现“模拟实际情况”的目标。例如,某些性能测试工程师在使用性能测试工具时不懂得利用“检查点”这个功能,从而无法发现在性能测试执行过程中大量虚拟用户甚至没有登陆到系统中的严重问题,仍然认为性能测试执行效果良好,被测系统性能没有问题。
Web服务器和APP服务器通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。Web服务器(Web Server)Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)Javascrīpt,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。应用程序服务器(The Application Server)根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。 例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。情景1:不带应用程序服务器的Web服务器在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。情景2:带应用程序服务器的Web服务器情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。 这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。警告(Caveats)现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。
性能瓶颈性能瓶颈实际上就是一个软件的性能缺陷,最通俗的理解“性能瓶颈”。(1)硬件上的性能瓶颈主要指的是CPU、RAM方面的问题。例如,在进行软件需求分析、概要设计时,确定了在数据库服务器上需要6个CPU、12G内存,但是在测试时,发现CPU的持续利用率超过95%,这时可以认为在硬件上出现了性能瓶颈。(2)应用软件上的性能瓶颈一般指的是应用服务器、WEB服务器等应用软件,还包括数据库系统。例如,在WEBLogic平台上配置了JDBC连接池的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会动态生成10个新的连接数,这样导致了交易处理的响应时间大大的增加。这时可以认为在应用软件上出现了性能瓶颈。(3)应用程序上的性能瓶颈,一般指的是开发人员新开发出来的应用程序。例如,用Java或者C开发出来的部署在应用服务器上用于用户交易请求处理的应用程序。例如,某个开发员开发了一个缴费处理程序,在测试时发现,这个缴费处理程序在处理用户发过来的并发缴费请求时,只能串行处理,无法并行处理,导致缴费交易的处理响应时间非常长,这时可以认为在应用程序上出现了性能瓶颈。(4)操作系统上的性能瓶颈,一般指的是Windows、Unix、Linux这些操作系统。例如,在windows系统中,虚拟内存设置的不合理,都指定为C驱提供虚拟内存,在测试时发现当出现物理内存不足时,虚拟内存的交换效果非常不理想,导致交易的响应时间大大增加。这时可以认为在操作系统上出现了性能瓶颈。(5)网络设备上的性能瓶颈,一般指的是防火墙、动态负载均衡器、交换机等设备。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其它负载较轻的应用服务器上。在测试时发现,动态负载均衡机制没有起到相应的作用,这时可以认为在网络设备上出现了性能瓶颈。
;:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++& 2 ;:文档来源: http://www.rayninfo.co.uk/vimtips.html&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 3 ;:翻译参考: 没有记,请原作者见谅&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 4 ;:文档日期:
11:19:04&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 5 ;:更新记录:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 6 ;:作  者: li3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 7 ;:生成工具: 2Html.vim&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 8 ;:blog.asp?name=li3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 9 ;:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&10 &11 ;:--------------------------------------------------------------------------------&12 ;:如果你使用的是MS-Windows,可能有的键已经被定义为Windows中的一些默认功能键。如果不&13 ;:想这样,请编辑$VIM\mswin.vim&14 ;:--------------------------------------------------------------------------------&15 /joe/e&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 设置光标到匹配"joe"的末尾&16 /joe/e+1&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 设置光标到匹配"joe"的末尾再后移一位&17 /joe/s-2&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 设置光标到匹配"joe“的开头再前移两位&18 /joe/+3&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 搜索“joe” 找到后将光标下移3行&19 /^joe.*fred.*bill/&&&&&&&&&&&&&&&&& ;: 匹配以'j'开头且"joe"到"fred"到"bill"之间至少有一个字符&20 /^[A-J]\+/&&&&&&&&&&&&&&&&&&&&&&&&& ;: 搜索行首非'A'到’J‘重复一次以上的行&21 /begin\_.*end&&&&&&&&&&&&&&&&&&&&&& ;: 多行匹配&22 /fred\_s*joe/i&&&&&&&&&&&&&&&&&&&&& ;: 多行搜索可以是任何空白字符包括\n,\t等等&23 /fred\|joe&&&&&&&&&&&&&&&&&&&&&&&&& ;: 搜索fred或者joe&24 /.*fred\&.*joe&&&&&&&&&&&&&&&&&&&&& ;: 搜索同时包括fred跟joe的行&25 /\&fred\&/i&&&&&&&&&&&&&&&&&&&&&&&& ;: 搜索独立的单词fred&26 /\&\d\d\d\d\&&&&&&&&&&&&&&&&&&&&&&& ;: 搜索独立的4位数字&27 /\D\d\d\d\d\D&&&&&&&&&&&&&&&&&&&&&& ;: 搜索恰好4位的数字&28 /\&\d\{4}\&&&&&&&&&&&&&&&&&&&&&&&&& ;: 同/\&\d\d\d\d\&&29 /\([^0-9]\|^\)%.*%&&&&&&&&&&&&&&&&& ;: 查找以非0~9数字或在行首的%%所包括的内容 &30 ;:" 查找空行&31 /^\n\{3}&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 匹配三连续的空行&32 ;:" 使用正则表达式组查找&33 /\(fred\).*\(joe\).*\2.*\1&34 ;:" 正则表达式重复&35 /^\([^,]*,\)\{8}&36 ;:" visual 下搜索 &37 :vmap // y/&C-R&"&CR&&&&&&&&&&&&&&& ;: visually模式下的键盘映射,把//映射成匹配当前选中的文本&38 :vmap &silent& // y/&C-R&=escape(@",'\\/.*$^~[]')&CR&&CR&&&&&&&&&& ;: 包括空白字符&39 ;:" \zs 和 \ze 匹配原 :h /\zs&40 /&\zs[^&]*\ze&&&&&&&&&&&&&&&&&&&&&& ;: 匹配&与&所包含的内容&41 ;:" 零宽度匹配 :h /\@=&42 /&\@&=[^&]*&\@=&&&&&&&&&&&&&&&&&&&& ;: 查找&与&所包含的内容&43 /&\@&=\_[^&]*&\@=&&&&&&&&&&&&&&&&&& ;: 多行匹配&与&所包含的内容&44 ;:" 多行查找 \_ 的意思是包括换行符&45 /&!--\_p\{-}--&&&&&&&&&&&&&&&&&&&&& ;: 匹配&与&所包含的所有内容&46 /fred\_s*joe/i&&&&&&&&&&&&&&&&&&&&& ;: 匹配fred开始到joe,之间一定得是空白字符&47 /bugs\(\_.\)*bunny&&&&&&&&&&&&&&&&& ;: 匹配所有bugs到bunny的字符串&48 :h \_&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: help&49 ;:" 查找函数声明,nmap为normal模式下的键盘映射&50 :nmap gx yiw/^\(sub\&bar&function\)\s\+&C-R&"&CR&&51 ;:" 查找多个文件&52 :bufdo /searchstr/&&&&&&&&&&&&&&&&& ;: 在多个文件缓冲区里执行查找&53 ;:" 更好的多文件查找定位方法&54 :bufdo %s/searchstr/&/gic&&&&&&&&&& ;: 在多个文件缓冲区里查找,按下n停止&55 ;:" 怎样不使用 / 来查找网址&56 ?http://www.vim.org/&&&&&&&&&&&&&&& ;: 向后查找&57 ;:" 查找指定字符以外的字符串&58 /\c\v([^aeiou]&\a){4}&&&&&&&&&&&&&& ;: 查找4个辅音字母&59 ;:-----------------------------------------------------------------------------&60 ;:#替换&61 :%s/fred/joe/igc&&&&&&&&&&&&&&&&&&& ;: 普通替换命令&62 :%s/\r//g&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 删除 DOS 的换行符 ^M&63 ;:" 你的文本文件是否乱七八糟的排成一行?使用如下命令&64 :%s/\r/\r/g&&&&&&&&&&&&&&&&&&&&&&&& ;: 转换 DOS 回车符 ^M 为真正的回车符&65 :%s= *$==&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 删除行尾空白&66 :%s= \+$==&&&&&&&&&&&&&&&&&&&&&&&&& ;: 同上&67 :%s#\s*\r\?$##&&&&&&&&&&&&&&&&&&&&& ;: 删除尾部空白和dos换行符&68 :%s#\s*\r*$##&&&&&&&&&&&&&&&&&&&&&& ;: 同上&69 ;:" 删除空行&70 :%s/^\n\{3}//&&&&&&&&&&&&&&&&&&&&&& ;: 删除连续3个空行&71 :%s/^\n\+/\r/&&&&&&&&&&&&&&&&&&&&&& ;: 压缩空行,多个替换为一个&72 :%s#&[^&]\+&##g&&&&&&&&&&&&&&&&&&&&& ;: 删除html的tag部分&73 :%s#&\_.\{-1,}&##g&&&&&&&&&&&&&&&&& ;: 多行删除 html 的tags (非贪婪方式)&74 ;:" IF YOU ONLY WANT TO KNOW ONE THING&75 :'a,'bg/fred/s/dick/joe/igc&&&&&&&& ;: 非常有用 &76&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;# 译释:''a,''b指定一个范围:mark a ~ mark b&77&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;# g//用一个正则表达式指出了进行操作的行必须可以被fred匹配&78&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;# 看后面,g//是一个全局显示命令&79&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;# s/dick/joe/igc则对于这些满足条件的行进行替换&80 ;:" 复制列&81 :%s= [^ ]\+$=&&=&&&&&&&&&&&&&&&&&&& ;: 复制最后一列&82 :%s= \f\+$=&&=&&&&&&&&&&&&&&&&&&&&& ;: 复制最后一列&83 :%s= \S\+$=&&&&&&&&&&&&&&&&&&&&&&&& ;: 复制最后一列&84 ;:" 记忆(反向引用)&85 :s/\(.*\):\(.*\)/\2: \1/&&&&&&&&&&& ;: 将两个字段颠倒&86 :%s/^\(.*\)\n\1$/\1/&&&&&&&&&&&&&&& ;: 删除重复行&87 ;:" 非贪婪匹配 \{-}&88 :%s/^.\{-}pdf/new.pdf/&&&&&&&&&&&&& ;: 删除第一个pdf&89 ;:" use of optional atom \?&90 :%s#\&[zy]\?tbl_[a-z_]\+\&#\L&#gc&& ;: lowercase with optional leading characters&91 ;:" 跨越尽量多的行&92 :%s/&!--\_.\{-}--&//&&&&&&&&&&&&&&& ;: 删除多行注释&93 :help /\{-}&&&&&&&&&&&&&&&&&&&&&&&& ;: 查看非贪婪匹配的更多帮助&94 ;:" 使用寄存器替换&95 :s/fred/&c-r&a/g&&&&&&&&&&&&&&&&&&& ;: 将fred替换为寄存器a里的内容 #&c-r&为按下Ctrl与r&96 :s/fred/&c-r&asome_text&c-r&s/g&97 :s/fred/\=@a/g&&&&&&&&&&&&&&&&&&&&& ;: 比较好的办法,不显示替换内容 &98 ;:" 在一行里写多种命令&99 :%s/\f\+\.gif\&/\r&\r/g | v/\.gif$/d| %s/gif/jpg/100 :%s/a/but/gie|:update|:next&&&&&&&& ;: 当使用 @: 来重复101 ;:" 或运算102 :%s/suck\|buck/loopy/gc&&&&&&&&&&&& ;: 替换suck或者buck(这里|不是管道)103 ;:" 调用vim函数104 :s/__date__/\=strftime("%c")/&&&&&& ;: 将__date__替换成当前日期,使用strftime函数105 ;:" 处理列,替换所有在第三列中的str1106 :%s:\(\(\w\+\s\+\)\{2}\)str1:\1str2:107 ;:" 交换第一列跟第四列108 :%s:\(\w\+\)\(.*\s\+\)\(\w\+\)$:\3\2\1:109 ;:" 过滤form中的内容放在寄存器里110 :redir @*|sil exec 'g#&\(input\|select\|textarea\|/\=form\)\&#p'|redir END111 :nmap ,z :redir @*&Bar&sil exec 'g@&\(input\&Bar&select\&Bar&textarea\&Bar&/\=form\)\&@p'&Bar&redir END&CR&112 ;:" 两位以上的数字减三(带进位。这个命令挺有趣)113 :%s/\d\+/\=(submatch(0)-3)/114 ;:" 包含loc或者functions的行中的数字加6115 :g/loc\|function/s/\d/\=submatch(0)+6/116 ;:" 比上面更好的方法117 :%s#txtdev\zs\d#\=submatch(0)+1#g118 :h /\zs&&&&&&&&&&&&&&&&&&&&&&&&&&& ;查看帮助119 ;:" 前缀为gg的数字加6120 :%s/\(gg\)\@&=\d\+/\=submatch(0)+6/121 :h zero-width&&&&&&&&&&&&&&&&&&&&& ;查看帮助122 ;:" 替换一个特定字符串为数字123 :let i=10 | 'a,'bg/Abc/s/yy/\=i/ |let i=i+1 ;# 将yy转换成10,11,12等等124 ;:" 比上面的更精确125 :let i=10 | 'a,'bg/Abc/s/xx\zsyy\ze/\=i/ |let i=i+1 # 将xxyy 转换成 xx11,xx12,xx13126 ;:" 将查找内容放入内存,然后用\zs进行简单替换 127 :%s/"\([^.]\+\).*\zsxx/\1/128 ;:" 将xx替换为此行内容 129 :nmap &leader&z :%s#\&&c-r&=expand("&cword&")&cr&\&#130 ;:" 将Vis选中的内容用&&括起来 131 :vmap &leader&z :&C-U&%s/\&&c-r&*\&/132 ;:-----------------------------------------------------------------------------133 ;:" 下面举一些在替换中使用替换的例子 134 ;:" 多种分符可以被用在替换中 135 :%s,\(all/.*\)\@&=/,_,g&&&&&&&&&&&& ;: 用 _ 替换 "all/"之后的 / &136 ;:" 同样的功能 137 :s#all/\zs.*#\=substitute(submatch(0), '/', '_', 'g')#138 :s#all/#&^M#|s#/#_#g|-j!&&&&&&&&&&& ;" 查找断行,并合并为一行139 ;:" 在替换命令中使用替换 140 :%s/.*/\='cp '.submatch(0).' all/'.substitute(submatch(0),'/','_','g')/141 ;:-----------------------------------------------------------------------------142 ;:" 全局显示命令 143 :g/gladiolli/#&&&&&&&&&&&&&&&&&&&&& ;: 查找并显示匹配的行号144 :g/fred.*joe.*dick/&&&&&&&&&&&&&&&& ;: 显示所有含有 fred,joe & dick的行145 :g/\&fred\&/&&&&&&&&&&&&&&&&&&&&&&& ;: 显示单一单词fred146 :g/^\s*$/d&&&&&&&&&&&&&&&&&&&&&&&&& ;: 删除所有空行147 :g!/^dd/d&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 删除不含字符串''dd''的行148 :v/^dd/d&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 同上149 :g/fred/,/joe/d&&&&&&&&&&&&&&&&&&&& ;: 删除所有的从fred到joe150 :g/-------/.-10,.d&&&&&&&&&&&&&&&&& ;: 以-------为标记删除之前的10行151 :g/{/ ,/}/- s/\n\+/\r/g&&&&&&&&&&&& ;: 删除 {...}之间的空行152 :v/\S/d&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 删除空行 153 :v/./,/./-j&&&&&&&&&&&&&&&&&&&&&&&& ;: 压缩空行154 :g/^$/,/./-j&&&&&&&&&&&&&&&&&&&&&&& ;: 同上155 :g/&input\|&form/p&&&&&&&&&&&&&&&&& ;: 或运算156 :g/^/put_&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 双倍行宽 (pu = put)157 :g/^/m0&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 颠倒文件 (m = move)158 :'a,'bg/^/m'b&&&&&&&&&&&&&&&&&&&&&& ;: 颠倒选中的 a 到 b159 :g/^/t.&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 重复行160 :g/fred/t$&&&&&&&&&&&&&&&&&&&&&&&&& ;: 拷贝行从fred到结尾161 :g/stage/t'a&&&&&&&&&&&&&&&&&&&&&&& ;: 拷贝行从stage 到 marker a(a为标记的位置)162 :g/\(^I[^^I]*\)\{80}/d&&&&&&&&&&&&& ;: 删除最少包含80个tab的行163 ;:" 隔行替换 164 :g/^/ if line('.')%2|s/^/zz /165 ;:" 查找标记a与b 间所有包含 "somestr" 166 ;:" 复制所有"otherstr"后的行 167 :'a,'bg/somestr/co/otherstr/&&&&&&& ;: co(py) or mo(ve)168 :'a,'bg/str1/s/str1/&&&/|mo/str2/&& ;" 范围同上,进行替换169 :%norm jdd&&&&&&&&&&&&&&&&&&&&&&&&& ;: 隔行删除170 ;:" 增加数字 (键入 &c-a&)&&&&&&&&&&& ;#在MS-Windows中&c-a&已经被定义为全选171 :.,$g/^\d/exe "norm! \&c-a&"&&&&&&& ;: 增加从当前行首到结尾的数字172 :'a,'bg/\d\+/norm! ^A&&&&&&&&&&&&&& ;: 增加数字173 ;:" 保存全局命令的结果 (注意必须使用添加模式) 你需要使用 qaq 清空寄存器a. 174 ;:"save results to a register/paste buffer 存储结果到 寄存器/粘贴 到 a175 :g/fred/y A&&&&&&&&&&&&&&&&&&&&&&&& ;: 添加配备行到寄存器到 a176 :g/fred/y A | :let @*=@a&&&&&&&&&&& ;: 放入复制缓冲区177 :let @a=''|g/Barratt/y A |:let @*=@a178 :'a,'b g/^Error/ . w && errors.txt& ;" 将查找内容放入一个文件 (文件必须存在)179 ;:" 复制每一行,然后在复制出来的每一行两侧加上一个 print '复制出来的内容'180 :g/./yank|put|-1s/'/"/g|s/.*/Print '&'/181 ;:" 用文件中的内容替换字符串,-d 表示删除“标记”182 :g/^MARK$/r tmp.ex | -d183 ;:" 精致的显示方法 184 :g/&pattern&/z#.5&&&&&&&&&&&&&&&&&& ;: 带行号显示 &185 :g/&pattern&/z#.5|echo "==========" ;: 漂亮的显示 &186 ;:" 用 g// 执行正常命令187 :g/|/norm 2f|r*&&&&&&&&&&&&&&&&&&&& ;: 替换第二个|为* 188 ;:" 在新窗口中显示查找结果189 :nmap &F3& :redir @a&CR&:g//&CR&:redir END&CR&:new&CR&:put! a&CR&&CR&190 ;:-----------------------------------------------------------------------------191 ;:" 全局命令和替换命令联姻 (强大的编辑能力)192 :'a,'bg/fred/s/joe/susan/gic&&&&&&& ;: 可以使用反向引用来匹配193 :g/fred/,/joe/s/fred/joe/gic&&&&&&& ;: 非行模式 194 ;:-----------------------------------------------------------------------------195 ;:" 先找fred,然后找joe196 :/fred/;/joe/-2,/sid/+3s/sally/alley/gIC197 ;:-----------------------------------------------------------------------------198 ;:" create a new file for each line offile eg 1.txt,2.txt,3,txt etc199 ;:" 将每一行的内容存成一个文件,文件名为 行号.txt& 如 1.txt,2.txt 等200 :g/^/exe ".w ".line(".").".txt"201 ;:-----------------------------------------------------------------------------202 ;:" 绝对精华 203 ;:-----------------------------------------------------------------------------204 * # g* g#&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 查找当前光标下的单词(单个单词) (&cword&) (向前/向后)205 %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 匹配括号 {}[]()206 .&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 重复上次操作 207 @:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 重复上次的命令208 matchit.vim&&&&&&&&&&&&&&&&&&&&&&&& ;: 适%能匹配 &script& &?php等标记209 &C-N&&C-P&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 插入模式下自动完成填词210 &C-X&&C-L&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 行自动完成(超级有用)211 /&C-R&&C-W&&&&&&&&&&&&&&&&&&&&&&&&& ;: 把单个&cword&单词放入搜索或者命令行212 /&C-R&&C-A&&&&&&&&&&&&&&&&&&&&&&&&& ;: 把字符串中有的单词&CWORD&放入搜索或者命令行213 :set ignorecase&&&&&&&&&&&&&&&&&&&& ;: 忽略大小写214 :syntax on&&&&&&&&&&&&&&&&&&&&&&&&& ;: 打开语法高亮 Perl,HTML,PHP 等等215 :h regexp&C-D&&&&&&&&&&&&&&&&&&&&&& ;: 按ctrl+d得到包含regexp的列表216&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;:& (按tab自动不齐)217 ;:-----------------------------------------------------------------------------218 ;:" 简单编辑更新 _vimrc文件219 :nmap ,s :source $VIM/_vimrc&&&&&&& ;:普通模式下的键盘映射 ,s映射成加载用户目录下的_vimrc文件220 :nmap ,v :e $VIM/_vimrc&&&&&&&&&&&& ;:,v映射成打开_vimrc文件221 ;:-----------------------------------------------------------------------------222 ;:#VISUAL 模式 (方便增加 HTML 标签)223 :vmap sb "zdi&C-R&z&ESC&&&&&&&&&&&& ;: 在 VISUALLY模式下将选中的文本前后分别加上224 :vmap st "zdi&?= &C-R&z ?&&ESC&&&&& ;: 加上 &?= ?&225 ;:-----------------------------------------------------------------------------226 ;:"vim 7 tabs 227 vim -p fred.php joe.php&&&&&&&&&&&& ;: 在新tab中打开文件 228 :tabe fred.php&&&&&&&&&&&&&&&&&&&&& ;: 在新tab中打开 fred.php229 :tab ball&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 每一个文件一个tab 230 ;:" vim 7& .vimrc 配置使用tabs 231 :nnoremap gf &C-W&gf232 :cab&&&&& e& tabe233 234 ;:-----------------------------------------------------------------------------235 ;:" 浏览236 :e .&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 文件浏览器 237 :Exp(lore)&&&&&&&&&&&&&&&&&&&&&&&&& ;: 浏览文件238 :Sex(plore)&&&&&&&&&&&&&&&&&&&&&&&& ;: 分割窗口浏览文件239 :browse e&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 打开windows 的 ‘选择文件’对话240 :ls&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 显示缓冲区241 :cd ..&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 设置当前目录位置242 :args&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 查看当前打开的所有文件243 :args *.php&&&&&&&&&&&&&&&&&&&&&&&& ;: 打开所有 *.php文件 244 :lcd %:p:h&&&&&&&&&&&&&&&&&&&&&&&&& ;: 改变路径到当前编辑的文件245 :autocmd BufEnter * lcd %:p:h&&&&&& ;: 放入.vimrc自动完成上面的命令246 ;:-----------------------------------------------------------------------------247 ;:" 缓冲区浏览(一直排名前10的vim脚本)248 ;:" 需要 bufexplorer.vim http://www.vim.org/script.php?script_id=42249 \be&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 缓冲浏览器中查看缓冲列表250 \bs&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;: 同上

我要回帖

更多关于 all and none 的文章

 

随机推荐