SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。
一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sqlserver
---创建 备份数据的device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
---开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2... from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)
说明:删除主键:Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col....)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where范围
更新:update table1 set field1=value1 where范围
查找:select * from table1 where field1 like '%value1%' ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A:UNION运算符
UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。
B:EXCEPT运算符
EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPT ALL),不消除重复行。
C:INTERSECT运算符
INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in '具体数据库' where条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a表名2:b)
select a,b,c from a where a IN (select d from b )或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between数值1 and数值2
9、说明:in的使用方法
select * from table1 where a [not] in ('值1','值2','值4','值6')
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from日程安排where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql语句搞定数据库分页
select top 10 b.* from (select top 20主键字段,排序字段from表名order by排序字段desc) a,表名b where b.主键字段= a.主键字段order by a.排序字段
14、说明:前10条记录
select top 10 * form. table1 where范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在TableA中但不在TableB和TableC中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑A 1
电脑A 1
光盘B 2
光盘A 2
手机B 3
手机C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名order by id desc
三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
"where 1=1"是表示选择全部 "where 1=2"全部不选,
如:
if @strWhere !=''
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
我们可以直接写成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1安定'+ @strWhere
2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
3、压缩数据库
dbcc shrinkdatabase(dbname)
4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
7、日志清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
查看(750)
评论(1)
收藏
分享
管理
meilirensheng66 发布于
2011-02-22 14:20:13
衡量一个测试人员的效率一般从如下几个方面:
第一,编写文档的速度,主要用在测试前期准备中,编写测试计划或者测试用例的速度。这个只能用页数/小时衡量了。
第二,执行用例的速度*用例执行准确率。在测试执行期间,效率体现在执行速度上,但是还要考虑一个用例执行准确率,有的公司有这项指标,就是在执行过的用例中有一个抽查,看认真执行的准确率。
第三,平均每天提交bug的数量和质量,这个指标应该是加权的,譬如(A级bug权值*数量+B级bug权值*数量+……)/总天数。
第四,被测软件的总体质量,这个意思很清楚,如果测试时间很短,但是软件发布之后客户反馈一堆bug,也不能说测试效率高。所以,软件发布之后的质量也是一个考评因素。
第五,bug发现的周期,如果测试前期发现bug很少,而大批量的bug留到项目后期才发现,说明前期的效率是有问题的。
那么如何提升测试效率呢?我按照个人的实践给出一些建议:
第一,最重要的是测试计划中任务要细化,并且每一项子任务都要有check。一个不具备执行性的计划往往是项目delay的最大原因。
第二,合理配置测试资源。在什么阶段作什么最好,哪些事情提到前面作比较好,哪些事情放到后面比较好,某某任务的前置任务是什么,都要搞清楚。规划好的计划,不至于出现任务A等任务B的窝工现象。
第三,合理使用工具。注意我说的不是自动化测试工具,而是在测试过程中合理使用可以提高效率的小工具,当然在回归测试中可以使用自动化测试工具。总之,我们的原则是机器自己能做的就让机器代劳。
第四,引入自动构建,即自动编译。个人使用心得,很不错,节省不少时间。
第五,找一款比较好的bug管理工具以及用例管理工具,古人说,公欲善其事,必先利其器,就是这个道理。
第六,提高送测质量,以免bug推来推去,非常影响效率。
其他就不再赘述,希望对大家有点帮助。
查看(417)
评论(2)
收藏
分享
管理
meilirensheng66 发布于
2011-02-18 10:52:51
LoadRunner性能测试基础知识问答
Q1:什么是负载测试?什么是性能测试?
A1:负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。
性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统所能承受的最大负载压力。
Q2.性能测试包含了哪些测试(至少举出3种)
A2:性能测试包含负载测试、压力测试、大数据量测试、疲劳强度测试等。
Q3.简述性能测试的步骤
Q4.简述使用Loadrunner的步骤
A4:制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果
Q5.什么时候可以开始执行性能测试?
A5:功能测试通过;一般需要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。
Q6.LoadRunner由哪些部件组成?
A6:主要有三部分组成:
Q7.你使用LoadRunner的哪个部件来录制脚本?
A7:使用Virtual User Generator录制测试脚本
Q8.LoadRunner的哪个部件可以模拟多用户并发下回放脚本?
A8:LoadRunner的Controller组件。
Q9.什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
A9:在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;
集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。
设置集合点函数:lr_rendezvous("Meeting"); // Meeting是集合点名称
Q10.什么是场景?场景的重要性有哪些?如何设置场景?
A10:场景用于模拟用户实际业务操作;
LoadRunner中场景有手工场景和面向目标的场景。
设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成器。
Q11.请解释一下如何录制web脚本?
A11:利用Virtual User Generator录制测试脚本,录制步骤:
1、选择合适的协议
2、设置录制选项
3、开始录制
Q12.为什么要创建参数?如何创建参数?
A12:LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求。
【参数化】:使用指定数据源中的值来替换脚本录制生成的语句中的参数。
【参数化好处】
● 减少脚本的大小
● 提供使用不同的值执行脚本的能力,更加真实的模拟现实应用。
【参数化步骤】
● 用参数替换Vuser脚本中的常量值
● 为参数设置属性和数据源
Q13.什么是关联?请解释一下自动关联和手动关联的不同。
A13:【关联的定义】简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。
【需要关联的前提条件】:
客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。
【自动关联与手工关联的不同】:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值或脚本录制完成后,执行脚本一次,通过Correlation Studio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。
Q14.你如何找出哪里需要关联?请给一些你所在项目的实例。
A14:
1、录制两份相同业务流程的脚本,输入的数据要相同
2、利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据
3、通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。
示例:
通过录制两份脚本,进行对比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要进行关联。
Q15.你在哪里设置自动关联选项?
A15:录制选项中进行设置,如下图所示:
Q16.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)
A16:Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
1.函数原型:
int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);
2.参数说明:
ParamNam:存放动态数据的参数名称
List of Attributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
● Notfound:指当找不到要找的动态数据时,怎么处理。
● Notfound=error,当找不到动态数据时,发出一个错误信息,为LoadRunner的默认值。
● Notfound=warning,当找不到动态数据时,不发出错误信息,只发出警告,脚本会继续执行下去不会中断。
● LB:动态数据的左边界字符串,该参数为必选参数,并区分大小写。
● RB:动态数据的右边界字符串,该参数为必选参数,并区分大小写。
● ORD:指提取第几次出现的左边界的数据,该参数为可选参数,默认值是1。假如值为All,则查找所有符合条件的数据并把这些数据存储在数组中。
● Search:搜寻的范围。可以是Headers(只搜寻Headers)、Body(只搜寻Body部分,不搜寻Headers)、Noresources(只搜寻Body部分,不搜寻Header与Resource)或是All(搜寻全部范围,此为默认值),该参数为可选参数。
● RelFrameID:相对于URL而言,欲搜寻的网页的Frame,此属性可以是All或是具体的数字,该参数为可选参数。
● SaveOffset:当找到符合的动态数据时,从第几个字符开始才存储到参数中,该参数为可选参数,此属性值不可为负数,其默认值是0.
● Convert:可能的值有两种:
● HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式。
● HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式。
● SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值为-1,表示储存到结尾整个字符串。
Q17.你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?
A17:在测试场景执行时,关闭日志,因为日志信息过多,也会影响性能测试结果;在调试测试脚本时,可以选择标准或扩展日志,用于输出调试信息。
可以在运行时设置中,进行日志设置,如下图所示:
Q18.你如何调试LoadRunner脚本?
A18: 通常采用以下方法调试LoadRunner测试脚本
● 断点
【方法】在脚本的任意一行上按右键菜单或F9增加断点。
● 单步跟踪
【方法】通过菜单命令VUser—>Run Step by Step或F10,可以控制脚本以语句为单位执行。
● 日志输出
【方法】通过日志输出函数lr_message、lr_log_message、lr_output_message输出。
● 对话框输出
综上,在实际测试工作中,基本上使用前三种方法,对话框输出基本上没用过。
Q19、你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。
A19:在编写用户自定义函数之前,需要首先为函数创建外部库(DLL)文件,将这些库文件放在bin目录下,一旦库文件已经被添加并且将用户自定义函数作为参数,函数应该为以下格式:__declspec (dllexport) char* (char*, char*)
Q20.在运行设置下你能更改那些设置?
A20:可以修改Run Logic、pacing、Log、Think Time等,见下图;可以测试实际需要,修改相关选项。
Q21.你在不同的环境下如何设置迭代?
A21:在“运行时设置”中设置,如下图所示:
Q22.你如何在负载测试模式下执行功能测试?
A22:在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。
Q23.什么是逐步递增?你如何来设置?
A23:虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。
可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每 30 秒启动 2 个 Vuser”
Q24.以线程方式运行的虚拟用户有哪些优点?
A24:以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。
Q25.当你需要在出错时停止执行脚本,你怎么做?
A25:取消运行设置中的“Continue on error”复选框。
或者使用lr_abort函数。
Q26.响应时间和吞吐量之间的关系是什么?
A26:当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。
Q27.说明一下如何在LR中配置系统计数器?
A27:以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册^_^。
对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。
Q28.你如何识别性能瓶颈?
A28:性能瓶颈分为:硬件瓶颈和软件瓶颈
性能瓶颈可以通过监控器来分析发现,这些监控器包括应用服务器监控、web服务器监控、数据库服务器监控器和网络监控器;它们可以帮助分析导致响应时间增加的原因;性能度量一般包括响应时间、吞吐量、每秒点击率、网络延迟等等。
Q29.如果web服务器、数据库以及网络都正常,问题会出在哪里?
A29:问题可能出在系统本身或应用服务器、或为应用编写的代码编写中。
Q30.如何发现web服务器的相关问题?
A30:可以利用web资源监控器发现web服务器相关问题,在场景执行过程中,可以利用监控器分析web服务器吞吐量、每秒点击率、每秒HTTP响应数、每秒页面下载数,以及web服务器硬件资源使用情况等。
Q31.如何发现数据库的相关问题?
A31:可以通过数据库监控器和数据资源图发现数据库相关的问题,例如在运行Controller之前,可以指定需要度量的资源,之后可以根据监控的数据,分析数据库相关的问题。
Q32.解释所有web录制配置?
A32:选择录制协议、设置录制选项、选择浏览器、选择存放路径、开始录制。
Q33.解释一下覆盖图和关联图的区别?
A33:覆盖图:合并两个图的内容,使用同一个X轴,合并图左Y轴显示当前图的值,合并图右Y轴显示被合并图的值。
关联图:当前活动图的Y轴变为合并图的X轴,被合并图的Y轴变成合并图的Y轴。
Q34.你如何设计负载?标准是什么?
A34:负载测试计划多少用户数量、使用什么类型的机器、以及在什么环境下进行。主要基于两个重要的文档,任务分布图和事务信息,任务分布图告诉我们在负载时间段内,某一个事务使用的用户数,高峰使用率及低峰使用率均来自该文档;
事务信息告诉我们事务名及优先级,在设计场景时可以参考。
Q35.Vuser_init中包括什么内容?
A35:Vuser_init中包含在脚本执行过程中只需执行一次的脚本。一般来说,所有需要初始化的都可以放在vuser_init里面,比如登录。
Q36. Vuser_end中包括什么内容?
A36:vuser_end中一般包含退出的过程,比如退出系统,主要在脚本执行完成或停止时运行,在设置了迭代次数时,vuser_end和vuser_int均只执行一次。
Q37.什么是think time?think_time有什么用?
A37:思考时间:用户在各步骤之间停下来进行思考的时间,由于用户基于其经验水平和目标而与应用程序进行交互操作,因此技术水平更高的用户工作起来可能会比新用户要快。
通过启用思考时间,可以使 Vuser在负载测试期间更准确地模拟其对应的真实世界用户。
Q38.标准日志和扩展日志的区别是什么?
A38:标准日志:脚本执行过程中,将函数集及信息发送到日志文件中
扩展日志:可以将详细的脚本执行信息输出到日志文件中,可以选择以下三种扩展日志信息:
● 参数替换:脚本运行过程中,可以将参数及当前参数值输出到日志文件中
● 服务器返回的数据:将服务器返回给客户端的数据输出到日志文件中
● 高级跟踪:所有的虚拟用户信息和函数调用输出到日志文件中
Q39.解释以下函数及他们的不同之处。
A39:lr_debug_message:发送调试信息到输出窗口或业务监控日志文件中
lr_output_message:发送日志信息到输出窗口或业务监控日志文件中
lr_error_message:发送错误信息到输出窗口或业务监控日志文件中
lrd_stmt:赋予一个SQL语句用于处理
lrd_fetch:获取结果集中的下一行数据
Q40.什么是吞吐量?
A40:客户端每秒从服务器接收到的数据,或系统服务器每秒能处理通过的交易数。一般随着虚拟用户数的增加,吞吐量也增加,说明网络带宽比较充足,反之,吐过随着虚拟用户数的增加,吞吐量比较平稳,呈直线状态,则说明网络带宽成为瓶颈,限制了数据传输。
Q41.场景设置有哪几种方法?
A41:面向目标的场景设置和手动场景
查看(650)
评论(1)
收藏
分享
管理
云层 发布于
2009-04-23 22:27:32
查看(678)
评论(6)
收藏
分享
管理
qiuteng258 发布于
2011-01-13 09:10:24
没有有效的实施方式,再先进的洋工具也只能变成一场游戏
南方电机制造集团有限公司(化名)是一家大型电机制造企业,由国家国有资产管理委员会直接管理,2003年的总收入为人民币153亿元,经营利润3.5亿元,是我国重要的大功率交直流电机和控制系统的制造基地之一。
2001年和2002年,公司先后成为美国通用电气工业系统业务部和运输系统部的供应商,向GE的出口占到公司出口的近40%。
一旦成为GE的供应商,企业会被要求在与GE有关的领域实施“六西格玛”(Six Sigma),实施的结果将作为评判企业能否成为GE长期供应商的一个重要标准。为此,集团领导决定向“世界第一CEO”杰克·韦尔奇学习,推行“六西格玛”管理。谁料想,一两年后,先进的洋工具却在这个传统国有大型企业集团落下了个恶名。
“六西格玛”成了质量运动
2001年4月,与GE签订供货合同不到两月,南方电机就选派了两名工艺工程师前往GE在康州的工业系统部总部,接受了两次共四周的黑带培训。
接着,公司的董事长和总经理于2002年初到GE位于纽约州克罗顿村的培训中心进行了两周高级领导力培训。回国不久,他们决定要在全集团开展“六西格玛质量运动”,要求分管质量和技术的副总全面负责“六西格玛”管理项目的实施,培训中心主任负责全面的培训工作,并由集团采购与物流部牵头,寻找合适的咨询/培训公司帮助集团早期的导入。
点评:“六西格玛”绝不是又一次质量运动,它对质量的认识要比传统意义上的质量概念广泛得多;另外,“六西格玛”不应该通过什么运动的形式来展开,而是一个对运营体系持续不断的改进过程。
战略机构成了临时小组
随后几周,集团质量与技术部、培训中心和采购部决定成立一个临时工作小组来规划并协调早期的导入工作。大家认为,该小组的工作在咨询或培训公司选定后即告结束,因为随后的工作将由质量与技术部负责项目实施。
但在由谁担任小组负责人的问题上却产生了分歧。质量与技术部认为,“六西格玛”的推广主要是项目的实施,所以应该由该部门负责。培训中心却认为,实施的预算全部从培训中心出,培训是建立“六西格玛”知识的惟一途径,自己应唱主角。在集团总经理决定让培训中心主任担当临时小组的组长之后,争论才告一段落,小组成员由质量与技术部的两名主任、培训中心采购部及采购部人员组成。
临时小组成立后,第一件事就是在集团的中高层(近200人)进行关于“六西格玛”的认知教育。培训是由2001年在GE学习过的黑带在两天里完成,由于职务和担任黑带工作的时间所限,他们无法站在公司的高度、从竞争力的需要出发来阐述实施的重要意义和领导层应该承担的责任,效果并不理想。更为糟糕的是,在那次培训中,集团的领导,包括质量与技术副总悉数缺席,使大家对集团实施“六西格玛”的决心和计划没有太多了解。
点评:尽管有两件事做对了:一是成立了协调小组,二是针对中高层作了认知培训,但这种开局方式实在太混乱了。首先,临时小组绝不是临时意义上的工作小组,而应成立一个由高层领导负责的“六西格玛”推进委员会之类的长期战略机构。其次,这个小组正确的组成应该包括集团里来自技术、质量、运营管理、各个重要业务部门、财务和人力资源的领导或专员,培训中心和采购部门(除非是代表供应链系统)恰恰可以不用参加。
因人设事,埋下隐患
临时小组同时 开展了首期黑带人员的选拔,以及对外寻求咨询/培训公司的工作。
首批黑带学员来自集团的10个部门,共42人,是由各单位领导指派、人力资源部评审后决定的,多数为有5年左右集团工作经验的工程师和初级管理者,90%是大学理工背景。
公司组织了为期1天的“热身”培训,介绍“六西格玛”的历史和主要内容。这次培训由1位去美国培训过的黑带进行,收到了预期效果,多数学员对“六西格玛”有了更深入的认识。随后,临时小组又请上海的一家培训公司来做黑带培训及项目的咨询工作,包括项目选择和辅导。
正式的黑带培训开始于2002年8月。在黑带培训开始前的一周里,培训公司派出两名大学教授,分别前往选出黑带学员的10个部门帮助部门领导选择改善项目,以保证学员能带着项目来参加学习。
由于大家对“六西格玛”缺乏必要的认识和其解决流程问题的DMAIC(“定义、测量、分析、改进和控制”的英文简写)方法之精要,加上缺乏一整套项目选择的评估标准,选出的改善机会大多不适合做成真正的黑带项目。
实际上,作为黑带项目合适的改善机会至少要具备以下四个条件:
问题直接影响到公司的一个重要的KPI(关键流程指标);
问题形成的原因和解决措施不明;
问题的解决多牵涉到流程的改善;
预计问题可以在4~6个月内完成。
由于南方电机项目定义的不严谨和不完善,相当一部分学员在完成第一周培训后仍未把改善项目确定下来,成为后来项目不能按时完成的一个重要因素。公司的临时推进小组在培训开始后就基本停止了活动,“六西格玛”实施变成部分员工的培训活动。
点评:就黑带人员的选拔来说,南方机电犯了个致命错误:没有以项目选择作为指导,以项目需要选人,而是人员选出后由人去找项目,因人设事。在后面的阶段,“六西格玛”实施的关键是项目选择。项目选择一旦失误,执行过程中的更多失误只不过是个量的区别而已。在项目执行中,没有一个机构来对项目的进展进行评估和监督,也使得相当多的项目不了了之。
洋管理工具不适合老国企?
由于缺乏严格的项目管理机制,一年后,只有两个项目勉强实施了“六西格玛”,其余都不了了之。
2003年中期,公司进行了重大的领导层改组。新总经理上任后,设立了新的集团运营管理部,强调面向流程的管理。原来的质量与技术部总经理、集团副总,改任该部的总经理,兼任集团首席执行长(即COO)。
2004年初,COO邀请咨询公司重新启动“六西格玛”活动。在正式开始实施之前,咨询顾问对第一期的实施做了详细调查,发现相当一部分领导干部对此一无所知。
了解集团曾实施“六西格玛”的部分人,认为这只不过是新任领导集团的几把火之一,这样的火早晚都要熄灭。另外,上次的实施没有任何实质性结果,也让多数中层管理者产生了疑虑:“六西格玛”是不是根本不适合像南方电机这样的老牌国企?
在给COO提交的调查报告的最后,咨询顾问的结论是:南方电机在目前的情况下,可能并不适合重新启动“六西格玛”,而是实施精益管理,逐渐推进一些面向流程的管理方法。
*作者戈泽宁现为北京普罗维智资讯有限公司CEO,全国“六西格玛”推进委员会委员。是芝加哥大学经济学博士,曾为美国通用电气公司策略小组核心成员,负责GE的“六西格玛”实施等。
附文:什么是“六西格玛”?
“六西格玛”是一种系统的、以数据为基础的流程改善方法,目的是基本消除来自每一产品、流程和服务的缺陷。“六西格玛”是对流程表现的一种量化统计描述。为了达到“六西格玛”,即流程中产生的缺陷低于百万分之3.4,任何处于顾客要求的规格以外的事情都可以定义为缺陷。
“六西格玛”与其他质量管理方法之间最明显的区别之一,就是与业务的财务指标相联系,项目流程改进的潜在财务收益是可以量化的,用于帮助我们选择和优化流程改进的项目。
查看(751)
评论(0)
收藏
分享
管理
gztester 发布于
2011-01-13 14:32:50
参考:
http://blog.csdn.net/Wenqiang_Zheng/archive/2010/12/21/6090529.aspx
在整个测试过程中,人是最重要的因素之一。不管是多好的过程,还是多好的方法,最终都需要由人来执行和完成。好的过程就像是一条高速公路,而人就是在这条高速公路上的车,好车配合好路才能够保证行驶的速度和安全。
测试经理在日常工作中的一个重要任务就是保持对测试团队成员的激励。一谈到激励,可能很多人下意识就会想到金钱,例如:给员工奖金,或者加工资。实际上,物质奖励只是激励方式的一种,但这并不是唯一的和最有效的方式。每个员工都有自己的梦想和目标,希望能够获得更多自主的空间,希望自己的才能得到施展,希望得到认可,希望自己的工作富有激情,因此,测试经理除了提供物质上的激励以外,更应该为员工提供一个施展他们才能的舞台,激发员工内在的自我激励和自我实现。而且每个员工的需求不一样,激励的方式也各不相同。例如:公开表扬对有的员工有明显的激励作用,但对于性格内向的员工,效果可能会大大打折;提供弹性的工作时间也是对员工的一种激励。下面介绍一些常见的激励方式。
1)满足员工的需求
作为团队核心的测试经理,必须针对部门内员工的不同特点“投其所好”,寻求能够激励他们的动力。每个人内心需要被激励的动机各不相同,因此,奖励杰出工作表现的方法也应因人而异。不同的人在不同时期的需求也是不一样的。员工主要的需求包括:
ü 得到尊重和认可。
ü 获得自我表现的机会。
ü 在积极的团队氛围中工作。
ü 获得一定的做决定的权力。
ü 公平的竞争环境。
ü 广阔的成长空间等。
要满足员工的需求,首先需要理解员工。这就要求测试经理在日常的工作和生活中能够多倾听、多观察,还应该注意员工的一些肢体语言或者异常的情绪波动等。测试经理可以通过以下途径获得员工的具体需求:积极倾听员工的呼声、换位思考、观察员工的情绪波动并做出积极的回应等。当员工的需求获得满足时,他们的工作效率会有很大的提高,员工的内在激励会起到重要的作用,团队会处于一个积极向上的氛围,员工的聪明才智和创造性才能够得到最大的发挥。
马斯洛需求层次理论(Maslow's hierarchy of needs),亦称“基本需求层次理论”,由美国心理学家亚伯拉罕·马斯洛提出。马斯洛是当代最伟大的心理学家之一,由于他的著作使人本心理学的观点更加丰富和清晰,所以被人们称为“人本心理学之父”。他的需求层次理论对团队激励有着很大的帮助。表1列出了根据马斯洛的需求层次理论得到的团队激励的实例。
表1 马斯诺的需求层次理论在团队激励中的实例
马斯诺需求层次
工作中的对应关系
自我实现的需要
参与挑战性的项目、创造性获得鼓励和支持、获得创新的机会
尊重的需要
获得尊重和认可、能够被委以重任
情感和归属的需要
友好的团队氛围、良好的客户关系
安全上的需要
工作的安全性、良好的工作环境
生理上的需要
基本的薪酬、工作空间、饮食
2)有效授权
测试经理在安排工作的时候,应该考虑让团队成员承担更多的责任并拥有更多的权利。授权并不一定是升职。测试经理在向其测试团队成员分配工作时,也要授予他们相应的权力,否则就不算授权。测试经理应该在合适的场合让所有的相关人员知道被授权者的权责,同时需要确保授权之后应该尽量减少干涉,要给被授权员工做相应决策的权力。
有效授权是一种很好的激励员工的方法。权力的下放同时也意味着责任的下放。员工在获得一定的决策权力的同时,也应该明白要全力以赴把事情做好,要对任务的结果负责。通过有效授权,员工的积极性和创造性能够被最大限度地调动起来,同时员工的责任感和主人翁精神会得到加强,对组织的认同感会不断提高。员工通过承担更多的责任,也获得提高自身各项技能的机会,从而获得更广阔的发展空间。但是在授权的过程中,测试经理也要注意确保授权的范围和员工的实际能力相匹配,尽量避免一开始就赋予给团队成员过多的授权和责任。在实际的授权过程中,测试经理可以以渐进的方式授予测试团队成员的权力,同时在必要的时候需要为员工提供相应的培训。
☆示例:有效授权
测试经理通常需要协调整个测试过程中的所有活动,包括测试计划和控制、测试分析和设计、测试实现和执行、评估测试出口准则和报告以及测试结束活动等。但是作为测试经理,并不需要对所有的测试活动亲力亲为,而是应该将测试活动进行划分,将测试过程中的一些活动下放到测试团队成员中去。在项目中可以采用“一事经理”的方式。所谓的“一事经理”,就是对某个独立的任务或活动具有决策权力的人。测试经理可以将测试活动中的测试环境管理、测试用例配置管理以及测试度量等任务的权力授予相应的测试人员,由其负责处理相关事宜,定期向测试经理汇报。
以测试度量为例,某个测试团队成员成为该任务的“一事经理”后,全权负责测试度量相关事宜,包括测试度量系统的设计、测试度量数据收集和测试度量数据分析等,而测试经理作为测试度量活动的一名成员而不是管理者参与到测试度量活动中。测试经理最终使用测试度量活动的分析结果作为其他活动的输入,例如:作为测试出口准则评估的输入。测试人员在“一事经理”这个方式下也得到了锻炼,自己的技能得到了增强,同时获得了整个团队的尊重和认可;测试经理也因此减少了日常的工作量,可以将更多的精力投入到其他测试管理活动中去。
3)有效沟通
沟通无时无地不在,测试经理每天要和各种不同角色的人以各种不同的方式进行沟通。有效地沟通能够节约测试经理的时间和工作量,同时也能帮助团队成员更好地完成任务。另外,有效地沟通还有助于构建一个开放的测试团队,最大限度地发挥团队的积极性。倾听是有效沟通的一个重要方面,尤其是对待团队成员的抱怨,测试经理更应该认真倾听,如果能做到认真倾听,大部分的抱怨都可以得到解决。很多时候,员工可能并没有期望问题得到解决,他们更看重的是测试经理或管理者的态度,通过认真的倾听,员工的问题即使没有得到解决,员工的不满意度也会得到很大的降低。此外,在沟通的过程中,测试经理要避免过于封闭而听不进员工的建议,或者只是进行有选择地倾听,例如:只听好的内容,对提及的问题视而不见,同时,测试经理必须对员工的意见及时进行反馈。
沟通的方式有很多,例如:面对面交流、Email、电话、文档评审等。测试经理应该根据实际需要选择合适的交流方式,例如:简短的信息传递,可以通过电话的方式很快解决;对于复杂方案的讨论,需要安排专门的会议;有些事情可以先通过Email的方式传递基础信息,给员工一个准备的时间,然后通过面谈的方式做最后的沟通。以下的建议将有利于改进沟通的效果:
ü 多听少说。
ü 使用简单、容易理解的语句。
ü 注意使用合适的肢体语言。
ü 不明白的要及时提出问题。
ü 要经常沟通以及沟通要保持热情。
☆示例:有效沟通
测试经理和测试团队成员之间如果能够建立有效的沟通渠道,团队成员和测试经理之间能够有效地交换意见,将有助于测试团队成员的激励。但是在实际的测试过程中,测试团队成员很少主动找测试经理反馈意见。尤其是以技术为主的测试团队中,测试团队成员相对比较“内向”,交流不够主动。这种情况下,测试经理可以定制一个团队沟通交流计划,团队成员每个月都有一次和测试经理单独面谈的机会。测试经理会轮流和每个测试团队成员进行面对面地交流,给员工一个反馈意见的机会。这些面谈都是在一对一的情况下进行的,团队成员不会有太多的顾虑;同时面谈的时间都是提前计划好的,如果有需要反馈的问题或建议,员工在沟通之前可以做好充分的准备。测试经理在这种方式下要把面谈的气氛调节为一种非正式的交流,可以交谈任何内容,从工作到生活。
4)提供学习和培训的机会
现代社会,科学技术迅猛发展,信息和知识急剧增加,知识更新周期缩短,创新频率加快,各种技术方法层出不穷。如果员工不积极学习,就很难跟上时代发展的步伐,甚至会被社会淘汰。因此,每个员工自身都有危机感和紧迫感,从而自身都有学习和培训方面的需求和需要。这种情况下,为员工提供良好的学习和培训的机会,显然能够激励员工创造更大的价值。通过提供学习和培训的机会,不仅员工自身的能力得到增强,对组织的认同感提高,整个团队的能力也会得到提升,从而能够更加有效地完成相关任务,并承担更大的责任。
学习和培训的方式有很多,可以在团队内部组织交流和学习、相互进行培训,也可以聘请外部专家进行培训;可以通过E-learning的方式,也可以通过课堂教学的方式。要开展学习和培训,必须将员工的兴趣和工作需要结合起来。在开展培训之前,首先收集员工的培训需求,然后结合项目或者团队的目标,从而在个人目标和团队目标之间实现共赢。学习或培训后,需要及时收集员工的反馈,不断改进培训的效率和有效性。
☆示例:提供学习和培训的机会
“岗位轮换”是一种很好的学习方式。当测试团队成员在自己的岗位上工作了一段时间以后,相关技能已经熟练掌握,这个时候都希望能够有机会再增加一些其他方面的技能。这种情况下,可以在测试团队内部进行岗位轮换,给每个员工一个学习新知识的机会。在iBAS R1.0项目中,随着测试执行的不断进行,被测试对象中发现的问题越来越少,测试人员已经开始“审美疲劳”,觉得很难再发现新的问题。这个时候,在测试团队中进行岗位轮换,原来执行IGMP系统测试的人员开始测试DHCP功能,其他人也相应地进行轮换。通过这种方式,测试人员可以掌握原来不具备的知识,增加了对整个被测试系统的了解;同时由于相互轮换,起到了一个评审的作用,测试人员对新分配任务的功能可从自己的角度重新思考,可以对原来的测试用例进行修改或补充,这样也有利于发现更多的缺陷,提高被测试对象的质量。
5)尊重和认可
每个人都希望得到别人或团队的尊重和认可。尊重和认可能够使员工对自己更加自信、对工作更加热爱,能够鼓励员工提高工作效率。给员工的认可也要及时而有效,当员工工作表现很出色时,测试经理应该立即给予称赞,让员工感受到自己受到上司的赞赏和认可。测试经理可以通过各种不同的方式认可员工的工作表现,例如:口头赞赏、书面赞美、对员工一对一的赞赏、公开的表扬等,从而不断鼓舞员工士气。对于测试人员而言,当测试人员的建议被开发人员或项目团队采用、测试人员能够在项目早期介入项目开发活动、为测试团队分配足够的资源等,这些都是对测试人员的尊重和认可,可以激励测试人员更好地工作。
☆示例:尊重和认可
“每周之星”是一种表扬员工的方式,通过这种方式可以使员工感受到被组织的认可,从而获得满足感和成就感。测试经理每周发掘团队中表现出色的员工进行表扬,是尊重和认可的重要表现形式。员工的出色表现可以是各种各样的,例如:需求评审过程中发现了很多问题、测试设计过程中有效地引入了测试自动化、为客户制定了良好的解决方案等。测试团队每周肯定都会有一些特别的事情发生,因此,总归可以发掘成为“每周之星”的员工。即使是测试团队处于项目的前期学习阶段,也有很多员工的行为是值得表扬的,例如:对及时总结或者分享学习成果的员工进行表扬。“每周之星”这样的形式不仅对员工的工作进行了认可和表扬,而且能够激励其他员工不断地努力。
6)物质奖励
上面介绍的几种激励方式更多地偏重于精神上的鼓励。实际上,除了精神激励外,物质奖励也是必不可少的,它也是日常工作中经常使用的一种方式。薪水不仅能保证员工生存,同时能者多得的薪酬机制也能有效地起到激励效果。物质奖励的多少依赖于员工能为公司带来的价值,例如:对于为公司创造出高利润、开发出赢利新项目的核心人才,通过加薪激励是必不可少的。在使用物质奖励方式的时候,一个重要的考虑因素是公平。如果某个员工的贡献突出,那么可以对这个员工进行单独的奖励。假如突出的是团队共同努力的结果,那么需要对整个团队进行奖励。同时物质奖励要有充足的理由,确保只有表现优秀的员工或者团队才能够获得物质奖励。
☆示例:物质奖励
物质奖励的方式既可以是单次奖金的形式,也可以是加薪的方式。在平时的激励过程中,测试经理应该综合应用这两种形式。每个季度可以对个人或团队进行一次评比,对表现突出的优秀个人或者优秀团队进行单次的奖金激励。每年对团队成员进行综合考核,根据团队成员的年度表现,对不同贡献的员工进行不同程度的物质奖励,可以是年度的加薪,也可以是年度加薪和单次的年终奖相结合的方式。
上面介绍了几种常见的激励方式,其实,激励的方式还有很多,例如:建立良好的团队氛围、鼓励大家注意身体健康、重视工作和生活的平衡等。在日常管理过程中,测试经理应该灵活应用各种激励方式。
激励测试人员的方式有很多,同时也有很多方式会打击测试人员的积极性,造成消极的影响,例如:测试人员在一个几乎看不到结束期限的项目上工作;测试人员致力于保证产品的质量,并且投入了额外的时间和精力,但是由于一些外部因素影响,输出的产品仍旧没有满足计划中设定的目标;尽管测试人员尽了最大的努力,但还是没有及时完成测试任务;如果测试人员的贡献没有被理解和衡量,不管最终结果是否成功,对测试人员而言都很可能造成消极的影响。
查看(362)
评论(0)
收藏
分享
管理
Lennon 发布于
2011-01-11 10:17:36
以下转自:http://www.chedong.com/blog/archives/000033.html (加粗的部分是另一个转载的人加的,跟我一点关系都没有)
Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
最早使用的压力测试工具是apache的ab(apache benchmark),apache ab做重复压力测试不错,但是每次只能测试一个链接,如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
SIEGE is an http regressive testing and benchmarking utility. It was designed to let web developers measure the performance of their code under duress, to see how it will stand up to load on the internet. It lets the user hit a webserver with a configurable number of concurrent simulated users. Those users place the webserver “under siege.” The duration of the siege is measured in transactions, the sum of simulated users and the number of times each simulated user repeats the process of hitting the server. Thus 20 concurrent users 50 times is 1000 transactions, the length of the test.
下载/安装
Siege时一个开放源代码项目: http://www.joedog.org
下载:
# wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz
解压:
# tar -zxf siege-latest.tar.gz
进入解压目录:
# cd siege-2.65/
安装:
#./configure ; make
#make install
#siege –help (如果有help出现,则已经安装成功)
siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.chedong.com.url文件
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
….
siege -c 20 -r 2 -f www.chedong.com.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.chedong.com.url 任务列表:URL列表
输出样例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数
注意:由于速度很快,可能会达不到并发速度很高就已经完成。Response time显示的是测试机器和被测试服务器之间网络链接状况。Transaction rate则表示服务器端任务处理的完成速度。
辅助工具:
增量压力测试:
为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒
输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78
参考:
开源测试工具:http://www.opensourcetesting.org/performance.php
压力测试工具:HammerHead 正在试用中
查看(2483)
评论(0)
收藏
分享
管理
gztester 发布于
2011-01-08 14:11:06
国外技术站点Mashable.com评出了开发人员在2011年应该关注的5项Web开发技术,包括jQuery Mobile(jQuery移动版)、Hardware-Accelerated Web Browsers(基于硬件加速的浏览器)、Node.js(服务器端JavaScript)、Real-Time Clickstream Sharing(实时点击流分享)、NoSQL Databases(NoSQL数据库)入选。
1.jQuery Mobile(jQuery移动版)
jQuery 已经成为JavaScript事实上的代名词,很大程度上是因为其可扩展性,易用性以及在项目管理方面可控。随着用于平板电脑和智能手机等设备的触屏优化技术的演进,以及与此相关的web框架的发展,jQuery Mobile 将成为跨平台,支持多设备的手机应用的非常重要的技术选择之一。
越来越多的开发者开始考虑使用html5技术来开发移动应用,建立一个稳定的易用性好的JavaScript框架将成为移动技术开发人员的重要选择。jQuery Mobile具备成为这一框架的事实上的基础。(因jQuery目前的应用范围相当广泛和普遍)
2.Hardware-Accelerated Web Browsers
由于ie9使用了 DirectX10以及硬件加速技术,大幅度提高了浏览器的速度和承载能力,因此Internet Explorer 9 (IE9) 目前相对于其他竞争对手来说速度奇快。Google 和 Mozilla 必然会争先抢后地使用这些相关技术譬如硬件加速技术来应对来自 IE9的压力和竞争。今年,我们大家的浏览器定会飞速,对我们大家绝对是利好消息。
3.Node.js(服务器端JavaScript)
Node.js技术被很多网站描述成为 事件驱动的 JavaScript. V8 引擎。本质上,他是一个工具,为了用JavaScript技术来编写服务端事件驱动的工具集。什么意思?简单的说,技术编程的时候,根本不需要等待一个输入输出I/O 操作完成才能去进行另一个输入输出操作。对于 Node.js 来说,意味着它可以在服务端做所有数据运算等工作,减轻了客户端的压力。对于一些数据处理类的app应用来说,像是像实时应用、搜索引擎web爬虫、文件上传,流媒体技术等等,速度是至关重要的首要环节。
Node.js 作为web前端技术实现显示层扩展到使用服务端JavaScript技术,将在 2011年受到广泛的应用。
4.Real-Time Clickstream Sharing(实时点击流分享)
有无数多的方法来实现将用户分享的内容呈现到互联网上,包括今年出现的一些社交网站分享或者一些在线分享或者在线发布工具等。随着大规模集成分享按钮的应用,以及逐渐采用客户端、weidget页面组件、和在线书签等的应用方式,这,将使分享越来越容易和简便。实时分享的下一方向将会是个人在线阅历或经验分享,在 2011年,这点将会决定互联网是否更加好用。
5.NoSQL Databases
NoSQL,是一个泛定义词汇,用来说明取代现有使用SQL的数据技术,这种NoSql技术不会采用目前已经广泛使用的传统关系型数据库技术。这种 NoSQL技术近些年已经开始兴盛。无表数据库技术已经被Google Amazon 谷歌和亚马逊等巨头所关注,其取代技术有 Google的 BigTable技术和 亚马逊Amazon的 Dynamo技术,阿帕奇的Apache Cassandra, MongoDB, CouchDB, Voldemort 以及Riak技术等等。
诚然,不同的技术实现不代表着新技术是更好的,我们肯定不会像扔掉小孩子一样轻易放弃原有技术,技术实现的过程总是有所取舍。就像Ted Dziuba wrote所说,“by replacing MySQL or Postgres with a different, new data store, you have traded a well-enumerated list of limitations and warts for a newer, poorly understood list of limitations and warts.”(大致意思为:选择取代 MySQL或者 Postgres数据库技术,而使用一个新的不同的技术方案,就意味着你已经使用了一个有很多局限性的不成熟技术,来取代另一个毛病多多的旧技术。)
尽管如此,NoSQL技术在 2011年仍然将是唯一的一个取代目前关系型数据库的新技术,这个新技术在过去几年发展,一直朝着这个方向发展。
查看(325)
评论(0)
收藏
分享
管理
testtoone 发布于
2010-12-22 15:59:42
Dim qtApp
Dim qtTest
Set qtApp = CreateObject("QuickTest.Application") ' 创建QTP对象
qtApp.Launch 'Start QuickTest
qtApp.Visible = True ' 设置为可见
qtApp.open "C:\Test1",True '打开脚本
Set qtTest=qtApp.Test '返回脚本对象
qtTest.run '运行脚本
WScript.Sleep 5000
qtTest.Close '关闭脚本
qtApp.Quit '关闭 QTP
Set qtTest=Nothing
Set qtApp=Nothing
自己写的例子,记忆力越来越不行了,mark一下
查看(233)
评论(0)
收藏
分享
管理
zmmandppm 发布于
2010-12-20 14:28:07
最近在看薛涌的《一岁就上常青藤》,虽然是育儿书,但看着看着觉得其实跟管理很相通。还没看完,但基本能把握主旨,我总结的,可能还不够:1小班讨论的授课比大班满堂灌的效果好;2激发内在兴趣促其主动学习比强迫吸收效果好;3按照自己的兴趣均衡发展比功利的应试效果好,后者仅仅培养考试成功者,前者培养的是人生的成功者。而第1条是后面2条的基础,也是操作层面的建议。其中的例子基本都是靠中美两国小孩教育方式理念的对比的出来的优劣判断。说实话,看完了就又觉得在中国没法待了,孩子过得太不幸福了,太扭曲了,这纯属育儿范畴,就不展开了。说说我觉得跟管理相同的地方--讨论班。
这上面说的,基本常青藤盟校基本上课都采取讨论班形式,教与学的互动十分直接频繁,学生也非常自信,往往一个问题还没等老师说完,就提出自己的意见,主意大得很,一堂课下来,各个方面角度都进行了充分的讨论。这样的教学效果能不好吗?反观一般的州立大学,都是百十人的大课,填鸭式的教学,等老师真的提问题了,反而没人想问题,因为思维已经僵化了。看到这我就太有感触了,大学课堂就是在记笔记抄作业的循环中过来的,四年下来感觉啥也没学到,真是不堪回首,中国的大学基本全都这样吧。
中国的企业也基本都是这样的,老板发指令,底下就表示执行呗。好不好,骂一通,反正也不是一个人的事儿。开会的时候都是领导一个人在说,等他想要表现一下民主,和蔼的询问大家还有什么问题的时候,鸦雀无声,此地无声胜有声。不知道这时候老板是得意还是无奈,聪明的老板应该不会得意。这样的场景后面会有两个画面:有的在勾心斗角,都不在台面上;有的在充耳不闻,继续惯性行事。总之,老板自己在那里唱独角戏,没人惹他,但实际上是非暴力不合作,别看他高高在上,他想的东西能推行出一半付诸实行就不错了。想想我们大学的课堂,一节课能听懂一半是不是就算好的了?可怜老师声嘶力竭的在哪里讲着。
在做QA之前的那个准外企,大事小事就特别爱讨论,动不动就去会议室pk一下,头脑风暴一下。大到目前部门的整体发展,小到一个“提交-校对”流程,都是大家共同creat出来的,我感觉那几年里,虽然不直接做技术(做文档),但我的思维活跃度非常之高,经常有好点子,有了就能说,说了就有回应,无论是来自领导的还是组员的,很自信。因此当我面临职业发展的瓶颈的时候,我完全有信心自己能够转型并且一样做的好。但当初从一个老国企出来的时候,虽然号称“科研人员”,但自己严重信心不足,不知道自己是个什么定位。
其实一个团队的成员,就跟一个学生一样。你如果让他充分展示自己,发表他的看法,及时鼓励成绩,纠正偏差,他的进步会让你吃惊!但我们一般的国内企业却含蓄有余,可能跟中国人谦虚的文化有关吧。怕话多有“就会耍嘴皮子”之嫌。任何事做好了似乎是应该的,只是默许罢了,最多在年会酒桌上拍拍肩膀“这小子不错”之类的;做不好也很少当面提出,然后背后再说三道四。这些滞后的评价非常伤害团队的进步。
讨论班的实质其实是鼓励冲破思维定势,创造性多方面的思考问题。其实这更是开发团队中评审的目的。可看看我们平时的评审搞得是多么暮气沉沉:专家就那几个,提出的意见当然权威,小弟一大堆,都是抱着学习的目的来听,就算有点小想法,也觉得不成熟,或者“专家都没提这个,看来不重要”的想法。为什么他们会如此拘谨?就是平时没有鼓励大家多多发言,平等发言的氛围。总是那几个人在说,久而久之,也就只能听到那几个人在说了。当团队中的新人都没有了锐气,这个团队还有什么创造性可言呢?
我是典型的中国式教育下出来的学生,常青藤的那种讨论班模式在学生时代一次也没实践过,我想我肯定错过很多可能的成长,这已是无法弥补的遗憾。但就在毕业三年后的那个准外企里,我似乎摸到了这根线,讨论、分享、头脑风暴...已深深嵌入我的思维,对我当前的质量工作是重要的工具。
也许我们一辈子都无法接收到最顶尖的常青藤式教育,但作为已经拥有自主思维的个体,我们可以自己创造常青藤式的思想,成就个人,成就你所在的团队的优秀。就从讨论班开始吧!
查看(461)
评论(0)
收藏
分享
管理
qiuteng258 发布于
2010-12-20 14:22:25
为了能够更好对测试过程进行管理,必须对测试人员有一个客观、全面的评价。下面是本人在工作中的一些体会希望能给大家带来一些启发:
一、测试人员工作绩效评价的误区
1、 仅从提交的问题单数量、测试执行用例数量来判断测试人员的好坏
这种做法明显缺乏全面性。问题单的数量只是评估测试质量的一个方面,我们更需要看中实际的测试质量。这就需要考察问题单的质量、测试的难度、问题单的级别。
例如:模块A很不稳定,潜在的问题数可能有100个,由测试人员甲负责测试,他一个月执行300个用例,提交50个问题单,发现30个有效问题,有10个严重问题;
模块B比较稳定,潜在的问题数可能有20个,由测试人员乙负责测试,他一个月执行100个用例,提交20个问题单,发现18个有效问题,有8个严重问题;
从上述测试执行结果来看,甲提交的问题单数量和执行用例数量都要远远高于乙,但是从测试的质量来看,模块B的遗留问题显然少于模块A,甲执行测试的充分性显然不如乙,从问题单质量来看,甲提交的问题单虽然很多,但近半数是非问题,做了无用功,还影响到开发人员对问题的定位所消耗的时间。
因此,必须要走出用问题单数量、用例数量评价测试人员的误区。
2、 对测试人员发现的问题的价值没有进行评估
发现1个系统架构设计方面存在的缺陷和隐患,远比发现几个普通界面的显示问题要有价值的多。因此,在对测试人员进行评价时,必须区分不同问题的重要性和价值。
3、 不重视测试文档的质量
测试文档的质量往往是测试人员的测试水平的反映,只有对系统进行了充分的、深入测试的测试人员才能写出高质量测试报告,说明测试的全面性和测试过程的质量。
4、 不重视测试人员的综合能力
首先,必须考察测试人员的责任心,如果一个测试人员工作不符责任,随意敷衍,即使提交的问题单数量多,也不能证明他测试的质量高。其次,需要关心测试人员的工作积极性,积极工作的态度不仅能带来很高的测试质量,还能提高整个团队的积极向上的风气。还有,测试人员的沟通能力,如果一个测试人员和开发人员对问题沟通交流不畅,甚至经常引发争执,这显然会影响测试工作的效率。
二、建议对测试人员进行综合性的全面评价
评价方法如下:
查看(560)
评论(0)
收藏
分享
管理
云层 发布于
2010-01-22 13:22:29
以google搜索的提示ajax作为基础,介绍了针对这种情况下的AJAX脚本开发思路和案例
tudou地址:
http://www.tudou.com/programs/view/tB5iUma4jt0/
播放列表地址:
http://www.tudou.com/playlist/playindex.do?lid=7760429&iid=45198860&cid=25
下载地址:
ftp://user1:user1@www.atstudy.com/cloud/ajax.swf
关键技术:
ajax原理,http协议捕获,录制选项调整适应ajax,关联获得ajax,参数小应用
脚本如下:
Action()
{
web_url("www.google.cn",
"URL=http://www.google.cn/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
LAST);
web_url("porridgeday10-hp.gif",
"URL=http://www.google.cn/logos/porridgeday10-hp.gif",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://www.google.cn/",
"Snapshot=t2.inf",
LAST);
web_url("cn_icp.gif",
"URL=http://www.google.cn/intl/zh-CN_cn/images/cn_icp.gif",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://www.google.cn/",
"Snapshot=t3.inf",
LAST);
web_url("4nkMpw1Qe4k.js",
"URL=http://www.google.cn/extern_js/f/CgV6aC1DThICY24rMAo4UEACLCswDjgLLCswETgTLCswFjgXLCswFzgFLCswGDgFLCswGTgSLCswJTjJiAEsKzAmOAksKzAnOAQsKzA8OAIsKzBFOAEs/4nkMpw1Qe4k.js",
"Resource=1",
"RecContentType=text/javascript",
"Referer=http://www.google.cn/",
"Snapshot=t4.inf",
LAST);
web_url("favicon.ico",
"URL=http://www.google.cn/favicon.ico",
"Resource=1",
"RecContentType=image/x-icon",
"Referer=",
"Snapshot=t5.inf",
LAST);
web_url("nav_logo7.png",
"URL=http://www.google.cn/images/nav_logo7.png",
"Resource=1",
"RecContentType=image/png",
"Referer=http://www.google.cn/",
"Snapshot=t6.inf",
LAST);
web_url("toolbar_animation_20090618.png",
"URL=http://www.google.cn/intl/zh-CN/images/toolbar_animation_20090618.png",
"Resource=1",
"RecContentType=image/png",
"Referer=http://www.google.cn/",
"Snapshot=t7.inf",
LAST);
web_url("csi",
"URL=http://www.google.cn/csi?v=3&s=webhp&action=&e=17259,22766,23276,23309,23337&ei=hyBZS-KsBMyTkAWDpLzrBA&rt=prt.234,xjsls.281,ol.734,xjses.734,xjsee.812,xjs.890",
"Resource=0",
"RecContentType=text/html",
"Referer=http://www.google.cn/",
"Mode=HTTP",
LAST);
//lr_save_var()
web_reg_save_param("searchid",
"LB=[\"",
"RB=\",",
"Ord=ALL",
"Search=Body",
LAST);
web_url("search_7",
"URL=http://www.google.cn/complete/search?hl=zh-CN&xhr=t&q=loadrunner&cp=10",
"Resource=1",
"RecContentType=application/json",
"Referer=http://www.google.cn/",
"Snapshot=t14.inf",
LAST);
lr_save_string(lr_paramarr_random("searchid"),"temp");
lr_think_time(6);
web_url("search_8",
"URL=http://www.google.cn/search?hl=zh-CN&source=hp&q={temp}&aq=2&oq=loadrunner",
"Resource=0",
"RecContentType=text/html",
"Referer=http://www.google.cn/",
"Snapshot=t15.inf",
"Mode=HTTP",
LAST);
web_url("nav_logo7.png_2",
"URL=http://www.google.cn/images/nav_logo7.png",
"Resource=1",
"RecContentType=image/png",
"Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner",
"Snapshot=t16.inf",
LAST);
web_url("gen_204",
"URL=http://www.google.cn/gen_204?mgmhp=shp1&ct=v&cd=false",
"Resource=0",
"RecContentType=text/html",
"Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner",
"Mode=HTTP",
LAST);
web_url("csi_2",
"URL=http://www.google.cn/csi?v=3&s=web&action=&e=17259,22766,23265,23276,23309,23337&ei=kCBZS5elFM6OkQXJttj2BA&rt=prt.343,xjses.405,xjsee.452,xjsls.452,xjs.577,ol.858",
"Resource=0",
"RecContentType=text/html",
"Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner",
"Mode=HTTP",
LAST);
return 0;
}
查看(3863)
评论(18)
收藏
分享
管理