记录阿里巴巴QA架构组成长点滴。2008年关键词为效率,技术,影响力!QA/测试架构师定义:开发和设计测试框架测试库;纵横全局的考虑产品的功能,设计复杂的测试系统;负责研发某一项特定的测试技术;为公司考虑如何提高测试效率。领导公司测试技术的发展和测试策略上的方向,关注整个公司的测试部门的问题,前瞻性的考虑未来的版本的测试策略和技术。测试架构师计划/设计测试平台,关注着产品的测试过程,提供咨询服务,影响到公司内的测试机构测试社区,以及开发机构等,对产品各个方面施加深远而正确的影响,最终提高整体软件质量。

发布新日志

  • 单元测试文档的重要性-wxc

    2008-11-22 00:15:53

    随着部门人数的激增,基础研发和基础平台的应运而生。对我们的挑战则是持续集成测试。

    现实情况是需求不可能一成不变,在后期的coding阶段总会由于这样那样的原因而改变,同理设计文档也是。而后期的修改文档的作用是那么的微不足道,那么唯一的突破点貌似只有单元测试文档了。

    假定我们开发和测试资源都充足的情况下,其好处是显而易见的:

    1.先写单元测试用例,再写代码,可以有效的抑制开发的代码变动量

    2.即使变动,QA也可以第一时间通过单元测试文档获得代码变动情况,调整测试脚本,使得daily test成为可能。否则API测试也只能是在外面隔靴搔痒,而不能真正深入代码深处。 

    3.性能测试发生问题往往是,譬如java数据池中记得建立链接,而忘了关闭链接。c中队列资源使用后的忘记回收。而单元测试则可以提前消灭这些问题。那么是不是投入资源到单元测试更有效呢。

    4.最重要的一点,把单元测试文档纳入svn的管理,进行版本控制。一份代码,一份单元测试文档。

    有句挺有意思的话是这么说:两台电视机,其中一台每个电阻元器件都进行了检验,再组装,整体检验;另外一台,则不管三七二十一,组装为一整体,再进行各项功能测试;那么那台电视机的质量会更让人放心呢,我想答案是很明显的。

  • 介绍一个opensourse软件

    2008-06-24 20:13:52

    KnowledgebasePublisher是一个开源FAQ系统,也可做为一个用于发布文章的内容管理器。

    定位:采用KBPublisher作为一个文档管理和搜索为中心的平台

    主要功能有:1.无上限的目录分类

                            2.全文搜索

                            3.角色管理

                            4.评价/推荐:有Commenting / Rating / Send to friend / Users can ask questions等等功能

                            5.好用的所见即所得编辑器

                            6.添加附件,RSS

    缺点:交流功能略显不足

    优点:搜索很强大(支持全文search),一目了然的目录结构,方便查询

    总体而言:KBPublisherconflunce比较类似,但是具备confluence没有的部门专属性

  • 阿里巴巴质量保证平台整合趋势

    2008-06-20 20:59:35

    当下阿里巴巴质量保证部门采用主要的平台、软件、工具有:


    1) 项目管理工具: IBM  rpm 。系统架构: jboss4.2 + oracle9 + redhat 3.8 。

     缺点:由于IBM SQL 加密以及数据库表结构未提供,经过几次系统调优,操作响应速度依然不尽如人意。
           目前所需要的部分报表是不满足的,需要导入到数据仓库平台分析。

      初步评估Microsoft share point。接触HP ppm(能够和quanlity center 、Microsoft project很好集成)。

       国内华为花费重点购买rpm以及昂贵的咨询费让IBM 一起提升软件开发规范度。

    2) 需求管理工具
       
       需求部门采用confluence。系统架构: linux。

       用例颗粒度尚未符合软件工程的Use case,细致程度待提升。

       目前部分测试报告、测试文档也放在confluence。

       confluence用 wiki风格。其版本管理能力、交流能力稍弱。comment具有类似回帖功能。

    3) 测试用例与缺陷管理

        采用quality center。 系统架构: jboss +IIS + sql server express+ windows 2003 server
        QA 经常使用的模块:测试用例分析与设计、缺陷管理、后台备份恢复等

        需求管理、dashboard报表系统未充分使用,另外有些团队测试实验室利用率稍低。
        由于web项目频繁变更,报表模板复用率偏低,故报表系统能力未充分发挥。
        
        主要缺点:每个全功能缺陷连接license在3-5万。

    4) 测试部门文档管理

        采用svn。系统架构: apache + redhat linux
        
        缺点:全文检索能力弱。可以结合google 本地搜索功能或者MS的搜索功能
       
    5) 内部技术论坛
       
       自主研发的论坛opentech。 系统架构: java + webx+ linux 。
     
       我个人认为还是相当不错的,功能齐全。有论坛、知识库,支持帖子搜索。且有高质量的文档。

       缺点:QA评价是有点阳春白雪:)  ,我看来缺点就是外部合作伙伴由于信任证书无法登录。

    6) 即时通信
     
       采用阿里巴巴自主研发的贸易通。系统架构:c++ + linux。
       平常各个测试组建立群,可以在群上迅速交流。

       缺点:新来的员工无法看到先行者的一些讨论、分享。

    7) 数据仓库平台
     
       MicroStrategy之上二次开发。后端Oracle。


     从上面看,信息分散到不同的平台中,为了进一步提升使用效能,整合平台工具需求呼之欲出。
    主线大致有几点:

    1) 项目管理->需求分析->测试分析与用例设计->BUG 管理->报表、统计分析,一个环状的闭环系统。
     
       由于平台采用多家产品,整合难度提高。仅仅从数据层面流动意义不大。

    希望上述多个环节能穿接起来,形成一个宏观层次提供报表、微观层次给测试工程师工作的平台

    2) 需求分析->测试分析与用例设计->BUG 管理->源代码,形成一个需求和源代码的映射关系,做到需求和代码的有效变更跟踪

      sina 采用开源工具做。

    3) 测试文档、交流、搜索功能一体化
     
       主要针对文档放在SVN,项目计划文档放Confluence,交流在贸易通上集散。
      
       希望能做到集文档、交流、全文检索功能于一身。这个过于个性化的需求,暂时没有找到开源工具解决。
     
       光针对全文检索需求,可以采用自主研发的isearch3.0或者开源lucense。带附件的帖子不能简单做搜索。

    4) 其他
       
       针对项目管理平台RPM,改善成性能更好 、数据纬度更丰富、数据流/接口清晰的平台

    ...

       每一个需求真正融汇贯通,实现成本相当不菲。


     

  • 阿里巴巴测试难题

    2008-06-17 16:55:27

    测试技术方面

    (一) 功能测试

    1测试环境搭建时编译抛出错误,快速判断是否系代码问题  
    2测试中抛出500错误(或log文件中error),快速判断系代码or数据or外部接口问题
    3自动化测试脚本是否细化验证点为所有可验证内容(页面所有内容显示区域、数据库、搜索引擎、cache、本地cookies等)? 检查细化,但维护量非常大
    4(高优先级) 测试数据准备工具(数据库、搜索引擎、cache等持久化或临时数据)
    5个人pc机本地测试环境差异(操作系统状态、完整性,浏览器版本、完整性),引起问题的原因是软件的添加/卸载,浏览器插件安装/删除,补丁程序,系统设置与浏览器设置等等
    6 数据准备 如:不同类型账号生成,像生成10中供新单账号, 10个中供服务中账号等等,批量生成而不需要手工完成,否则效率慢了。
    7 搜索引擎支持多个站点,每个站点又有不同的数据应用,se.conf存在众多的配置项、分词器,测试的矩阵非常庞大,如何保证尽少资源获取最好测试效果
    8 抽样检查分词器的功能有遗漏,但分词器算法和外部已有的分词器算法不同,如何提高分词效果核对效率
    10 海量数据查询结果正确性验证

    (二) 性能测试
      1 生产环境硬件模拟
                    生产环境依赖于外部昂贵的设备,在测试环境开展性能测试如何模拟?比如有专用邮件服务器,图片服务器,CACHE服务器?
            2 数据模拟
                生产环境的数据量巨大,如何剪裁合适的数据集作为性能测试基准数据?
            3 用户行为模拟
                      虽时间变化日志系统分析的数据会很快过时,如何低成本跟进访问模式
              
      4 特殊场景下性能瓶颈定位与监控等等
          比如国际站凌晨2点突然LOAD 升高,原因未明
      5  容量规划的效果如何衡量
       

    (三) 质量管理平台
    1 没有缺陷报告平台,需要详细或自定义报表时无法给出   
                    如QC 的报表、需求管理2部分功能一直没有采用。
    2 项目管理、需求管理、缺陷管理多个系统入口, 并没有统一关联。另外代码与需求之间映射关系随着业务变更也难以一一映射
    3  现有的软件测试平台更适合传统的大型软件测试,能否、如何定制更适合快速上线的WEB系统?
          
    (四) 测试管理
    1 测试机器的使用权限(Linux、Windows)管理,做到近少互相干扰
    2 如何有效度量测试工程师的绩效?
    3 (高优先级) 如何更快找到合适的测试人才?
    4 (高优先级)如何提高开发、测试双方的满意度?
    5 (高优先级)如何提高估计测试时间的准确度?
      
    (五) 测试新技术的应用与推广  

    1  如何有效开展安全与漏洞测试
    如:sql注入,cookie安全机制,安全证书、加密等. 服务器与客户端的安全漏洞检测等
    2 白盒测试工具引入及白盒技术等
    如:单元测试工具Junit, parasoft的白盒测试工具使用与引入等。
    3 自动化测试在项目中是否需要介入,何时介入?(数据准备?回归测试?)
    4  如何在自动化覆盖率和验证点密度  与自动化成本间找到一个合理的平衡点


    测试策略与方法方面
    (一) 测试用例分析与设计
      1 冗余的测试用例的精简化问题
      2 (高优先级) 底层代码的修改如何测试,回归范围如何确定,测试策略如何确定?
    如 ejb, jboss改造的性能与功能测试
      3 如何使用冒烟测试对大型软件进行快速测试,用例的选择问题
      4 如何为复杂产品/大型测试项目选取测试策略? 如
    镜像站点测试
    异地数据同步测试
    重构项目测试  
      5 Apache Modul如何测试(功能测试与性能测试)如中文站最近发布的将Image server固定域名通过modul替换成动态域名?
      
      6 (高优先级)支持多浏览器(IE6/ie7/firefox...)/多OS软件如何测试? 支持国际化语言版本的软件如何测试?如国际站网站支持英文,繁体版,马来西亚语言。

         降低成本的测试方法有哪些?
        正交表测试方法满足我们的需求么?
      7 (高优先级)如何在时间、进度压力下,最优选取测试集合?回归测试的面积多大算合理?

      8(高优先级) 跨部门、跨公司的接口测试如何开展,以提高协调效率?
         如中文站和阿里软件贸易通状态接口,国际站和后台CRM 接口,

    (二) 测试执行

    1开发的代码中缺少足够的接口来支持自动化或者黑盒测试的问题
    2 反复测试引发的测试疲劳如何应对(个人、团队)?交叉测试什么时候引入合适?如何衡量交叉测试的绩效?

    (三) 测试标准
    1 如何定义测试“完成”,比如如何定义搜索引擎测试完成?
    2 如何提升对项目是否可以release的影响力
    3 (高优先级)如何清晰度量产品的测试质量
    按测试覆盖率?按BUG遗漏数?按已经发现BUG的曲线图?哪些标准度量最合适
    4 测试人员是否需要了解代码,了解代码需要到达何种程度?
    5 如何在没有单元测试代码情况下,度量代码测试覆盖率
  • 面对棘手问题如何向老板汇报工作

    2008-06-07 00:06:26

     

       在日常工作当中,某一个难题面临几种选择技术方案,每一种方案都没有绝对的优势胜出,这个时候如何请示老板拍板?
      
       在这个情况下,单纯向老板诉苦或者让老板直接给答案都不是高明的作法。
     
       汇报之前,你多问自己几句,你真的做足功课了?你准备的材料与判断依据充分到足以让老板拍板的程度了?你充分考虑部门的接口系统、远期系统整合目标了?每一个方案的优势、劣势考试的维度覆盖全了?你有借助外脑思考了?
     
       最优方案可以转换成成本效益分析,综合权衡利弊得出的。有时候,某个场景下,该方案最优,但随实施推进,方案优劣可能颠覆。比如计划做PHP开发的系统二次开发,距离客户需求最贴近,但市场上PHP开发资源太缺乏了;再迂回确定用JAVA全新开发,近期成本高,但远期维护扩展性很好。

       不管多么艰难,老板肯定问你选择哪个,你给的答案应该是底气十足的。在交流时,切记思路不能被老板左右,同时不断理清自己的思路。     
      

  • 看看阿里巴巴牛P如何不断自我提升

    2008-06-07 00:05:07

    偶看到刊物上一些专业领域非常出类拔萃的技术人员的提升秘诀,冲动分享。版权归阿里巴巴

    A 学习不分场合和时间,随时可以获取知识,比如网络、电视、书籍、同事、客户,甚至竞争对手。
    学习不能靠一时热情冲动,需要长期积累。平时的学习大多零碎、不系统,还需要整理、盘活现有知识

    B 在成功和失败中获取经验

    C 以个人兴趣为出发点,理论与实践相结合,并做到循序渐进

    D 在网上尝试引导别人解决问题,解决大量别人碰到的问题,让自己掌握的知识更加全面、深刻

    E 订阅大量RSS获取有价值的技术信息,写网志,认识技术圈子朋友,互通有无

    F 坚持和兴趣是关键。学习与自我提升是一个漫长的过程,经常长久在黑暗中徘徊,然后突然有阳光普

    照的一刻。将学习融入每天的工作与生活中,每一个项目都是很好的学习机会,都可以设法超越原先做

    事的定式,去学习并运用一些新的知识与方法。当学习感觉迷茫时,找同事交流讨论,常有豁然开朗的

    感觉。

    G 多思考问题,在工作中碰到的问题,去想想有无更好方法解决它,来提高自己

    H 多读,多观察,多思考

      真的很精辟,学以致用更重要

     

  • 遴选合适岗位人才要领

    2008-05-27 08:06:16

     

    一 分析现有岗位人员技能特点,最好增加互补型人才

      假如现有的人才都属于通才型,那需要找到一个很有专长的人才,作为互补最合适。
    还有如果团队都是年轻人,加入一个经验丰富稳重一些的更好

    二 考察专业能力
     
      工程师考察专业能力相对容易一些,可以将自己经历过的项目提炼出一些有梯度的问题,判断应聘者

    属于需要人带 、独立做事情、带团队做事情、某个领域的专家中哪种类型

      专业能力最好能涵盖基础知识以及项目实践,把握好深度、广度。基础好的人,发展潜力、爆发力比

    较好

    三 考察学习能力

     了解碰到疑难问题的解决模式,以及对这个问题是否有提问的智慧。

    另外,可以将业余爱好与学习能力结合起来。还有询问经常去的一些网站,记得哪些比较深刻的技术细

    节。
     
      一般情况下,如果对某个比较难的技术问题把握得很到位,也可以侧面了解到学习能力高下。
      学习意愿可以从他最擅长的知识入手考察,一般意愿强的人,喜欢寻根究底,深刻理解背后的原理。
    反面而言,就是一根筋:)

    四 考察适应环境能力
     
     可以从几个方面看
    1 承受压力能力:互联网公司项目多\紧急,一般面临多项工作并行开展,同时节凑快。
    2  软技能:测试工作繁复琐碎,需要耐心、细致的特质;由于需要频繁和外部联系,良好的沟通技巧,

    有利于顺利开展工作。开放、共享的心态有助自我提升。
     
      还需要判断其缺点是否影响其业绩

    3  团队的融入性: 做事风格不能相差太多。认可结果为导向、客户第一等多项价值观

    五 职业素质
     
    1 比如跳槽是否过于频繁,能否有稳定性
    2 对自己是否有一个清晰的定位以及职业发展规划

     实际上,在挑选高级人才时碰到最大的问题有几个
    A) 比较接近的候选人偏少
    B)  把握不准到底适合这个岗位、流入市场的候选人到底有多少?这里有类似非常复杂的猴子捡玉米问


    C)  在软技能和潜力把握方面难度比较大

    欢迎大家探讨

  • web软件测试难题

    2008-05-25 15:46:40

    最近在整理测试难题,以及打算在跨子公司讨论、分享的话题。呵呵,大致列举一些

    1 如何清晰度量产品的测试质量?

       按测试覆盖率?按BUG遗漏数?按已经发现BUG的曲线图?哪些标准度量最合适

    2 如何为复杂产品/大型测试项目选取测试策略? 如
     
    镜像站点测试
    异地数据同步测试
    重构项目测试

    3 支持多浏览器(IE6/ie7/firefox...)/多OS软件如何测试?

    降低成本的测试方法有哪些?

    正交表测试方法满足我们的需求么?

    4 支持国际化语言版本的软件如何测试?如国际站网站支持英文,繁体版,马来西亚语言。
    降低成本的测试方法有哪些?

    5 如何在时间、进度压力下,最优选取测试集合?
    回归测试的面积多大算合理?

    6 如何提高估计测试时间的准确度?

    7 跨部门、跨公司的接口测试如何开展,以提高协调效率?

    如中文站和阿里软件贸易通状态接口,国际站和后台CRM 接口,

    8 如何有效度量测试工程师的绩效?

    9 生产环境依赖于外部昂贵的设备,在测试环境开展性能测试如何模拟?

    比如专用邮件服务器,图片服务器?

    10 生产环境的数据量巨大,如何剪裁合适的数据集作为性能测试基准数据?

    11 如何更快找到合适的测试人才?

    12 如何提高开发、测试双方的满意度?

    13 如何在没有单元测试代码情况下,度量代码测试覆盖率

    14 现有的软件测试平台更适合传统的大型软件测试,能否、如何定制更适合快速上线的WEB系统?

    如QC 的报表、需求管理2部分功能一直没有采用。

    15 项目管理、需求管理缺陷管理多个系统入口, 并没有统一关联。另外代码与需求之间映射关系随着业务变更也难以一一映射

    ...待续

  • 技术管理初体验

    2008-03-22 10:57:21

    在技术管理方面,偶是绝对的新手。

    不过就像很多事情一样 ,都有人无师自通的 J ,可惜偶不算这种。

    以下都是偶的一些浅显见解。

     

    技术管理和纯技术工作还是有很大的不同

    1)      技术管理需要经常REVIEW 成员的成果,REVIEW的工作量取决于REVIEW的粒度,太细会把握不住重点且工作量大,太粗无法看出门道。由于要REVIEW 组员成果,需要对组员的工作领域有比较深刻的把握,故技术管理需要杂家 纯技术则一门心思把自己的事情做好,并偶尔帮忙请教的同事解决问题,在自己的领域专注得比较深

    2)      技术管理的重点在于把握人,要鼓励组员积极发挥主观能动性,及时发现组员的思想情绪变化,也需要授权给与组员充分的信任但还是需要REVIEW成果;纯技术则重点在于管事,把颗粒很细的事情解决掉,当然也有培养接口人的任务。

    3)      技术管理的绩效考核从团队业绩出发,一华为跳槽过来的哥们说的: 团队PKI 比个人PKI 更难出彩; 纯技术工作更多把自己的活做好,并影响周围人积极向前

    4)      技术管理的工作经常被打断,思路也随之被打断,故在时间管理上提出更高要求;纯技术则干扰少一些 ,技术管理者需要帮纯技术的同事创造一个尽少被干扰的环境

    5)      在技能要求方面,作为一个上通下达的角色,技术管理在领悟能力、沟通、协调等 软技能方面提出很高的要求,另外在某些时刻需要根据直觉决断 ;纯技术则需要在技术细节方面把握很到位

     

    技术管理方面碰到的一些容易困惑的问题

    1)      技术管理碰到最大的问题是资源短缺,如何平衡各方的需求成为一个最棘手的问题

    2)      绩效考核,技术工作很难单纯用数字量化,如何甄别组员的优秀,需要有伯乐的眼光

    3)      一直保持良好的团队激情、氛围。基层的技术管理者手上有的 赏的权利很小,手段多为肯定、赞扬组员的工作,呵呵,有时候这些手段是不够 J

    4)      技术管理如何协调团队内外的关系。外部期望值一般都很高 ,作为技术管理者在满足外部需求时,需要权衡团队的承担能力

    5)      怎样的领导风格最适合团队? 太严格,容易压抑;太宽松,容易散漫;太武断,容易听不见他人意见,太犹豫容易错失时机

    6)      技术管理,自身还需要承担很多技术工作,比如确定技术研究方向、解决技术问题,技术和管理分配的时间比率为多少最合适?

    7)      …..

    说到底,面对诸多问题,有一个度量把握的问题,这个很需要艺术。 也是偶的努力方向。

Open Toolbar