听烂漫音乐,看美丽世界,过精彩生活……

发布新日志

  • 我的责任!

    2009-06-10 15:30:44

    公司打扫卫生的阿姨,是位非常卑谦,勤劳,善良的农村妇女(虽然我很不想这么形容她),从家乡农村来到杭州打工,每个月就那一点点少得可怜1000块钱,还要跟家政的四六分,最近她女儿生病住了院,今天手术,阿姨来晚了,匆匆忙忙的样子,还一直跟wendy道歉说最近老是迟到,这种时候总是少不了觉得她很“可怜”(虽然我同样地认为这样的人非常“可敬”),但恻隐之心跑在了前头,很想有一天能帮帮她以及我能帮助的人。
  • Perldoc

    2009-05-31 14:39:00

    Perl代有机器庞大的文档库,采用man形式存放。如果要查找某一特定的函数,手工查找会非
    常困难。但是perldoc命令,可以帮你轻松找到所需要的资料:

    假设我们要查找sort函数的手册,那么:

    perldoc-f sort

    就会告诉你sort的用法,如果还有疑问,可以搜索FAQ
  • [收藏]手机自动化测试同步方案(针对WM/Wince OS)

    2009-05-30 22:44:27

    由于最近我也在研究手机终端的自动化测试, 但目前还关注在BREW平台之上, 进展还比较顺利,不久也会写一篇比较系统的文章, 看到这篇文章, 非常欢喜, 毕竟类似的资料非常得少, 很欣赏这位朋友的分享精神, 特收藏, 学习借鉴!
    转自: http://www.51testing.com/html/62/n-128462.html

    手机软件MMI的自动化测试需要手机终端和计算机进行通讯,所以通讯方式可以选择串口或者蓝牙,鉴于稳定性和易用性,设计简单程度,串口通讯是非常简单的很容易实现的。

      然后自动化测试工具选择脚本语言的问题,我们可以选择VBScript,Perl,Python,比较一下,Python比较强大,Nokia的一些工具就是python做脚本的。

      两者之间的通信机制:可以使用ATcommand进行通信,出了GSM标准支持的ATC,还要有手机专门自己的命令来支持远程终端操控手机。比如键盘控制,长按短按等。

       手机需要暴露一些接口,比如截图,文字识别,返回图像,文字等。这样可以做自动化验证,做到无人值守。这些均需要手机来支持。比如设计手机要有这样的接 口 BOOL GetPicture(int top, int bottom, int right, int left, BITMAP & bitmap); 这样通过ATC发过来命令然后手机解析一下,得到top,bottom等信息,然后得到bitmap返回。文字识别需要python来完成,char* GetStringFromPic(Point pt, const Bitmap* bitmap);我就用C++来表示了。这样在脚本里面就可以进行比较文字了。

      更进一步,支持录制脚本功能,比如按下某个键,串口信息,监听串口信息,这样脚本解析按下的键,然后判断在转译成脚本语言。Key();

       关于手机只需要支持识别ATC参数,然后传回要的结果,我想主要是通过图片来返回,因为这是模拟人工测试的原理,我按下某个键,就会出现什么结果,这样 需要返回图片即可,然后脚本客户端需要对图片进行处理,要么进行比较图片内容,要么进行文字识别进行文字对比,这样可以实现测试自动化。

      我们这次采用的是WINCE5.0的内核,所以上面说了一堆,其实可以概括为几个简单的步骤:

      第一,下载安装Activesync

      第二,下载安装Activesync remote display

      第三,如果是使用模拟器,还需要下载安装connect emulator with activesync

      第四,把设备和PC通过Activesync连接

      第五,把..\ActiveSync_Remote_Display\devices\wce400\armv4t目录下的cerdisp2.exe and KillProc.exe拷贝到你的设备windows目录下面

      第六,运行activesync remote display程序,出现“The OS or CPU of this device is unknown to this application”的信息不管它,点OK就行

      这个时候你会看到PC机模拟器与你手上的真机屏幕实现了完全同步,而且可以在模拟器和手机上同时对手机进行操作,俺在网上找了好久才成功的。

      微软提供的这个组件确实为WINCE的手机自动化测试提供了一条捷径,但是我发现同步映射的过程中,手机和PC间通信时间还存在一些问题,一个按键动作从模拟器到真机屏幕可能需要0.5秒的时间(便宜没好货)

      PS: MTK OS 也可以通过同步完成部分功能的自动化测试,比如电话本存储/SMS收发等等,偶会在以后整理出来再与大家分享。


  • Perl - study note - single & double quoted string

    2009-05-29 23:10:50

    One major difference between double- and single-quoted strings is that double-quoted strings have some special escape sequences that can be used. Escape sequences represent characters that are not easily entered using the keyboard or that are difficult to see inside an editor window. The following are all of the escape sequences that Perl understands are given in Table

    Table 2.1: Perl Escape Sequences
    Escape Sequences Description or Character
    \b Backspace
    \e Escape
    \f Form. Feed
    \n Newline
    \r Carriage Return
    \t Tab
    \v Vertical Tab
    \$ Dollar Sign
    \@ Ampersand
    \0nnn Any Octal byte
    \xnn Any Hexadecimal byte
    \cn Any Control character
    \l Change the next character to lowercase
    \u Change the next character to uppercase
    \L Change the following characters to
      lowercase until a \E
      sequence is encountered.
      Note that you need to use an
      uppercase E here, lowercase
      will not work.
    \Q Quote meta-characters as literals.
    \U Change the following characters
      to uppercase until a \E
      sequence is encountered. Note that you
      need to use an uppercase E
      here,
      lowercase will not work.
    \E Terminate the \L, \Q,
      or \U sequence.
      Note that you need to use an
      uppercase E here, lowercase will not work.
    \\ Backslash

    Note In the next chapter we'll see why you might need to use a backslash when using the $ and @ characters.

    The examples following the table will illustrate some of them.

    "\udave \umarshall is \x35\x years
    old."

    This literal represents the following: Dave Marshall is 35 years old.

    The \u is used twice in the first word to capitalize the d and m characters. And the hexadecimal notation is used to represent the age using the ASCII codes for 3 and 5.

    "The kettle was \Uhot\E!"

    This literal represents the following: The kettle was HOT!. The \U capitalizes all characters until a \E sequence is seen.

    A final example:

    print "Bill of Goods



    Bread:\t\$34.45\n";

    print "Fruit:\t";

    print "\$45.00\n";

    print "\t======\n";

    print "\t\$79.45\n";

    Actually, this example isn't too difficult, but it does involve looking at more than one literal at once and it's been a few pages since our last advanced example. Let's look at the \t and \n escape sequences.

    This program uses two methods to cause a line break.

    • The first is simply to include the line break in the source code.
    • The second is to use the \n or newline character.

  • [BREW]获取键值

    2009-05-28 14:13:27

    Grinder本身的一个bug或者高通在其他方面的考虑, 在AVK_LEFT/AVK_RIGHT无法被识别成左右navigation键, 为了解决这个问题,需要从外部加载一个keymapping文件, 但是并不是所有的手机都会提供该文件,解决这个问题的办法就是,如果和OEM有合作的关系,则可以直接向OEM索要该信息,如果没有,那就可以通过下面的代码来获取.

    static boolean HelloWorld_HandleEvent(AEEApplet * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)

       switch (eCode){
          case EVT_APP_START:                       
            
          case EVT_APP_STOP:
             return(TRUE);

          case EVT_KEY:
              {
                  DBGPRINTF (" %d ", wParam);
                  return(TRUE);
              }
          default:
             break;
       }
       return(FALSE);
    }

    make成mod文件,通过AppLoader, side load到手机后,连接AppLogger, 即可获取到键值.

    其他任意键都可以通过这种方法获取, 特别对于QWERTY键盘的手机, 按钮的键值没有标准化, 这样的方式去获取键值比较麻烦, 但也是唯一的办法了, 当没有其他渠道可以得到keymapping file的话.


  • 性能测试工具 - The Grinder

    2009-05-22 12:08:28

    在搜索BREW的工具Grinder的时候,看到一个同名的做load testing工具,于是花了半天时间,小小滴试用了一下,还是比较简洁易用滴,有这方面测试需要滴同仁们,可以深入研究一下~

    主页:
    http://grinder.sourceforge.net/


  • 51Testing网站五周年啦

    2009-05-19 13:52:46

    51Testing网站五周年啦!
    看着51一天天的成长.会员一天天的增加.
    在论坛上很多人给予了我无私的帮助.
    感谢51,感谢帮助过我的朋友们!


    51Testing软件测试网http://www.51testing.com
  • [论坛] [原]如何蒸煮手机(True Brew测试)【二】

    2009-05-19 11:50:41

    当IUT达到了Entrance标准后,正式进入TBT测试,测试会覆盖:
    • Exploratory  Testing (探索性测试)
    在探索性测试中,会涉及到主要功能,应用用户界面, 支持语言,内容服务器等方面的测试。这里的测试用例一般会写得很笼统,比如主要功能测试,测试用例是这样的:

    Test Criteria:
    Open IUT. Explore all screens and functions. Note all instances of non-compliance with Item Specification Template. Note unexpected functionality outside scope of Item Specification Template.

    Pass Criteria:
    Result: IUT operates according to Item Specification Template.

    Note: When performing exploratory testing, the tester should keep in mind the specific tests in the rest of the test guide. This will speed the execution of these tests when they are performed.

    应用用户界面测试关心每个屏幕上的文本,图形显示,及其他对象,如滚动条,输入框和画屏,刷屏都是否正确。

    语言测试的目的是检查当手机语言设置改动之后,是否应用本身及菜单选项的语言是否也随之改变,如果应用本身支持多种语言,那改动后,菜单选项也要随之改变。

    内容服务器测试是为了保证内容的完整性。
    • 手机和应用交互性测试
    交互测试主要是测试当应用被挂起时或者接近被挂起的那一刻手机的行为,主要通过来电中断,短信,或者提示干扰达到测试的目的。这部分测试包括:挂起/恢复, 手机核心功能是否受IUT影响,开关手机盖/键盘,如果支持扩展键盘,还需要测试应用和扩展键盘的交互。挂起/恢复测试是这部分测试的重点,需要检查收到来电,接听来电,拒绝接听以及结束来电,如果IUT是个网络应用,还要把挂起和恢复与网络连接的状态结合起来,另外还要测试收到短信中断时手机的行为以及恢复后应用网络连接、数据传输的行为。
    • Brew特性测试
    这部分测试以手工测试为主,测试内容比较多,但不是所有的测试都适用,选取依据是提交测试文档中所涉及到的模块。完整的测试包括:
    Licensing - 基于使用量、Lincensing - 无限制使用、Item-directed SMS, Outgoing SMS, 计时器, 地址簿, 数据存储, 铃声, 桌面, 照相功能,触屏, GPS等等等。
    • Brew用户界面测试
    BREW用户界面测试完全通过手工测试完成,测试如Clear,Send等键和应用的交互。测试会覆盖:Clear键,Send键,功能响应时间。
    • Adversarial测试
    Adversarial测试包括信号丢失,动态显示,持续的键盘输入,存储空间不足,重启,默认事件处理行为,EVT_BUSY事件处理行为,和触屏测试。测试过程会借助于一些辅助工具,如MaxFileCnt用来填满内存空间。
    • 下载测试
    下载测试验证IUT在disable,enable的过程中,是否会造成数据丢失,在删除IUT后,文件系统是否清理干净,以及重新连接测试服务器后,文件是否正确创建等。
  • 推荐一个优惠信息发布搜索网站

    2009-05-18 18:17:09

    http://www.51-yh.com

    不错滴东东,不过好像还只有杭州的优惠信息~推荐一下
  • [论坛] [原]如何蒸煮手机(True Brew测试)【一】

    2009-05-18 16:17:08

    本文有关TRUE BREW测试,并非真的要把手机吃了。

    TRUE BREW Testing介绍
    TRUE BREW TESTING,简称TBT, 是由高通主持的一套严格手机应用测试认证系统,目的是为了测试基于Brew操作系统手机的应用的稳定性及兼容性。而高通把这样的测试工作委托给第三方的测试机构,叫做NSTL。

    在真正高通(NSTL)收到待测试的应用(IUT)之前,开发方需要根据高通的模板提供相应的文档,并遵守高通的IUT测试提交流程,在Qualcomm的网站上提交,提交成功后,会收到高通发出的邮件。(以后会写一篇关于TBT提交流程及文档的文章)

    TRUE BREW TESTING测试流程



    从上图中可以看出,TBT的一个简单测试流程,TBT也有一个Entrance Criteria, 只有通过Entry Testing, 才真正进入完整的TBT测试,如果在Entrance阶段就Fail掉了,那这个测试将被打回,但测试的费用是不退的。

    具体介绍一下Entrance Criteria. EC测试的目的是为了捕获到一些显而易见的错误,在EC中,会测试以下这些方面:
    • 生产商(开发商)签名
    提交的Brew应用文件中,mod,和mif文件是必须要用有效的生产商(开发商)签名签名过的,而其他可改写的文件必须是未做过签名,或者可改写的签名。
    • 应用的下载,启动和删除
    IUT要允许从ADS下载; IUT要能在应用管理器中存在,并能启动; IUT可以从应用管理器中删除,或重装; 从手机中删除IUT后,不能留下残留文件
    • MIF设置
    屏保选项只对屏保类应用有效;IUI ClassID必须独立; mif没有选择隐藏标志(选项);所有的通知,权限和受保护的依赖关系必须在文档中说明
    • MIF图形
    要使用正确的MIF图,允许的图形大小:Thumbnail:16*16p ; ICON:26*26p ; Image Icon: 65(w)*42(h)p或更小
    • 版本号
    应用的名字和版本号必须和提供的材料中一样
    • uiOne主题 metadata.bar
    在metadata.bar中必须至少包括一张桌面文件
    • 短信测试
    IUT必须挂起或者提示用户收到SMS, 且短信必须保存在信箱中
    • 退出应用
    按了退出键或退出功能键后,IUT能正常退出,并可以重新进入

    【待续】
    【转载请注明来源,谢谢】
  • 推荐:测试网页的网站

    2007-08-22 10:00:03


    测试网站在各种操作系统下,各种浏览器下的显示情况,可以用下面这个网站:http://browsershots.org/
  • 推荐一本好书

    2007-07-29 22:03:01

    上上周在博库书城,把有关软件测试的书都浏览了一下,发现一本好书,买了下来。

    书名:<Testing Applications On the Web>, the second edition,
    Author: Huang Q. Nguyen, Bob Johnson, Michael Hackett

    中文翻译:
    《Web应用测试》第二版,
    翻译: 周志荣,姜南

    关于测试的书真的不多,整个书城,大概就5,6本。

    好书更是少只有少。


  • pmp进展

    2007-07-24 08:59:06

    花了快两个星期的时间,把PMBOK以及金英勋和Rita的参考书看了一遍,在整体上形成了一个知识框架,做了金的部分练习题,准确率在75%左右,为此建立了一个错误题库,在一些术语、概念上,理解还不够透彻,不够以完全把握PMI的思路。

    下面是PMI的质量管理中的一个题:

    Q:The result of excellent project quality management is __________.
    A. Success of a project
    B. customer satisfaction
    C. conformance to requirement
    D. formal acceptance by the customer or sponsor.


    中文翻译:

    优秀项目质量管理的结果是_________

    A.项目的成功

    B.客户满意

    C.符合需求

    D.被客户或发起人正式接受


    你们的答案是什么?

  • 做个常驻的游客也无妨

    2007-07-21 21:17:06

    这是怎样的一个下午,有热浪,有暴雨,有地震,有火山,有古城,有风情,那是怎样的一天,是灾难,是慌乱,是恐惧,是逃难,是死亡,是毁灭。维苏威火山,繁华的庞贝小镇憎恨它,而我们,要感谢它。


    一个人在房间里呆着,闷闷的,外面的阳光,辣辣的,但宁愿热着也别让我闷着,顶着一天里最毒的太阳,去西湖美术馆看了庞贝末日古迹展出。


    坐车到岳庙,沿着北山路走去平湖秋月再到美术馆,西湖边 的游客很少,以前要么是别人陪我游西湖,要么是我陪别人,一个人走在西湖边上,还是第一次。不过不是冲着西湖来的,也没打算在这样的热浪中装出一种恬静, 只是走在林荫小路上,不长不短,刚好可以把汗水吹干,刚好可以收拾心情去迎接这样的展览。


    推门进来,俨然看到北面的维苏威火山静静地守望着这座曾 经繁华而喧闹的小镇,扒开层层火山灰,踏上庞贝的街巷,石䟙的城墙只剩下断壁残垣,壁画依稀可见,角斗场里诉说着二十个世纪前的那场浩劫。家中的人们被倾 泻下来的浮石堵住了逃命的出口,闪电划破越来越暗的天空,屋顶坍塌,恐惧开始蔓延;帕比里庄园里的赫拉像被强大灰尘暴掀到了室外,落得优雅的赫拉右手伤 残;滚滚而来的灼热的火山灰瞬间熔化了街头的人们,剩下了尸骨,遗弃街头……


    慢慢地走遍了美术馆里的庞贝城,满意地推门而去。傍晚的西湖变得鲜活,沿着来时的路,径直往前,开始细致地品味起来,她是如此的迷蒙而动人。

  • PMP之路. 二 PSM

    2007-07-11 22:00:36

    [说明:学习笔记,主要给自己看,巩固一下学的内容,条理上不太清晰,还请见谅]

    今天看了一下Project Scope Management,看PMBOK的前三章有些找不到思路, 于是move on to Scope Management. 参考资料又是英文又是中文, 有时候很难把术语的中英文匹配起来,真是晕乎乎哉~~

    PMBOK 2000和2004版在项目范围管理上有一点区别,在2000中,PSM(Project Scope Management) includes 4 processes, while 2004 has one more: Create WBS, 由于之前没注意版本,害得我做错了题还搞不明白原因~~

    项目范围管理是项目管理的九大知识领域中的一个,PMBOK给的概念有些拗口,原文是这样写的:Project Scope Management includes the processes required to ensure the project inludes all the work reqiured, and only the work reqired, to complete the project successfully.大致意思就是项目范围管理包括完成项目工作,且只完成项目工作所需要的过程.

    项目范围管理包括五个Process, 分别是:scope planning, scope definition, create wbs, scope verification, scope control.

    这些过程之间是关于关联,和其他知识域的过程也存在交互的接口,比如scope planning的输出是scope definition, create wbs的输入;scope definition的输入还包括Initiating阶段的产出:Project Premiliary Scope Statement等~

    [待续]

  • PMP之路. 一

    2007-07-09 14:34:12

    前段时间"被迫"地列入了PMP培训的"黑名单",继而开始了35小时的培训,然后是网上报名,"编造"各种材料,经过5 workdays的等待后,收到同事mm的电话通知,让我各种材料(学历学位证书,身份证,中文申请表,EMAIL....)就这样,开始了漫长的备考之路...

     

  • 组织成熟度之上是什么?

    2007-07-03 17:12:10

    快有两个月没来这里了,虽然以测试负责人的角色介入在现在的这个项目中,不过一直做一些和测试无关的东西,也很难的有这样的机会让immerse其中的我慢慢地脱身出来,换个角度去审视软件质量,同时去接触不同的工作,学习新的领域的东西,包括技术的,也有人际的,还有其他的。

    记得以前看到过一种说法:任何经历对于人生来说都是有用的,我也从来不会把自己限制在测试工程师这个岗位上,也从来不给自己一个蓝图,或者可以说我“得过且过”,或者也可以说态度决定一切,而态度又有性格决定,而最近我越发觉得是如此。

    回到质量,回到那些体系,无论是ISO,还是CMMI,成熟度才是它所要追逐的目标,对于一个企业而言,无论说国内的企业是流于形式还是落到实处,个人觉得还是看个人的悟性和工作态度,后者更为甚。对于处于一个这样的氛围的个人来说,总是比缺少氛围的人来得幸运,所以有这样机会的人,当你觉得这些是bullshit时(相信你不会这样想的),何不跟自己说,既然这样了,而且我的态度是端正的(应该不会有人觉得自己态度又问题吧),去敷衍还不如实实在在地遵守规范,因为实实在在的体会让我说这些实实在在的话。

    你或许会说:人是活的,规范是死的。对这点,我还是70%的同意的,这也是为什么我说质量是关乎悟性和态度的原因了。但也就因为悟性和态度的成熟度比组织的成熟度更难去量化,所以一个企业会想到用组织成熟度,所以说组织的成熟度之上是人的悟性和态度的成熟度。

    我只是胡言乱语了一通,见笑~!
  • 【PSMS】群集

    2007-05-14 11:38:30

    就像冗余部件可以使你免于硬件故障一样,群集技术则可以使你免于整个系统的瘫痪以及操作系统和应用层次的故障。一台服务器集群包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域网进行互相连接;当其中一台服务器发生故障时,它所运行的应用程序将与之相连的服务器自动接管;在大多数情况下,集群中所有的计算机都拥有一个共同的名称,集群系统内任意一台服务器都可被所有的网络用户所使用。一般而言,群集和高可用性结合的服务器可将运行提升至99.99%。群集技术不仅仅能够提供更长的运行时间,它在尽可能地减少与既定停机有关的停机时间方面同样有着重要意义。例如,如果使用群集,你可以在关闭一台服务器的同时,不用与用户断开即可进行应用,硬件,操作系统的"流动升级"。集群系统通过功能整合和故障过渡技术实现系统的高可用性和高可靠性,集群技术还能够提供相对低廉的总体拥有成本和强大灵活的系统扩充能力。
  • 【PSMS】第一天

    2007-05-08 21:43:52

    第一天入住PSMS项目组,阵势很大,合作的公司就有六家

    早上8:30到了中试所,办公地点是19楼的PSMS基地

    领胸牌,看工作细则,分发办公用品等等一些准备工作完成後,

    大约10:00,PM召集开会,介绍了项目背景,以及对项目成员要求等等,便无所事事了

    这个项目结构比较复杂,还不是很了解,机密性也很高

    项目的情况等了解更多後再写

    接下来是接近一个月的培训

    涉及了很多以前接触不多的东西,如SAP XI、PM,SMALLWORLD等等

    这里全当是流水帐,等项目完成後再来总结。

  • (收藏)报表测试

    2007-04-26 17:43:14

     

    本文适合有过MIS系统报表测试经验,或者有关进销存系统测试经验的朋友参考。

    报表功能的基本要求,就是通过查询/统计/分析,提供用户所需的准确的数据。如果无法实现这个基本功能,则报表完全失去意义。

    对于用户来说,报表可以直接影响到他们的决策,例如可能因为报表对销售和库存情况反映的不准确,导致错误的大量进货;或者因为报表对应收应付金额计算的不准确,而导致企业对资金占用情况做出错误的估计,

    从而导致错误的决策,最终造成用户在经营上的损失。诸如此类,相信只要大家留心,还可以找出很多这样的例子。

    进销存系统中的报表多如牛毛,而且各种不同行业的进销存系统中的业务有区别,报表也有些区别,因此不太可能对各种报表逐个讲解,而主要是把一些报表测试的经验总结成了十几条可以在各种行业的报表测试中应用的“最佳实践”,来跟大家一起分享。希望下面的这十几条像一招招简单实用的“擒拿手”,可以供正在进行报表测试或者准备开始作报表测试的朋友随手拈来,见招拆招,轻松应对这项工作。

    <!--[if !supportLists]-->(1)       提高对业务的熟悉程度<!--[endif]-->

        其实对任何一个软件进行测试,都必须要熟悉它的业务,包括业务流程和业务规则。但是报表同一般的业务功能还是有些区别的。例如对于单据的增、删、改,通过对界面的浏览和探索性的操作,大概都可以弄明白它的业务流程和业务规则,因为这些内容比较直观,而且在不同的行业中也差不了太多。但是在报表中,是很难直观的看到我们所需要了解的内容的。例如报表中的某个数据项,它的算法或者说数据来源,恐怕是比较难看出来的——即使是很类似的一个数据项,在不同行业的实际业务中,它的算法和数据来源也可以能完全不同的。

    所以对于报表业务的熟悉,主要是两个方面:数据项的算法和数据来源,也就是说要明白一个数据项同具体的业务有什么关系,单据的增、删、改或者状态的变化,对报表中各个数据项的计算会产生什么不同的影响。如果不知道到这些,那么就无法验证报表中的数据是否准确,也无法通过报表去检查业务系统的正确与否。

    <!--[if !supportLists]-->(2)       覆盖所有可能的查询统计方式,而不是以自己的使用习惯为准<!--[endif]-->

        对于报表的使用者来说——一般是企业的中层或高层领导,他们对于报表的要求可能会是多方面的,例如在进销存系统中,可能需要按不同商品进行分类统计,也可能是按供应商分类统计,这些都是由用户在实际工作中的需要来决定的,所以假如一个报表提供了多种查询统计的方法,那么在测试时,只要时间充分,就应该覆盖这些所有可能被用到的查询统计方法,而不是以自己的使用习惯为测试的依据。

    <!--[if !supportLists]-->(3)       使用或构造受控的数据环境<!--[endif]-->

        数据对于报表测试来说是一个非常非常重要的问题。因为上面说到,报表的基本功能就是通过各种查询统计分析的方法,为用户提供准确的数据,帮助用户做出决策。那么那些用来进行测试的数据从哪里来呢?

        首先,应该保证准备足够多的有效的数据。前面一条也提到了,在实际测试报表时,应当尽可能的覆盖到报表所提供的各种查询统计方法,因此至少应该保证每一种查询统计方法都应该有对应的数据,得到的结果都不会是0,否则等于没有覆盖到这个被测的查询统计算法。当然数据也不是越多越好,能保证全部覆盖,并且刚好够用就可以了,因为数据的准备和生成也是很花时间的。

        其次,要保证数据的可控。数据并不是随意生成的,如果使用通过自动化工具或者通过业务测试时随意的输入的数据来进行报表测试,一般来说是不太可能的。因为如果无法控制数据来源,那么即使知道报表中每个数据项的算法,也无法最终验证报表的查询统计结果是否正确。例如,系统的会有不同类型的单据,每种单据又会有不同的状态,某个报表的统计中,可能会涉及到多种类型和状态的单据,那么在准备数据时,就要充分考虑到这一点,准备各种不同的单据来满足测试的要求。又比如,如果整个系统中只有一个供应商,一个商品,那么测试按供应商分类统计或者按商品分类统计的报表时,意义也就不大了。

        所以如果希望高有效、更高质量的完成报表的测试,那么就要重视并增加对于数据准备工作的关注:用于验证报表功能的数据,一定是专门为报表准备的,并且是经过精心设计,要分析影响数据项算法的各种因素,以及每个因素可能出现的不同变化,这样才有可能覆盖各种查询统计方法;同时,才能保证无论使用哪个数据项的算法进行计算,其结果都是可以预知的——因为数据来源已经被我们控制了。

        特别是对于算法比较复杂,又提供了多种查询统计方式的报表,如果想完整的测试,就需要准备大量的数据。而如果想高效、高质量的完成这项功能,就一定要理解数据准备工作的重要性。

        经过精心设计的数据还有一个好处,就是当在进行业务功能的测试时,不再需要使用一些随意的数据,而是可以通过业务测试的过程,把报表测试所需要的数据输入到系统中。并根据报表对单据类型和状态的需要,进行相应的操作。

        如果留心,你也会发现报表测试同其他业务功能测试的有个区别。业务功能(例如单据的新增、审核等)的测试用例设计,通常需要考虑的是对各种正常的、异常的业务流程和业务规则的组合的遍历或覆盖;而对于报表功能,虽然没有太复杂的业务流程和规则,但是算法更加复杂,同时报表功能本身就是一种对数据的加工处理,因此会更偏重于对于各种数据来源和算法的遍历或覆盖,也就是要准备各种正常的、异常的数据,来验证报表是否取到的该取的数据、没有取不该取的数据,并且最后计算出了正确的结果。

    <!--[if !supportLists]-->(4)       特征性数据的准备<!--[endif]-->

        这又是一个同数据准备有关的问题,也是一个解决实际问题的经验。如果由多人同时对一个系统进行测试,虽然大家各自使用的数据都是经过精心设计的,但是在实际进行报表测试时,还是很难保证其他人的数据不会对自己的测试结果产生影响,最明显的一个问题就是原来自己对结果是可以预知的——因为数据是经过精心设计的,是可控的,但是现在掺杂了别人的数据,就需要花时间去区分这种“假”的错误和真的错误。

    有一个经验是可以借鉴的,就是在初期,团队内对数据的准备达成一直,使数据中的某一项具有特征性,例如分别使用不同的供应商,或者使用不同的商品。最后测试报表时,通过限定选取的数据来源,来保证相互之间尽可能的没有影响。

    <!--[if !supportLists]-->(5)       做好数据环境的备份和维护<!--[endif]-->

    虽然数据是经过精心准备的,但是难免在操作过程中因为误操作导致环境的变化,例如不小心把一张单据变成了另外一种状态,或者某个类型的单据多做了一张。对于这种情况,一个简单的方法就是去维护你的数据文档——一般我们都可以用EXCEL表来保存我们事先准备的数据,可以一个文件保存一个类型的单据,例如采购单、入库单、出库单等等,文件中的每张表用来保存不同状态的单据,例如已经审核过的入库单,没有审核过的入库单,全部入库的入库单和部分入库的入库单,等等。假如你一不小心,把一张本来准备入一半的入库单全入了,那也不要惊慌,去重新调整一下你的数据文档,在相应的类型相应的状态的单据列表中新增一张就行了。

    而如果想减少回归测试的工作量,那么应该考虑在一些关键的“点”上备份测试数据。例如所有的基础单据已经输入完成,但是还都没有开始审核或者出入库,那么可以备份一下,下次再测的时候可以直接在数据库中恢复这部分原始数据。

    <!--[if !supportLists]-->(6)       在业务功能测试通过之后才开始<!--[endif]-->

    这一点相信应该不难理解,如果业务功能本身存在缺陷,导致的数据不准,那么最后进行报表测试也就没有什么意义了。所以,应该在保证各项同报表有关的业务的功能测试通过之后,才开始考虑对报表进行测试。

    <!--[if !supportLists]-->(7)       寻求开发人员的协助<!--[endif]-->

        在报表测试中很常见的一个问题,是需求文档中可能没有定义报表的各个数据项的算法,这时候你需要找开发人员帮忙,向他们了解准确的算法和相应的公式。

    <!--[if !supportLists]-->(8)       多个报表相互对照<!--[endif]-->

    这是一项“高级”的报表测试技能,需要对整个系统中的各种业务的熟悉程度达到一种炉火纯青的地步。除了可以准确的说出各个业务的处理过程对每张报表的影响之外,还能够进行横向的联系,知道不同报表之间存在的关系。例如,一个简单的例子,库存报表中,你可以看到商品的出入库情况,而在销售报表中,你可以看到商品的销售金额和销售成本金额,在应收应付报表中,你又可以看到不同供应商或客商之间的应收应付金额。那么这几张报表之间,是否存在一些关联呢?是否会存在一些可以相互验证的地方呢?这个问题,留给大家来思考 ^_^

    <!--[if !supportLists]-->(9)       着重对那些算法复杂、与业务功能关联较多的报表的测试<!--[endif]-->

        如果只是简单的把某个日期范围内的所有入库情况统计出来,可能不会出错;但是如果还要考虑按照供应商或商品汇总,同时要选取特定的类型或状态的单据,再进行一些响应的计算,恐怕就很难保证开发人员永远不会出错了。这就像业务功能的测试一样,越是复杂的业务,越有可能出错。

    <!--[if !supportLists]-->(10)   留意四舍五入对报表数据的影响<!--[endif]-->

    从这一条开始,后面的内容可以说也是一些在实际测试时要注意的事项。

    这也是一个常见的问题。在一般的进销存系统中,都会存在这种情况,无论小数点后保留几位,总是难以避免明细和汇总之间的差别。原因可能是因为采购和销售的包装不一致,因为拆零引起的,例如10/30*3010;或者由于毛利率、税率等因素导致的不一致。我们曾经试过在保留4位小数的情况下还是无法避免这种情况。

    <!--[if !supportLists]-->(11)   留意进//销时使用不同单位对报表数据的影响<!--[endif]-->

    例如采购时是5箱,每箱有100盒,而销售单位是盒,入库之后,可能会要求按照销售单位来统计,这时要注意开发人员是否会选择了错误的单位,把500盒弄成5盒。

    <!--[if !supportLists]-->(12)   留意业务单据中存在多个日期字段时对报表数据的影响<!--[endif]-->

        一般来说,一张单据上都会有多个日期字段,比如采购单就有采购日期、单据日期、审核日期,而入库单也会有单据日期、入库日期,诸如此类。那么在测试时,一定要留意,开发人员是否按照要求选择了正确的日期,包括日期选取的一致性——是否存在这边取采购日期,那边取审核日期的情况。

    <!--[if !supportLists]-->(13)   留意是否存在遗漏的单据类型<!--[endif]-->

        例如像出入库的报表,入库方向的,除了最主要的采购入库外,可能还会包括退货入库、盘盈入库、报溢入库;出库方向的,除了最常见的销售出库,还会包括盘亏出库、报损出库。那么在具体测试时,一定要准备充分这些相应类型的单据,并且要留意开发人员是否遗漏了相应的单据类型。

    <!--[if !supportLists]-->(14)   留意不同状态的单据对报表数据的影响<!--[endif]-->

    例如采购单,当采购单发出后,供应商会开始送货,可能第一批之送来了一半的商品,那么这时采购单的收货状态是“未完成” ;当供应商把商品送齐了以后,采购数量=收货数量,则采购单的收货状态变为“已完成”。那这时留意,开发人员在采购报表中,是包含所需要的状态的单据,还是只包含了一部分?

    <!--[if !supportLists]-->(15)   留意那些被当做默认规则的因素<!--[endif]-->

    有些规则——例如单据类型或者单据状态——是作为默认规则写死在SQL语句或者数据库的存储过程里面,这些规则不会体现在界面,也不会由用户选择决定。但是这些规则恰恰是最容易被忽略的部分。所以,一定要同开发人员反复确认,保证自己已经了解了同报表各数据项计算有关的各个因素。

    <!--[if !supportLists]-->(16)   保证测试人员可以通过UI 找到自己所需的所有原始数据<!--[endif]-->

    在进行系统测试时,无论是报表,还是一般的业务功能测试,都不要去直接通过SQL语句查询数据库中的内容,而是通过UI来输入,再通过UI体现处理的结果进行验证——因为这是系统测试,不是集成测试,将来用户是决不会去直接查数据库的。因此,如果需要对报表的结果进行验证,应该通过其他的功能模块,去查询业务单据,或者其他报表,根据UI体现的结果,来进行确认。

    <!--[if !supportLists]-->(17)   检查大数据量对报表的影响<!--[endif]-->

        报表测试也会涉及到性能测试,主要是在大数据量查询统计的测试。大数据量一是说原始数据多,二是被操作、计算的数据多,三是某个数据项被是经过多次计算得出的。特别是对于一些算法比较复杂的报表,10万条数据和100万条数据时的响应时间将表现出巨大的差别。

    <!--[if !supportLists]-->(18)   不要遗漏权限控制和访问安全性的测试<!--[endif]-->

    这里说的权限控制不是谁可以访问某个模块,谁不可以访问某个模块,而且数据的计算也没有直接的关系,而是侧重于报表设计的测试。我们都知道不同的报表是设计给不同的人看的,例如出入库报表是给仓库管理人员看的,里面不会包含商品的价格,而只会包含数量;而财务报表中,只会包含采购、销售的金额,而不会包含数量,这样才能保证可以相互对照,不会出现营私舞弊的行为。那么在测试时,应当考虑报表是否泄漏了不该泄漏的信息。当然,这里对业务的熟悉程度就是更高的要求了。

    又如,不同的业务员只能看到同自己有关的业务,但是领导可以看到所有业务员的业务——例如不同的业务员分管不同的客户或者地域,他们之间的销售情况是互相保密的。

    还有一种情况,系统的用户可能会为他的供应商提供一个专门的程序或者Web页面,供其对其供应的商品的销售、库存情况进行查看。那么对于这种情况,一方面是要保证某个供应商只能看到他所供应的商品的销售、库存情况,如果某个商品由多个供应商同时提供,那么其中一个供应商应该只能看到他提供的那部分,而看不到其他供应商提供的同一商品的情况。当然,这种功能一般都是通过外网(internet)来访问的,所以也还要考虑相应的访问安全性测试,以免泄漏重要的商业信息。

431/3123>
Open Toolbar