收集天下好文,各位朋友尽情发言。

发布新日志

  • 20个你必须知道的SEO概念

    simplezhuo 发布于 2011-05-02 17:31:59

    作为一个互联网民工,对SEO有些基本认识还是需要的,即是我没有专门做相关的工作;在前阵子,也去听了几个从google、baidu挖过来的牛人的搜索引擎分享。今天正好看到篇文章,转载如下吧,还不错的 ^_^
    原文:http://www.amolee.com/20-seo-terms-you-must-know.html

    如果你拥有一个网站或独立博客,或者你的工作多少和互联网有关,那你一定耳濡目染多多少少对SEO(搜索引擎优化)有一定了解。本文将列举其中20个SEO领域最常用的名词和概念,如果你打算熟悉和了解他们请继续阅读。当然,如果你已经无所不晓,那你可以权当补习功课,或可以直接忽略本文。

    SEO

      1. 搜索引擎营销 (SEM)

      搜索引擎营销(SEM)英文全称为Search Engine Marketing,意指通过搜索引擎进行服务和产品的营销。搜索引擎营销又主要分为两种:搜索引擎优化(SEO)和付费点击(PPC,Pay-Per- Click)。搜索引擎优化(SEO)指通过优化网站和页面并让它们在搜索结果的页面中展示,而付费点击(PPC)指通过购买搜索引擎的点击将用户带到自己的网站。(通常)这些点击来自搜索结果页面中的“赞助商链接”(译注:显然不适用于百度)。

      2. 反向链接(Backlink)

      反向链接(Backlink)又称为“回指链接”“入链”和“简易链接”,指从其他网站指向你的网站的一个超级链接。反向链接之所以对SEO异常重要,是因为它们直接影响一个网页的页面等级(PageRank),以及这个页面在搜索结果中的排名。

      3. 页面等级(PageRank)

      页面等级( PageRank) 是Goolgle用来评估一个页面相对于其他页面的重要性的一个算法规则。这个算法规则最基本的意思就是说,如果A页面有一个链接指向B页面,那就可以看作是A页面对B页面的一种信任或推荐。所以,如果一个页面的反向链接越多,再根据这些链接的价值加权越高,那搜索引擎就会判断这样的页面更为重要,页面等级(PageRank)也就越高。

      4. 链接诱饵(饵链)(Linkbait)

      链接诱饵(Linkbait),顾名思义这是一个网站或一个博客上为了尽可能多地吸引反向链接(目的是提高网站的PR值)而存在的一段内容。通常,这些做为诱饵的内容为文字内容,但也可以是一段视频、一张图片、一个测验或其他的热门的内容。最经典的诱饵内容的例子是“十大(Top 10)”,因为这样的内容在一些社交网站很容易流行起来成为热门话题(译注:这个话题貌似已经臭街了)。

      5. 互链车间或互链作坊(Link farm)

      互链工厂或互链作坊(Link farm)是指很多网站(通常数量很大)为了提高组成一个类似车间或作坊式的团体,通过彼此的互相链接来提高团体每一个的网站的页面评级的手段。早期,这种方法很有用,但现在已经成为一种不耻的作弊手段(并可能会收到惩罚)。

      6. 锚文本(Anchor text)

      锚文本(Anchor text)在反向链接中是指一个页面中可点击的文本,而其中的关键词对搜索引擎优化(SEO)有很大的帮助,因为Google会将这些关键词和你的内容关联起来。

      7. 链接属性-NoFollow

      Nofollow是网站管理员使用的一个链接属性,其目的是告诉搜索引擎他们并不是为该链接所指向的网站投票。这种链接也可能是网站用户自己创造的内容(比如博客评论中的链接),或者是一个付费交易的链接(比如广告或赞助商的链接)。当Google识别到这些反向链接的NoFollow属性后,基本就不会在页面评级和搜索结果排名的算法中将这些链接的贡献计算在内了。

      8. 链接修饰(Link Sculpting)

      链接修饰(Link Sculpting)是指网站管理员对网站上其他网站的反向链接进行属性设置。比如,管理员给链接添加Nofollow属性,这可以让管理员决定利用自己的网站为具体某个网站提高页面评级,或者不帮助具体某个网站提高网页评级。不过,现在这种做法的作用已经微乎其微,因为Google已经决定要用自己的算法来决定怎么处理链接的Nofollow属性。

      9. 页面标题(Title Tag)

      页面标题(Title Tag),顾名思义是指一个页面的标题中,这也是Google搜索算法中最重要的一个参考。理论上,你的页面标题要独一无二并尽可能多地包括页面内容中的关键词。你在浏览网页时可以从浏览器最上方看到一个网页的标题。

      10. 元标签(Meta. Tags)

      元标签(Meta. Tags)和页面标题一般,主要用于为搜索引擎提供更多关于你页面内容的信息。元标签位于HTML代码的头部,还有就是对长眼睛的访客是不可见的。

      11. 搜索算法(Search Algorithm)

      Google的搜索算法是为了给每一次搜索请求找到最为相关的网站和页面而设定。这个算法考量的因素超过200种(谷歌自称),其中包括页面等级、标题、元标签、网站内容,以及域名的年龄等。

      12. 搜索结果页面(SERP)

      搜索结果页面(SERP)的英文全称为Search Engine Results Page.基本上,这就是你平时在Google键入关键词回车后的页面了。你的网站从这个页面得到的流量取决于你的网站在搜索结果中的排名等级。

      13. 沙盒(Sandbox)

      Google除了所有网站的索引之外,还有一个单独的索引沙盒,那里面是新近发现和收录的网站。当你的网站存在这个沙盒之中时,它就不会在一般的搜索结果中出现,而只有当Google确认了你的网站是合法的,这才会将其从沙盒中移出进入所有网站的索引。

      14. 关键词密度(Keyword Density)

      如何判断一个特定页面的关键词密度?你只要将一个关键词使用的次数除以页面的总词数就可以了。关键词密度过去是搜索引擎优化中非常重要的一个因素,因为早期的搜索算法对此十分看重,但现在已经时过境迁了。

      15.关键词堆积(Keyword Stuffing)

      因为早期搜索算法对关键词密度非常看重,站长们便通过使用人工堆积关键词的手法来作弊和蒙骗搜索引擎。这种手法就叫做关键词堆积,当然现在已经没用了,而且你还可能会因此受到惩罚。

      16. 障眼法(Cloaking)

      障眼法(Cloaking)是指利用代码在同一个页面上让机器人和真人看到不一样的内容。其目的是为了让页面通过关键词而提升页面评级,而真正的目的是推销和出售各种不相关的产品或服务。当然,这也是一种作弊的手段,有很大可能会受到搜索引擎惩罚,甚至剔除。

      17. 网络爬虫或网络蜘蛛(Web Crawler)

      网络爬虫或网络蜘蛛(Web Crawler)也简称为爬虫或蜘蛛,代表搜索引擎在网路上进行浏览,目的是发现新的链接和页面,这是进行索引的第一个环节。

      18. 复制内容(Duplicate Content)

      复制内容(Duplicate Content)也叫“重复内容”,通常是指一个页面在引用了站内或站外的大段实质内容,或者是存在完全相同和极其相似的情况,而这也是一个网站应该尽量避免发生的情况,否则很容易让你的网站受到惩罚。

      19. 标准链接(Canonical URL)

      标准链接(Canonical URL)是指一个网页的链接要符合规范和标准。

      20. 机器人协议(Robots.txt)

      机器人协议(Robots.txt)不过是一个TXT文本文件,存在于你域名根目录之下,作用是将网站的目录结构信息告诉爬虫和蜘蛛,并限制其对特定文件夹和内容的访问,或者是完全将它们关在门外。

      英文链接:20 SEO Terms You Should Know

  • 高负载网站架构

    lychbeyond 发布于 2011-04-27 10:26:05

    1, LVS做前端四层软件均衡负载
    LVS是基于IP虚拟分发的规则, 不同于apache,squid这些7层基于http协议的反向代理软件, 前者在性能上能得到更好的保证!
    另外, 后者在处理http header信息时, 会显得很被动.

    开源, 高性能, 这不就是我们所需要的吗?

    另外, 针对大访问量, 还可以使用DNS轮询+LVS集群.
    当然, 比起硬件均衡负载, 单点故障的风险会更大.

    2,squid 做前端静态页面缓存, 包括 css, javascript
    squid 是业内公认的优秀代理服务器,其缓存能力更让许多高负载网站青睐!(比如新浪,网易等)
    使用他, 通过本机内存+ 磁盘的集群存储方案, 能够起到很好的加速作用!

    使用squid, 也是大部分网站的节约成本之道.

    3, lighttpd 提供图片, css, javascript. 服务. 做到静态与动态分离.
    采用lighttpd, 而不使用apache, 是因为它对静态内容的响应速度高于apache一到三倍.
    这对于高负载网站是梦寐以求的.

    加上, 在其前端部署了squid, 真正做到了, 超高命中率, 超快响应速度.

    3,apache 用来处理php, url重定向, url过滤, 防洪水攻击等等.
    apache是业内主流http服务器,比较看重它的稳定性, 扩展性.
    使用它, 制作一些推广页面, 一些需要快速开发的页面, 最好不过了.

    最重要的是, 它可以使用mod_jk或mod_proxy对复杂业务请求的进行代理.
    比如, 将用户注册, 代理给jboss, 用java开发.

    需要提一下的是, apache的module开发.
    一句话 - 非常实用.
    你可以只用apache提供的类库, 就能很方便的开发一个http的日志处理模块.

    另外, 它也可以与squid 集成, 从而, 形成一条很完美的加速链.

    4,JBOSS 用来处理含复杂的业务逻辑与充当JAVAEE容器的角色
    JBOSS是red hat旗下的优秀中间件产品,在java开源领域小有名气,并且完全支持j2ee规范的,功能非常强大
    使用他,既能保证业务流程的规范性,又可以节省开支(免费的)

    java的优势, 就不多说了.


    5,mysql数据库
    使用mysql数据库,单机达到百万级别的数据存储,及快速响应,应该是没问题的.
    如果网站本身访问增长很快, 可以考虑mysql 集群.

    从而获得高伸缩性, 高访问性能.

    不管是通过 master+slaver的主从结构.还是根据业务进行分表.
    mysql的集群特性, 都是网站首选的.

    6,memcache作为分布式缓存
    基于中央存放的缓存载体, 一般都需要集群.
    基于c写的memcache, 可以很自豪的顶起高性能缓存的帽子.
    它几乎可以缓存任何数据. 包括 html, java对象, 文件等等.

    重要的是, 它给jboss, apache等服务器实现高效的缓存方案, 提供了有力的保证.



    LVS

    ======================================
    .....
    apache mod_jk / mod_proxy+ jboss
    apache mod_jk / mod_proxy+ jboss
    .....
    squid + lighttpd
    squid + lighttpd
    ....
    =================================
    ....
    mysql + memcache
    mysql + memcache
    ......
    ================================
  • WEB 服务器的集群

    lychbeyond 发布于 2011-04-27 10:27:09

    集群(Cluster)
        所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
    负载均衡(Load Balance)  
        网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。
    特点
     (1)高可靠性(HA)。利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
    (2)高性能计算(HP)。即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析、化学分析等。
    (3)负载平衡。即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
    LVS系统结构与特点
    1. Linux Virtual Server:简称LVS。是由中国一个Linux程序员章文嵩博士发起和领导的,基于Linux系统的服务器集群解决方案,其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的体系。许多商业的集群产品,比如RedHat的Piranha、 Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代码的。
    2. 体系结构:使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器。物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得像一个服务于同一IP地址的虚拟服务器。
    3. LVS的三种模式工作原理和优缺点: Linux Virtual Server主要是在负载均衡器上实现的,负载均衡器是一台加了 LVS Patch的2.2.x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中。
    负载均衡器可以运行在以下三种模式下:
    (1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。
    (2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等.
    (3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。
      以四台服务器为例实现负载均衡:
      安装配置LVS
      1. 安装前准备:
      (1)首先说明,LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载状况,调整负载分配策略,充分利用集群环境中的每一台服务器。如下表:
      Srv Eth0 Eth0:0 Eth1 Eth1:0

      vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254

      vsbak 10.0.0.3 192.168.10.102

      real1 192.168.10.100

      real2 192.168.10.101

      其中,10.0.0.2是允许用户访问的IP。
      (2)这4台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的real1,real2,然后由real1,real2分别处理。 Client为客户端测试机器,可以为任意操作系统。
      (3)所有OS为redhat6.2,其中vs1 和vsbak 的核心是2.2.19, 而且patch过ipvs的包, 所有real server的Subnet mask 都是24位, vs1和vsbak 的10.0.0. 网段是24 位。
      2.理解LVS中的相关术语
      (1) ipvsadm :ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。
      (2) 调度算法: LVS的负载均衡器有以下几种调度规则:Round-robin,简称rr;weighted Round-robin,简称wrr;每个新的连接被轮流指派到每个物理服务器。Least-connected,简称lc;weighted Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。
      (3) Persistent client connection,简称pcc,(持续的客户端连接,内核2.2.10版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下,第一次连接后,所有以后来自相同客户端的连接(包括来自其它端口)将会发送到相同的物理服务器。但这也会带来一个问题,因为大约有25%的Internet 可能具有相同的IP地址。
      (4) Persistent port connection调度算法:在内核2.2.12版以后,pcc功能已从一个调度算法(你可以选择不同的调度算法:rr、wrr、lc、wlc、pcc)演变成为了一个开关选项(你可以让rr、 wrr、lc、wlc具备pcc的属性)。在设置时,如果你没有选择调度算法时,ipvsadm将默认为wlc算法。 在Persistent port connection(ppc)算法下,连接的指派是基于端口的,例如,来自相同终端的80端口与443端口的请求,将被分配到不同的物理服务器上。不幸的是,如果你需要在的网站上采用cookies时将出问题,因为http是使用80端口,然而cookies需要使用443端口,这种方法下,很可能会出现cookies不正常的情况。
     (5)Load Node Feature of Linux Director:让Load balancer 也可以处理users 请求。
    (6)IPVS connection synchronization。
     (7)ARP Problem of LVS/TUN and LVS/DR:这个问题只在LVS/DR,LVS/TUN 时存在。
  • 如何从一名测试员转型为管理人员

    我的盖盖1 发布于 2011-04-25 15:26:44

    如果你是测试员或是高级测试员,有志转向管理发展,那么需要加强以下内容,至少要做到几点:
      1. 测试计划的编写(要结合测试的项目,能以此来控制和确定测试所需人员,设备及时间来管理测试时间)
      2. 要熟悉BUG跟踪工具及软件测试流程.(如: TD, Bugzilla, CQ等)
      3. 要熟悉配置管理工具. (如: CVS, VSS等)
      4. 要熟悉自动化工具.(例如:WinRunner, QTP, Robot, RFT, Automation等,能结合录制完的脚本编写代码)
      5. 要熟悉压力及性能测试工具.(例如: LoadRunner, webload, silkperformance等,能结合相关数据,分析出性能瓶颈)
      6. 要熟悉或精通一门语言. (例如: Java, C++)
      7. 要熟悉数据库.(例如: Oracle, DB2, SQLServer, MySQL)
      8. 要熟悉主流操作系统. (例如: HP Unix, IBM AIX, Sun Solaris, Red Hat Linux, SuSE Linux, Windows)
      9. 能用英文流利的和老外交流以及往来Email.
      10. 语言表达能力强,表达问题清晰明了.
      11. 沟通能力强,能和上级/开发经理很好的达成测试相关/BUG事宜.
      12. 学习技术的能力要强,能快速上手一个新的技术.
      13. 乐于与人交流.
    转载:http://swverification.blog.sohu.com/45077085.html

  • zhuan:软件测试面试

    lxm274129864 发布于 2011-04-26 10:22:11

    谈谈软件测试面试问题

    前段时间公司招聘软件测试人员,虽然基本上都是招的应届毕业生,但我还是从现实以及网络上找到了一些应聘软件测试/QA的面试问题集,当然这个也都不会有标准答案的,现在只是以偶的一点理解加上网上的一些内容列举出来供有需要的XDJM们作一下参考:

    1. 首先一般都是比较老套点的问题:介绍一下你的经历。
    HOHO......这个问题我想谁都被问过吧,注意一下重点,不要紧张慢慢说就OK了。

    2. 老套话说了就可以马上切入正题了。根据你的经验说说你对软件测试/质量保证的理解?
    这个就要仁者见仁、智者见智了,也基本上都是书上的东东,如果能有一些自己独特的想法那就最好啦,呵呵

    3. 理解完了那当然就要问一下是不是对软件测试了解啰。这就轮到问软件测试的流程是什么,你原先的公司又是怎么的流程了?
    前面个问题也还是书本上的东西,一般介绍软测的书上都有,实际上国内一般的中小公司根本就达不到书上所说的那些个测试规范,测试流程也是如此,没办法,这就是现在我们整个大的测试环境,这个问题照着书上说的办就行了,后面那个知道该怎么做了吧,尽量把原来公司的测试流程言简意赅的表达出来。

    4. 接着问题就可以有一大堆了,这些问题很多都是要看自己的测试经验以及对测试的理解来作答了,如:
    (1) 你对SQA的职责和工作活动(如软件度量)的理解:
    SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要是可以要高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等;

    (2) 说说你对软件配置管理的理解:
    项目在开发的过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性能及风险的水平。软件的规模越大,配置管理就显得越重要。还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并且只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS等,偶只用过CVS,对其它的不熟悉

    (3) 怎样写测试计划和测试用例
    简单点,测试计划里应有详细的测试策略(测试方法等),合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。

    (4) 说说主流的软件工程思想(如CMM,CMMI,RUP,XP,PSP,TSP等)的大致情况以及你对它们的理解:
    CMM:SW Capability Maturity Model 软件能力成熟度模型,其作用是用于软件过程的改进、评估及软件能力的评鉴
    CMMI:Capability Maturity Model Integration 能力成熟度模型集成 CMMI融入了大部分最新的软件管理实践,同时弥补了SW-CMM模型中的缺陷
    RUP:rational unified process 是软件工程化过程。它提供了在开发机构中分派任务和责任的纪律化方法.它的目标是在可预见的日程和预算前提下确保满足最终用户需求的高质量产品,个人认为:它的核心观念是开发的迭代,每个公司可以根据自身的软件开发的流程和待开发项目的特点对RUP进行适当的剪裁,制定出符合自己的软件开发流程。
    XP:extreme program,即极限编程的意思,适用于小型团队的软件开发,想上面第三个问题就可以结合原型法采用这样的开发流程。要明白测试对于xp开发的重要性,强调测试(重点是单元测试)先行的理念。编程可以明显提高代码的质量,持续集成对于快速定位问题很有好处。
    PSP ,TSP 分别是个体软件过程(Personal Software Process),群组软件过程(Team Software Process)大家都知道,CMM只是告诉你怎么做但并没有告诉你如何做,所以PSP/TSP就是告诉你企业在实施CMM的过程中如何做,PSP强调建立个人技能(如何制定计划、控制质量及如何与其他人相互协作等等)而TSP着重于生产并交付高质量的软件产品(如何有效地规划和管理所面临的项目开发任务等等)
    总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。

    (5) 对项目管理白盒测试、单元测试、自动测试、性能测试、压力测试工具的了解程度和实际使用经验。(其实基本上也就是MI和Rational工具):
    这个就要看个人的了,没法说了

    (6) 其它一些具体的技术知识(如各种计算机语言的了解程度、数据库等);

    5. 还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
    测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。

    6. 然后紧接着就基于目前中国的国情,大多数公司的软件项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?(大多数公司最想知道的就是在这种困难面前你该怎么保证软件的质量,因为这些公司一般就是这种情况-----既不想投入过多又想保证质量,faint)

    出现以上的情况,如果仅仅想通过测试来提高软件质量,那几乎是不可能,原因是没有足够的时间让你去测试,少而不规范的文档导致测试需求无法细化何谈足够且有针对性进行测试。所以,作为公司质量保证的你应该先后项目经理确定符合项目本身最适合的软件生命周期模型(比如RUP的剪裁,原型法),明确项目的开发流程并督促项目组按照此流程开展工作,所有项目组成员(项目经理更加重要)都要制定出合理的工作计划,加强代码的单元测试,在客户既定的产品交付日期范围之内,进行产品的持续集成等等,如果时间允许可以再配合客户进行必要的系统功能测试

    7. 差不多了就该问一些只和软件测试相关的问题了,如:
    (1) 你觉得怎样才能做一个(或者,怎样才能算一个)优秀的测试工程师?(faint,这个问题好像是必问的,答案也无非是什么要求全面的技术能力、缜密的逻辑思维、出色的沟通能力、还要有怀疑精神、幽默感、洞察力等等。啥叫优秀啊?该有的能力都有,不该有的也有,而且个个能力还都是出色的,这就是优秀,呵呵,开玩笑的,反正这个问题差不多就这样,具体的什么要求网络上也到处都有。

    (2) 还有其它的如对自己优缺点的评价、自己的职业理想、为何离开上一家公司、自己在职业生涯中印象最深的事情、能否出差和加班、能否承受压力和挑战、薪水要求、何时能到岗等等这些啥面试都要回答的问题,这个就只能自己斟琢着办了。

    (3) 另外还有一个重要的问题就是语言能力啦,尤其是英语水平,这个的话每个具体的公司都有不同的要求,也就没啥好说的了。

    差不多基本上就是这些了,如果有需要的可以有针对性的google一下,hoho...仅供参考!
  • LoadRunner的学习网址

    linghan1991 发布于 2011-04-27 15:30:25

    小强作品:《零基础学习软件测试》之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 hp web tours 分析
    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
    14 java虚拟用户
    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

  • 好东西:loadrunner 11(LR11) 下载链接及破解方法

    w_gq2003 发布于 2010-12-14 11:49:56

    LoadRunner 11下载:
    经本人亲自测试一下链接可以下载到LR11
    http://www.genilogix.com/downloads/loadrunner/loadrunner-11.iso
     
    LoadRunner 11破解:
    破解方法和以前版本相同,我用的是LR8.0的破解文件,同样实用。就是将LR8.0中的以下两个文件替换到LR11安装目录的bin目录下:C:\Program Files\HP\LoadRunner\bin 
    需要替换的两个文件名:lm70.dll   mlr5lprg.dll
     
    LoadRunner 11的license问题:
    提供一个超级license 最高支持6.5w个并发:AEACFSJI-YJKJKJJKEJIJD-BCLBR
    如果用的着的朋友请留言并将该贴顶起来,方便那些需要的朋友,如有转帖的朋友请注明出处,谢谢。
  • 多版本IE测试好帮手

    zhangpei2020 发布于 2011-03-05 01:46:59

    IETester
    IETester是一个WebBrowser控件,包含有五个版本的IE浏览器,界面美观。
    IETester 简介
    IETester 包含5个版本的IE(5.5/6.0/7.0/8.0/9.0 Preview),完全可以满足对 IE 兼容性的测试,再往前的版本也不支持 CSS 解析了,更何况也没有人再用 IE3/IE4 等古董级的玩意儿了。
    IETester 界面
    也比较美观,Office 2007 的风格。
    每个标签前面的大大的数字就是当前使用的版本号。
    IETester 最大特点
    它把 IE8 也给整合进来了,这也是 Multiple IE 不能比的。
    目前版本号v0.4.3
    IETester 系统需求
    这是一个Alpha版本,可以随意发表评论/ IETester论坛上的错误。要求:Windows 7,Windows Vista或IE7中最低(视窗XP/IE6配置Windows XP有一些问题和IE8的实例不属于XP的工作没有IE7中)
    IETester 已知问题和限制
    在上一个/下按钮不能正常工作重点是不正常的Java小程序不工作Flash是不是IE6中,例如在用户模式下工作:一个解决办法是启动以管理员用户和Flash的工作。IETester的CSS过滤器不能正常工作在用户模式:一个解决办法是启动以管理员用户和CSS过滤器将IETester。
    官方网站
    http://www.my-debugbar.com/wiki/IETester/HomePage


  • 精妙SQL 语句收集(转)

    fafenjingbo 发布于 2011-03-04 22:59:08

    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],..)

    根据已有的表创建新表:

    Acreate table tab_new like tab_old (使用旧表创建新表)

    Bcreate 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、说明:几个高级查询运算词

    AUNION运算符

    UNION运算符通过组合其他两个结果表(例如TABLE1TABLE2)并消去表中任何重复行而派生出一个结果表。当ALLUNION一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2

    BEXCEPT运算符

    EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALLEXCEPT一起使用时(EXCEPT ALL),不消除重复行。

    CINTERSECT运算符

    INTERSECT运算符通过只包括TABLE1TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALLINTERSECT一起使用时(INTERSECT ALL),不消除重复行。

    注:使用运算词的几个查询结果行必须是一致的。

    12、说明:使用外连接

    Aleft 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

    Bright outer join:

    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

    Cfull 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、说明:子查询(表名1a表名2b)

    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、说明:外连接查询(表名1a表名2b)

    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、说明:在线视图查询(表名1a )

    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中但不在TableBTableC中的行并消除所有重复行而派生出一个结果表

    (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、说明:列示typevenderpcs字段,以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、说明:选择从1015的记录

    select top 5 * from (select top 15 * from table order by id asc) table_别名order by id desc

    三、技巧

    11=11=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推来推去,非常影响效率。

      其他就不再赘述,希望对大家有点帮助。

  • LoadRunner性能测试基础知识问答

    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:面向目标的场景设置和手动场景

    66/6<123456
  • 书中提及的一些工具和环境下载

    云层 发布于 2009-04-23 22:27:32

  • “六西格玛”为什么学不来?

    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,任何处于顾客要求的规格以外的事情都可以定义为缺陷。

    “六西格玛”与其他质量管理方法之间最明显的区别之一,就是与业务的财务指标相联系,项目流程改进的潜在财务收益是可以量化的,用于帮助我们选择和优化流程改进的项目。
  • 除了加薪还能拿什么激励测试人员

    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)物质奖励

    上面介绍的几种激励方式更多地偏重于精神上的鼓励。实际上,除了精神激励外,物质奖励也是必不可少的,它也是日常工作中经常使用的一种方式。薪水不仅能保证员工生存,同时能者多得的薪酬机制也能有效地起到激励效果。物质奖励的多少依赖于员工能为公司带来的价值,例如:对于为公司创造出高利润、开发出赢利新项目的核心人才,通过加薪激励是必不可少的。在使用物质奖励方式的时候,一个重要的考虑因素是公平。如果某个员工的贡献突出,那么可以对这个员工进行单独的奖励。假如突出的是团队共同努力的结果,那么需要对整个团队进行奖励。同时物质奖励要有充足的理由,确保只有表现优秀的员工或者团队才能够获得物质奖励。

    ☆示例:物质奖励

    物质奖励的方式既可以是单次奖金的形式,也可以是加薪的方式。在平时的激励过程中,测试经理应该综合应用这两种形式。每个季度可以对个人或团队进行一次评比,对表现突出的优秀个人或者优秀团队进行单次的奖金激励。每年对团队成员进行综合考核,根据团队成员的年度表现,对不同贡献的员工进行不同程度的物质奖励,可以是年度的加薪,也可以是年度加薪和单次的年终奖相结合的方式。

    上面介绍了几种常见的激励方式,其实,激励的方式还有很多,例如:建立良好的团队氛围、鼓励大家注意身体健康、重视工作和生活的平衡等。在日常管理过程中,测试经理应该灵活应用各种激励方式。

    激励测试人员的方式有很多,同时也有很多方式会打击测试人员的积极性,造成消极的影响,例如:测试人员在一个几乎看不到结束期限的项目上工作;测试人员致力于保证产品的质量,并且投入了额外的时间和精力,但是由于一些外部因素影响,输出的产品仍旧没有满足计划中设定的目标;尽管测试人员尽了最大的努力,但还是没有及时完成测试任务;如果测试人员的贡献没有被理解和衡量,不管最终结果是否成功,对测试人员而言都很可能造成消极的影响。

     
  • (转载) siege 安装使用

    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 正在试用中
  • 2011年应关注的5项Web技术

    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年仍然将是唯一的一个取代目前关系型数据库的新技术,这个新技术在过去几年发展,一直朝着这个方向发展。

  • VBS脚本控制QTP

    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一下

  • 教学生与带团队--常青藤的讨论班给你有活力的团队

    zmmandppm 发布于 2010-12-20 14:28:07

    最近在看薛涌的《一岁就上常青藤》,虽然是育儿书,但看着看着觉得其实跟管理很相通。还没看完,但基本能把握主旨,我总结的,可能还不够:1小班讨论的授课比大班满堂灌的效果好;2激发内在兴趣促其主动学习比强迫吸收效果好;3按照自己的兴趣均衡发展比功利的应试效果好,后者仅仅培养考试成功者,前者培养的是人生的成功者。而第1条是后面2条的基础,也是操作层面的建议。其中的例子基本都是靠中美两国小孩教育方式理念的对比的出来的优劣判断。说实话,看完了就又觉得在中国没法待了,孩子过得太不幸福了,太扭曲了,这纯属育儿范畴,就不展开了。说说我觉得跟管理相同的地方--讨论班。
    这上面说的,基本常青藤盟校基本上课都采取讨论班形式,教与学的互动十分直接频繁,学生也非常自信,往往一个问题还没等老师说完,就提出自己的意见,主意大得很,一堂课下来,各个方面角度都进行了充分的讨论。这样的教学效果能不好吗?反观一般的州立大学,都是百十人的大课,填鸭式的教学,等老师真的提问题了,反而没人想问题,因为思维已经僵化了。看到这我就太有感触了,大学课堂就是在记笔记抄作业的循环中过来的,四年下来感觉啥也没学到,真是不堪回首,中国的大学基本全都这样吧。
    中国的企业也基本都是这样的,老板发指令,底下就表示执行呗。好不好,骂一通,反正也不是一个人的事儿。开会的时候都是领导一个人在说,等他想要表现一下民主,和蔼的询问大家还有什么问题的时候,鸦雀无声,此地无声胜有声。不知道这时候老板是得意还是无奈,聪明的老板应该不会得意。这样的场景后面会有两个画面:有的在勾心斗角,都不在台面上;有的在充耳不闻,继续惯性行事。总之,老板自己在那里唱独角戏,没人惹他,但实际上是非暴力不合作,别看他高高在上,他想的东西能推行出一半付诸实行就不错了。想想我们大学的课堂,一节课能听懂一半是不是就算好的了?可怜老师声嘶力竭的在哪里讲着。
    在做QA之前的那个准外企,大事小事就特别爱讨论,动不动就去会议室pk一下,头脑风暴一下。大到目前部门的整体发展,小到一个“提交-校对”流程,都是大家共同creat出来的,我感觉那几年里,虽然不直接做技术(做文档),但我的思维活跃度非常之高,经常有好点子,有了就能说,说了就有回应,无论是来自领导的还是组员的,很自信。因此当我面临职业发展的瓶颈的时候,我完全有信心自己能够转型并且一样做的好。但当初从一个老国企出来的时候,虽然号称“科研人员”,但自己严重信心不足,不知道自己是个什么定位。
    其实一个团队的成员,就跟一个学生一样。你如果让他充分展示自己,发表他的看法,及时鼓励成绩,纠正偏差,他的进步会让你吃惊!但我们一般的国内企业却含蓄有余,可能跟中国人谦虚的文化有关吧。怕话多有“就会耍嘴皮子”之嫌。任何事做好了似乎是应该的,只是默许罢了,最多在年会酒桌上拍拍肩膀“这小子不错”之类的;做不好也很少当面提出,然后背后再说三道四。这些滞后的评价非常伤害团队的进步。
    讨论班的实质其实是鼓励冲破思维定势,创造性多方面的思考问题。其实这更是开发团队中评审的目的。可看看我们平时的评审搞得是多么暮气沉沉:专家就那几个,提出的意见当然权威,小弟一大堆,都是抱着学习的目的来听,就算有点小想法,也觉得不成熟,或者“专家都没提这个,看来不重要”的想法。为什么他们会如此拘谨?就是平时没有鼓励大家多多发言,平等发言的氛围。总是那几个人在说,久而久之,也就只能听到那几个人在说了。当团队中的新人都没有了锐气,这个团队还有什么创造性可言呢?
    我是典型的中国式教育下出来的学生,常青藤的那种讨论班模式在学生时代一次也没实践过,我想我肯定错过很多可能的成长,这已是无法弥补的遗憾。但就在毕业三年后的那个准外企里,我似乎摸到了这根线,讨论、分享、头脑风暴...已深深嵌入我的思维,对我当前的质量工作是重要的工具。
    也许我们一辈子都无法接收到最顶尖的常青藤式教育,但作为已经拥有自主思维的个体,我们可以自己创造常青藤式的思想,成就个人,成就你所在的团队的优秀。就从讨论班开始吧!

     

  • 评价测试人员的工作绩效的方法

    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、 不重视测试人员的综合能力

      首先,必须考察测试人员的责任心,如果一个测试人员工作不符责任,随意敷衍,即使提交的问题单数量多,也不能证明他测试的质量高。其次,需要关心测试人员的工作积极性,积极工作的态度不仅能带来很高的测试质量,还能提高整个团队的积极向上的风气。还有,测试人员的沟通能力,如果一个测试人员和开发人员对问题沟通交流不畅,甚至经常引发争执,这显然会影响测试工作的效率。

      二、建议对测试人员进行综合性的全面评价

      评价方法如下:

     

  • Loadrunner脚本开发之AJAX视频

    云层 发布于 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;
    }

     

581/3123>
Open Toolbar