发布新日志

  • 音视频基本概念

    2009-12-21 18:44:44

    一.音频基本概念

    RGB和YUV

    RGB指的是红绿蓝,应用还是很广泛的,比如显示器显示,BMP文件格式中的像素值等;而YUV主要指亮度和两个色差信号,被称为luminance和chrominance他们的转化关系可以自己去查一下,我们视频里面基本上都是用YUV格式。

    YUV格式

    YUV文件格式又分很多种,如果算上存储格式,就更多了,比如YUV444、YUV422、YUV411、YUV420等等,视频压缩用到的是420格式,这是因为人眼对亮度更敏感些,对色度相对要差些。另外要注意几个英文单词的意思,比如:packet、planar、interlace、progressive等。

    帧率

    每秒钟图像的刷新速度。PAL制式的电视,帧率是25帧每秒,NTSC制式的电视帧率是29.97帧每秒。我们常用的电脑也有刷新率,一般来说,电脑的刷新率要在75赫兹以上,人眼才不会觉得闪。

     

    码率

    它的单位是 bit per second,一般所有描述带宽的概念,单位都是bit,描述存储容量的单位一般都是大B,也就是BYTE(字节)。

     

    分辨率

    图像的分辨率指的是它的像素数,一般用得最多的是CIF,也就是352*2884cif自然就是指704*576,而D1的分辨率严格意义上是720*576,大小来说和4cif差不多了。当然现在还有很多高清的分辨率,这些我不是太了解,大家感兴趣可以查一下。另外,国外很多时候,对cif的高度取240,这是因为他们的帧率比我们高(29.97hz),自然,高度要小一些了。

     

    实时与非实时

    主要用来形容编码器,它含有两个意思,一个是要保证帧率,也就是每秒25帧,另一个是“live”的意思,意味着直播,所谓的“实况转播”的“实”。

     

    延时

    也是形容编码器的一个重要指标,一般来说,200ms300ms人的感觉不会很明显,到了500毫秒的话,还是可以很明显感觉到的。

     

    音视频同步

    作为视频会议的应用,一般要求做到所谓的“唇同步”。基本的保证音视频同步的手段就是时间戳(time stamp)。唐桥的系统是语音优先,没有做音视频同步机制。

     

    二.音频基本概念

     

    采样率

    音频的采样率其实类似视频的帧率,意思是每秒钟采样的次数。G.711的采样率是8k(人的语音大概就在这个频率范围以内),而mp3支持的典型采样率是 44.1kHz(超过人耳响应频率的2倍多一点——奈奎斯特定理)。很明显,mp3压缩的原始声音要比g.711好多了。

     

    采样精度

    就是每个采样进行模数转换时的量化系数。G.711是8bit采样精度,而mp3典型的是16bit。

     

    回声消除

    视频会议应用中的音频最大问题。回声产生的原因很复杂,一般认为,在互联网中的语音传输,延时来源有三个:压缩延迟、分组传输延迟和处理延迟。语音压缩延迟是产生回声的主要延迟,例如在G.723.1标准中,压缩一帧(30ms)的最大延迟是37.5ms。分组传输延迟也是一个很重要的来源,测试表明,端到端的最大传输延迟可达250ms以上。处理延迟是指语音包的封装时延及其缓冲时延等。

     

     

     

     

     

     

     

     

     

  • 卓有成效的管理者

    2009-12-20 13:38:25

    一.现实 
    1.管理者本身处于一个“组织”之中,只有当别人能利用管理者的贡献时,管理才算有效。对管理者的有效性而言,最重要的人物并不是管理者直接控制的下属,而是其他部门的人,即所谓“旁系人士”,或者上司。一个管理者如果不能与这些人主动接触,不能使这些人利用他的贡献,他本身就没有有效性可言。
    2.对于组织外部情况,重要的不是趋势而是趋势的转变。
     
    对目前工作的指导意义:多和老叶沟通,每周交流工作内容和确定工作目标等;面向销售的沟通及时,准确;实时反馈客户问题到技术部门
     
    二.有效性
    1.时间管理
    2.成果导向:别人期望我做出什么成果
    3.擅于利用长处:自己的长处,上司的长处,同事的长处,下属的长处
    4.集中精力于少数重要的领域
     
    对目前工作的指导意义:客服工作的有效性体现在:让客户乐于使用我们的产品;反映客户使用趋势,促使产品设计和质量贴近客户使用。当下需要做一个简易版本的用户使用手册;抓培训和演示的质量和及时性;及时回复和解决客户使用过程遇到的问题;加强组内人员对于系统领域知识的学习和工作能力的培养。对于组员交代任务时“ 做什么?为什么要这么做 ?我希望达到什么效果?”对自己“公司希望我做什么?希望我达到什么效果?怎么做才最有效?”
     
    三. 时间管理
     
    生产程序里,最稀有的资源是时间。
    管理自己的时间:记录时间,找出浪费时间不产生效果的项目,砍掉浪费时间的项目。时间分割开来零星使用,纵使总时间一样,结果时间完全不同。
    管理他人的时间:应该做什么,为什么该做,怎么才能弄清楚他做的成果。
     
    对小组有意义的问题“你对小组有什么看法?你认为我们还有哪些尚未察觉的危机?你希望从我这里知道什么?我常做哪些浪费你时间又不产生效果的事情?”
     
    对目前工作的指导意义:记录下自己一周的工作,是否把大部分时间花在了少数重要的领域?对于小组成员,除了继续要求写总结,每周坚持整理总结,周一坚持开组会,讨论一周成果和下周重心。
     
    四. 我能贡献什么?
    对目前工作的指导意义:古话即来之,则安之;在其位,谋其职。在客服这个岗位,就考虑这个岗位的工作职责,尽快让自己适应。
     
    五.如何发挥人的特长
    要用人所长:了解组员的特长,和组员沟通,尽量为其做好在公司的职业规划。帮助上司发挥其所长。
     
     
     
     
     
     
     
     
     
     
     
     
  • 公司activeX控件下载出现问题后的解决方法

    2009-11-20 12:00:32

                                                                     公司控件下载出问题的解决方法整理

    (公司开发人员提供)
    控件下载失败的原因分析:
     
    1. 浏览器安全级别过高,电脑安全级别高:Win7.0, Vista 的安全级别比winxp高。IE8.0和IE7.0的安全设置和IE6.0也不一样。
     
    2. 相关杀毒软件或者硬盘保护程序阻止控件写入系统盘,此时注册成功,但是具体dll无法写入
     
    3. 写入成功,但是注册表无法写入,每次运行都会重新注册安装
     
    4. OS安装时,缺失相关dll,导致无法下载,比如jscript.dll等.
     
    解决方法:
     
    1. 针对浏览器安全级别较高的,可以调低浏览器安全级别....此方法,解决率低.
    Internet选项-安全设置-下载已签名的ActiveX控件是否设置为“禁用”,改为“提示”。
     
    2. 手动注册控件:
    - 半手动注册(依赖于控件已经下载到本地)
    -- [开始] => [运行] => 输入regsvr32 + "dll路径" : regsvr32 "c:\windows\Downloaded Program Files\TBAppLdr.dll"
    (注意不同的ie控件所处地址不同)
     
    - 全手动注册
    -- 下载最新控件到本地
    下载地址是:
    http://demo.techbridge-inc.com/common/activeX/zh-cn/TBAppLdr.dll
     
    -- 下载文件保存到:
    c:\windows\Downloaded Program Files 这个目录下.
    也可以保存在任何地方,比如 e:\xx 之类的,但是推荐以上目录.
     
    -- 执行手动注册
    [开始] => [运行] => 输入regsvr32 + "dll路径": regsvr32 "c:\windows\Downloaded Program Files\TBAppLdr.dll"
     
    3. 脚本注册
    - 将附件里的 TBAppLdr.dll 保存到一个地方,建议:  c:\windows\Downloaded Program Files
    - 将附件里的 install.bat.txt 重新命名为 install.bat ,然后双击执行 install.bat
     
     
    补充知识点:反注册控件后删除控件
    如果ActiveX控件不在C:\WINDOWS\Downloaded Program Files路径下导致无法删除,则进入dos命令页面,
    把该文件进行反注册:C:\Windows>regsvr32/u tbappldr.dll 

  • web架构相关

    2009-11-12 20:07:47

    突然心血来潮,想了解一下我天天测试的web的架构,就上网查了下,结合开发人员的说法,

    我们现在使用的是mvc开发模式。

    MVC理解

     MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

    视图 视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.

    如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

    模型 模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

    控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器(例如:servlet)本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
      我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

    MVC的优点  ◆低耦合性高重用性和可适用性较低的生命周期成本快速的部署可维护性

    开发环境:linux+apache+php+mysql

    看了半天还是没看懂这三层结构!!!

    只是在测试当中,觉得页面的快速响应问题比较重要。这个也是涉及到架构问题的:

    1.缓存:空间换取时间,缓存永远是设计的重中之重,从cpu到io,到处都可以看到缓存的身影,web架构设计重,缓存设计必不可少,关于怎样设计合理的缓存,jbosscache的创始人,淘宝的创始人是这样说的:其实设计web缓存和企业级缓存是非常不同的,企业级缓存偏重于逻辑,而web缓存,简单快 速为好。。

    缓存带来的问题是什么?是程序的复杂度上升,因为数据散布在多个进程,所以同步就是一个麻烦的问题,加上集群,复杂度会进一步提高,在实际运用中,采用怎样的同步策略常常需要和业务绑定。

    老钱为搜狐设计的帖子设计了链表缓存,这样既可以满足灵活插入的需要,又能够快速阅读,而其他一些大型社区也经常采用类此的结构来优化帖子列表,memcache也是一个常常用到的工具

    钱宏武谈架构设计视频 http://211.100.26.82/CSDN_Live/140/qhw.flv

    Cache的常用的策略是:让数据在内存中,而不是在比较耗时的磁盘上。从这个角度讲,mysql提供的heap引擎(存储方式)也是一个值得思考的方法,这种存储方法可以把数据存储在内存中,并且保留sql强大的查询能力,是不是一举两得呢?

    我们这里只说到了读缓存,其实还有一种写缓存,在以内容为主的社区里比较少用到,因为这样的社区最主要需要解决的问题是读问题,但是在处理 能力低于请求能力时,或者单个希望请求先被缓存形成块,然后批量处理时,写缓存就出现了,在交互性很强的社区设计里我们很容易找到这样的缓存.

    2.合理选择数据存储方式:reasonable data storage

    我们一定要使用数据库吗,不一定,雷鸣告诉我们搜索不一定需要数据库,云风告诉我们,游戏不一定需要数据库,那么什么时候我们才需要数据库呢,为什么不干脆用文件来代替他呢?

    首先我们需要先承认,数据库也是对文件进行操作。我们需要数据库,主要是使用下面这几个功能,一个是数据存储,一个是数据检索,在关系数据库中,我们其实非常在乎数据库的复杂搜索的能力,看看一个统计用的tsql就知道了(不用仔细读,扫一眼就可以了)

    select c.Class_name,d.Class_name_2,a.Creativity_Title,b.User_name,(select count(Id) from review where Reviewid=a.Id) as countNum from Creativity as a,User_info as b,class as c,class2 as d where a.user_id=b.id and a.Creativity_Class=c.Id and a.Creativity_Class_2=d.Id
    select a.Id,max(c.Class_name),(max(d.Class_name_2),max(a.Creativity_Title),max(b.User_name),count(e.Id) as countNum from Creativity as a,User_info as b,class as c,class2 as d,review as e where a.user_id=b.id and a.Creativity_Class=c.Id and a.Creativity_Class_2=d.Id and a.Id=e.Reviewid group by a.Id ..............................................

    我们可以看出需要数据库关联,排序的能力,这个能力在某些情况下非常重要,但是如果你的网站的常规操作,全是这样复杂的逻辑,那效率一定 是非常低的,所以我们常常在数据库里加入许多冗余字段,来减小简单查询时关联等操作带来的压力,我们看看下面这张图,可以看到数据库的设计重心,和网站 (指内容型社区)需要面对的问题实际是有一些偏差的

    同样其他一些软件产品也遇到同样的问题所以具我了解,有许多特殊的运用都有自己设计的特殊数据存储结构与方法,比如有的大型服务程序采取树形数据存储结构,lucene使用文件来存储索引和文件。

    从另外一个角度上看,使用数据库,意味着数据和表现是完全分离的(这当然是经典的设计思路),也就是说当需要展示数据时,不得不需要一个转换的过程,也可以说是绑定的过程,当网站具备一定规模的时候,数据库往往成为效率的瓶颈,所以许多网站也采用直接书写静态文件的方法来避免读取操作时的绑定 .

    这并不是说我们从今天起就可以把我们亲爱的数据库打入冷宫,而是我们在设计数据的持久化时,需要根据实际情况来选择存储方式,而数据库不过是其中一个选项.


     

  • QTP中对识别为WebElement的对象进行输入操作的一种解决办法

    2009-09-25 17:06:24

    在QTP录制公告栏的时候,公告栏的“内容”无法被录制,“内容”被识别为webelement,在论坛上找到有战友对其描述为:

    webelement,winobject,swfobject....这些都可以简单理解成底层元素与对象。
    webelement它可以包括webedit,weblist,webbutton等等对象。简单的一个描述例子就是
    1,.webelement("html tag:=Input","index:=0")  可以看出,它可以代替webedit的。
    2,或者QTP某些没办法直接添加,或者SPY不出来的元素(web),例如一些特殊的节点,标签之类的,我们也可以使用webelement对它做操作,webelement("html tag:=div"),等等。

    现在我要对“内容”进行输入操作,而WebElement只有click方法,是没有输入的方法的。

    以下摘自某论坛文章:
        考虑了实际中确实需要具有这种输入的支持(比如利用js生成的输入框,比较常见的是HTML编辑器输入框),就着手去解决。找到了一种解决办法:利用WshShell对象的SendKey方法来实现。在网上找了个html代码编辑器的实例,实现具体代码如下:

    Option Explicit

    Dim oWin32

    Set oWin32 = CreateObject("wscrīpt.shell")

    oWin32.Run("http://www.ewebeditor.net/demo/")

    '由于html编辑器输入框没有找到稳定的属性用于识别,QTP录制时也没有录下对其操作,所以采用先将焦点移到其上一个对象,再按tab移动焦点到html编辑器上
    Browser("title:=.*eWebEditor").page("title:=.*eWebEditor").WebList("name:=select","index:=0").FireEvent "onfocus"
    '对IE窗口模拟键盘输入操作
     With oWin32
      .sendkeys "{TAB}"
      wait 2
      .sendkeys "abcefg"
     End With

        以上是我想到的一种实现方式,也是目前正在使用的方式。但只是一个不得已的解决方法——因为这种方式是很脆弱的,焦点变动,甚至一个Windows消息提示都可能使脚本失败。

    这个解决方法就是找到页面的一个对象,焦点定位到该对象上,然后模拟键盘输入"abcefg". 发现此方法焦点很容易变动。模仿以上程序的脚本如下,发现问题是sendkeys的内容老窜到newtitle中.


    Dim oWin32
    Set oWin32 = CreateObject("wscript.shell")
    oWin32.Run("http://daisy/common/siteAdmin/index.php?url=addNews")

    Browser("管理界面").Page("管理界面").WebEdit("newsTitle").FireEvent "onfocus"

     With oWin32
      .sendkeys "{TAB}"
      wait 2
      .sendkeys "sometimes making the notice in Scrabble isnt as importment as what you leave on rack"
     End With

    Browser("管理界面").Page("管理界面").WebEdit("newsTitle").Set DataTable("newsTitle", dtGlobalSheet)
    Browser("登录").Page("管理界面").WebButton("确定").Click

  • 函数--split

    2009-09-04 12:13:38

    1.等于和赋值都是 =”;  不等于“<>

    2.if语句

    If condition Then[statements][ElseIf condition-n Then[elseifstatements]] . . .[Else[elsestatements]]End If

    if语句可以嵌套

    3.split函数

    使用qtp的时候,web 上很多提示信息都是 Windows Internet Explorer对话框形式弹出的,

    但是提示内容不同,要区分这些内容,使用

      str=Browser("登录").Dialog("Windows Internet Explorer").GetVisibleText 取出对话框内容

    ('str =

    Windows Internet ExplorerWindows Internet Explorer

    错误号:   8061   错误内容:   会议室密码不能为空 !

    确定)

     

    必须用split分割这些内容,取出第二个行数据

    strArray = Split(str,  vbcrlf , -1, 1)
    str=strArray(1)

     

    ('str = 错误号:   8061   错误内容:   会议室密码不能为空 !)

     

    Split 函数

    返回基于 0 的一维数组,其中包含指定数目的子字符串。

    Split(expression, delimiter, count, start)

    参数

    expression

    必选项字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。

    delimiter

    可选项。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组

    count

    可选项。被返回的子字符串数目,-1 指示返回所有子字符串。

    Compare

    可选项指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。

    设置

    compare 参数可以有以下值:

    常数

    描述

    vbBinaryCompare

    0

    执行二进制比较

    vbTextCompare

    1

    执行文本比较

     

     

     

  • 互动会议系统---网吧测试

    2009-09-04 10:32:52

    此次网吧测试600-800台机器同时开启会议。

    1.可能产生的问题:

    ActiveX控件下载可能出问题:a.本地未能被下载-->降低IE安全级别

                            b.本地下载,但无法启动-->regsvr32未被注册-->注册regsvr32

                            c.最后一种可能pc缺少js.dll-->从其他电脑上拷贝

    2.可能存在的性能问题:

    a.加入会议可能导致cpu过高

    b.下载导致带宽瓶颈

    c.答疑导致IO瓶颈(磁盘读写)

    d.web部分的缓存处理导致内存和io瓶颈问题

     

  • 如何写出高质量的bug单

    2009-09-01 15:16:25

    为什么要写Bug单

      当我们发现Bug后,需要通知开发人员,Bug单是一种沟通的介质,它的主要目的是让开发人员能够亲眼看到这个Bug是什么,如果不提供足够详细的说明来帮助开发人员重现Bug,那么他们就没法确定问题的根源。Bug单是一种用来说明期望结果和实际结果之间的差异以及描述bug如何重现的文档。

      发现Bug后应该做什么

      · 最好是一发现并确认了bug就立即填写Bug单,而不要等到当天测试结束再和其他bug一起填,因为那时就有可能遗漏一些要点,甚至是遗漏某个bug。

      · 花点时间分析一下造成Bug的根本原因是什么,你可能会因此发现更多的Bug,最好能把你的任何有用的证据都写到Bug单上。

      · Bug单提交之前自己再读一遍,可能会有错别字或者什么写错的地方需要重写。

      下面将谈到填写Bug单时应注意的几个地方:

      摘要(概述)

      Bug单的“摘要”部分是一个Bug单带给读者的最初印象,它在浏览大量Bug时起着非常重要的作用,每个Bug单都应该有一个能够突出重点的“摘要”,就好像做广告一样。好的摘要应该控制在50~60个字符以内(一个汉字算两个字符),而且不要夹杂任何主观色彩的文字。

      措辞

      · 要据实反应情况,不要夸大或缩小Bug的影响。

      · 有时候会发现一些令人不可思议的低级Bug,但还是要尽量使用较为委婉的词语来表述,免得伤害开发人员的自尊心。

      · 描述越简单直接越好,我们不是在写论文或散文,所以不要把Bug单搞得那么复杂难懂。

      · 要考虑到目标读者,他们可能是开发人员、测试人员、管理人员或者其他人,甚至是客户,所以要让目标读者都能看得懂Bug描述。

      重现的步骤

      · 每一步以及所有步骤组合起来应该是符合逻辑的。

      · 清晰地列出所需的前置条件。

      · 描述一般性的步骤,例如,某一步骤需要用户新建一个文件并给它命名,那就不要写“新建一个名为Mike’s File的文件”,而最好写成“新建一个测试文件TestFile”。

      · 步骤应尽量详细,例如,我们要描述通过MS WORD保存一个文档,那么有两种方式,一是说得细点儿,即“从[文件]菜单里单击[保存],……”,另一种就是说得简单点,即“保存文档”,但请记住,并非所有人都知道如何从MS WORD保存文档,或者说所有人都会使用同样的方式保存文档,所以描述的时候最好还是采用第一种方式。

      · 写完之后自己用新的测试数据或者在新的系统上按照步骤亲自执行一遍,或许能够发现Bug单里有一些是遗漏的或多余的步骤。

      测试数据

      开发人员重现Bug时可能不会访问测试环境,有些Bug可能只能用一定的测试数据才能重现,所以尽量把测试数据附在Bug单上。

      屏幕截图

      屏幕截图是Bug单里非常重要的组成部分,有时一张图能胜过千言万语,但也不能养成习惯不管有用没用的图都往上贴,或者是只贴图而缺少文字描述。附图能够使开发人员结合你的描述快速地重现Bug是最理想的:

      · 所附图片的尺寸和占用空间不要太大,尽量用jpg或gif格式,而不要用bmp格式。

      · 在图中出问题的地方标注一下,更利于开发人员快速定位。

      严重级/优先级

      · 设置Bug的严重级之前,应该全面地分析Bug的影响,如果我们认为这个Bug的优先级很高,那么应该在Bug单里说明优先级高的原因。

      · 如果Bug是由于程序版本恢复到上一版而产生的,那么不管它的严重级如何,它的优先级应该置成“高”。

      日志

      如果可以的话一定要把程序报错的日志附上,这会让开发人员比较容易进行分析和调试。很多不能重现的Bug都是因为缺少日志,开发人员就会返回去找测试人员要日志信息。如果日志文件不大的话,比如十几行,那么可以直接把日志信息粘到Bug单里,如果日志很大的话,那么最好单独粘到一个文件里,如txt格式的,然后当作Bug单的附件就可以了。

  • 敏捷开发--系统测试的噩梦

    2009-09-01 15:12:51

     

    以下摘自某技术网站文章,之前放进了word文档,所以不知道出处,望作者见谅。作者写的和目前我公司一样,我们测试为此纠结了很久。。。

    在传统的软件开发模式中,系统测试属于软件开发过程的较后阶段,基本是在所有开发代码全部完成,开发人员拿出所有精力修改bug时才会正式进行系统测试,包括安装啦、稳定性啦、负载啦等等。

      这次项目开始大约半年了,是一个小版本的升级,采用了scrum模式,我切实的感觉到敏捷系统测试不太对劲。在scrum中,根据开发的实际情况,设定一个时间间隔(比如每两个周)为一个sprint周期,每个周期都有需求跟踪和实现,然后在进入下一个sprint阶段。

      目前,我发现了几个敏捷系统测试的主要问题:

      1. 不断增加的新功能导致测试结果失效。

      既然是敏捷,当然是时刻适应需求的变化,于是功能不断的改变。系统测试的结果在一次次的代码变化之后失效,比如测试应用的稳定性,跑了两天,内存和其他参数都没问题,然后开发人员在下一个sprint对代码做了很多修改,你说要不要重测??通常这种回归测试都是在系统测试的最后阶段,拿到最后的build 的之后再测,现在呢,不得不测,如果说系统测试的工作量少也就算了,但事实上,系统测试的压力特别大,搞的大家身心疲惫。

      2. 发现问题,开发人员无法适当处理。

      如果在测试中发现了问题,按理说开发人员应该尽快解决,但在敏捷开发模式下,开发人员每一个sprint都有相应的需求要实现,精力有限,于是他们对于细微的bug根本置之不理,一般都会拖到最后才解决,这就导致了一个问题,这些bug在若干次build之后会不会重现,可能在报完bug之后3个月,开发人员才开始考虑这个问题,此时这个bug报告还有效吗??是不是需要重新测试??于是我们测试人员之前的测试工作根本没意义了。另一方面,对于严重的bug,开发人员也无法集中全部精力来处理,三心两意,你说bug能解的顺利吗?后果就是开发人员和测试人员都满心抱怨。

      在我看来,这种紧跟敏捷的系统测试不是完全没有意义,有些严重bug可以提早发现,开发人员可以尽早解决,但是体现了帕累托现象:我们用80%的努力得到了软件质量20%的提高,的确,从公司老板的角度看,这样值得,反正软件质量提高了,但对于开发和测试人员来说确实非常痛苦。我记得敏捷的思想来自于计算机界的各位大牛,他们在设计软件开发模式时,没有考虑过系统测试的特殊性吗?还是他们从没把系统测试包含在敏捷思想里面,只是某些人狂热的把敏捷错误的用到了系统测试当中?

  • 安装虚拟机vmware

    2007-11-01 13:15:15

    公司要求测试两个操作系统两个语言版本的会议软件。

    而我只有两台客户机,但是内存都有2G,所以必须使用虚拟机技术来装多个系统。

    终于下了装好vmware,可是用vmware workstation在xp下装vista怎么也不能装,用的是物理驱动盘安装,直接插入安装盘,启动虚拟机,可老是报错说盘找不到。已经切换成cdrom启动了!
    试了两台机器出了同样的问题。
    就试用alcohol把盘做成 iso影射,vista还是装不了。
    用了xp盘做成 iso就可以装了。

    那不是机器,不是设置,就是盘的问题了。可能盘辨识不到!!!也有可能在 xp下装 vista有问题!!!

    后来用这张vista盘直接装,没装上,有文件丢失,果然盘有问题呀。也没验证到底是不是xp下不能安装vista?直接换了一张vista盘,然后在vista系统下装xp.
    老天,终于装上了。用了我一天半工作日呀!!!
  • TD自动运行WR脚本及发送邮件

    2007-10-30 18:07:33

    以下摘自http://bbs.51testing.com/viewthread.php?tid=44331&page=1#pid506937
    为了让客户机自动运行测试脚本,需要用TD启动WR脚本,以下是步骤,
    Setp 1:安装必须的插件
         欲自动运行WR需要在本机上装如下插件:
         TD add-ins页面中下载安装:TestDirector Connectivity、TestDirector System Test Remote Agent、TestDirector Client Side Setup
         欲自动运行需要winrunner在本机上装如下插件:
         XrunnerTestDirector,TDPlugInsSetup

    Step2:WR连接TD并将脚本同步至TD
         A:tool中选择Quality center connection
           在server处输入: http://TD服务器IP/tdbin  点connect
           在project connection里填写正确的domain、project、user、password 点connect .
           注意勾选上:reconnect on stratup、save password
         B:将脚本同步到TD,有很多方法,可以直接在TD中launch WR来录制脚本,也可以利用一些工具如Import Tests 来同步脚本。

    Step3:在配置自动运行的环境:
           A: 在General options->run 中够选 allow other mercury products to run tests .
           B: 在TD中已经保存相应脚本的project中进行如下操作:
               Test lab->Run Test Set->Run on host 中配置远端主机192.168...
           C:配置脚本测试集及运行环境
          首先:在test lab->exection flow-> slecct tests 选择待测试的脚本,并配置各脚本的关联关系。
            
          其次:设置定时器:在exection flow配置定时器,也可以在exection grid中完成
                  
         最后:点击run test set ,配置运行环境,最后点run或run all,所配置的脚本进入等待运行状态,定时运行。
        注意:如果是控制远端机运行脚本,必须把默认勾选的run all test locally去掉
          
        PS:以上步骤也可以在test lab的exection grid中完成。

    Step4:配置自动邮件:
         A:在TD 的SiteAdmin->td server中配置mail protocol
          B:在TD相应project的testlab->test set properties 中配置notifications项添加邮件接收人,邮件基本内容等。
         C:通过在tool->change user properties可以设置发件人的邮箱名。

    完成以上配置后,大功告成,在脚本自动运行完后,就可以接收到运行结果的邮件了。

    主要是
    A 插件要装上
    B 然后 Winrunner设置:
    1、tools =〉General Options中的Run页面勾选Allow TestDirector to run tests remotely。
    2、tools =〉Quality Center Connection 界面中设置与TD的连接。
    C TD中配置远端主机192.168...,测试链接,设置运行时间

  • winrunner 检查点图片存放

    2007-10-30 10:45:33

    由于不知道obj_check_bitmap("dest ip_1", "Img2", 1)的图片保存路径,对于img的维护有困难。
    后来在51testing的讨论中,才知道保存在脚本的exp文件夹下。

    以下摘自51testing:
    如果一个脚本main调用脚本flight,同时要运行flight下的obj_check_bitmap。如果直接运行会有img找不到的情况,此类问题有三种解决方法:

    1.把flight下的img复制到main下
    2.在子脚本中插入验证点后,在主脚本用updata模式回放一遍,这时子脚本exp下的图片就自动复制到主脚本的exp下了
    3.在settings->general options->run下把“run in batch mode”勾选上,运行就可以通过。这样如果在主脚本中所调用的脚本有检查点等,都不会在当前主脚本下找,而去被调用的脚本中找。

  • ip欺骗

    2007-10-24 15:15:41

    摘自###人空间
    Loadrunner学习笔记之ip欺骗
    ip欺骗设置:
    1.在总控机上使用loadrunner->tools-> ip wizard工具设置虚拟ip,其中server ip指要监控的服务器的ip,添加ip时选择A、B或C类ip,设置开始ip和要添加的虚拟ip 的个数,并选中verify the new ip addresses are not already use,已检查添加的ip是否与局域网中的其 它ip冲突
    2.重启机器
    3.在controller的scenario中勾选enable ip spoofer,启用虚拟ip
    3.在controller的tools中选中expert mode,在options->general中设置multiple ip address mode与run-time settings中的multithreading设置保持一致
    4.在load generators中选择localhost
    查看脚本执行过程中是否使用了设置的虚拟ip,可以如下设置:
    在脚本中添加代码:
    char *ip = lr_get_vuser_ip();
    if (ip)
         lr_output_message("The IP address is %s", ip);
    else
         lr_output_message("IP spoofing disabled");
    在脚本运行过程中查看controller的output,view->show output,选择all messages,查看输出的ip是否为设置的虚拟ip

    我想进行ip欺骗,模拟多个客户端连接发送数据包到服务器,可是打开ip wizard发现错误提示:"the ip wizard does not support dhcp-enabled network cards.your network card is either dhcp-enabled or configured with invalid settings"

    原来公司用的是动态ip,ip wizard不能识别动态网段。


  • Winrunner破解

    2007-10-09 17:02:17

    安装winrunner7.6步骤:
    1.卸载旧版本的程序!
    2.运行Setup目录中的文件进行安装!
    Name:www.ttdown.com
    Company:www.ttdown.com
    Maintenance Number:0123-4567890124
    3.重新启动电脑!
    4.运行安装目录下WinRunner/arch/子目录下面的inst_key.exe程序!
    5.点击Next,然后输入下面的信息:
    First Name:www.ttdown.com
    Last Name:www.ttdown.com
    Company :www.ttdown.com
    Maintenance Number:FF2VLB3CX43FE7GRYIB3W96MVFUFK7UX5IM6DTS2WL4YR8JS4N27M6DWEM9
    6.再次点击Next,输入下面的license Code:
    license Code:SYFVDM44F9WA76YE4N67L4MHSBUIEAR6IYUZNGA9O6I736DBJPIZCVOCPOUIPACDY22
    7.恭喜你,你成功了!^_^
    不要忘了把自己机器的时间调到2005

    winrunner8.0的版本到第3步时,使用一个破解程序,就可以永久使用拉.51论坛上有:http://bbs.51testing.com/viewthread.php?tid=44313&extra=&page=1

    在论坛上看到有人写着:

    总是提示14天有效。后来发现在C:\Program Files\Common Files\Mercury Interactive有一个License Manager目录,里面有一个lservrc文件。这个文件就是MI工具的注册管理器,把里面的内容替换成下面的内容,就大功告成了:
    5SFDHYECAW7F8V8ULAEHCVYQSIRG93D29XAQ8KKM4FC#
    # Dynamically installed.
    FF2VLB3CX43FE7GRYIB3W96MVFUFK7UX5IM6DTS2WL4YR8JS4N27M6DWEM9
    # Dynamically installed.
    G8A9EF79GM5Z7C2V6IKBQZ64773ZBDCLMWETBCRHBG57634GFVY9K#
    # Dynamically installed.
    NRDDL7SPI9LDT5PUG8E4MHVA2933VROPSPBIEZ95JLHMH48OC7P8UEFJXNLRGG8W274AHT
    # Dynamically installed.

  • TestDirector移植

    2007-10-09 14:46:16

     

    Acess数据库的TD移植:

    1.在B机子上安装TD

    2.在B机子上把TD的项目名称改成和A一致

    3.把A上的数据库拷到B相应的目录下

    4.重新建立用户

     

    TD安装注意:

    licence: B343P-44B44-43444-6444S  (无任何限制)

    安装说明:

    操作平台可以为xp,win2003,win2000,得安装相应的sp2;进入安装的需为computer的管理员账号。

    在安装TD前,先安装IIS,和Acess/sql/orcal/...数据库(安装过程中会有选择)

    安装前把防火墙和杀毒软件禁掉,有些软件也可能导致安装冲突,所以最好先安装TD.

    安装过程中是都为默认选项。

    TD安装完后打sp2补丁后才能使用。

Open Toolbar