说说QA那些事儿

虫虫 发布于 2009/12/10 08:12
阅读 1K+
收藏 1

转贴自我的博客 http://www.zhlmmc.com/diary/104930733

我一看,又是一个月,距离我上一次写博客。期间有过好几次冲动,有过好几次值得我记一笔的时候,但都被我用“乱”压了下去。用一句话来形容就是理想与现实的差距。

 

我去年进的Oracle,其实我在进来之前都不知道这工作是干嘛的,只知道这是跟程序员有关的。我选择Oracle的唯一因素是因为给的钱多,没办 法,君子爱财。但是我现在发现我实际上被骗了。不说新来的一个中国小女生在隔壁公司的工资比我还高以外,我还要每年上缴几乎40%的税费给美国政府。想到 这个我就想操你大爷!不过我向来喜欢自我麻痹,自我陶醉。Oracle虽然有万般不好,但是工作轻松啊。算算每小时的工资的话,我还是飘在天上的。

 

我在进来Oracle半年的时间内都觉得自己被强奸了,怎么莫名其妙干了QA的职位,每天跟一帮印度大妈在一起,干一些毫无技术含量的事情。论文 凭,论水平,我怎么的也是个高级程序开发员吧。后来渐渐习惯了,发现不光是QA,整个Oracle都是这样的,印度大妈乌鸭鸭的一片。不管你承认不承认, 在人们心中QA就是比Dev要低一档,我自己也这么认为。虽然我的Title也是Software Engineer,但我别人讲,我总是说我是QA,大概是希望能通过我自己改变一下人们对QA的看法吧。

如果每个程序员都像东哥这么牛的 话,这个世界大概不需要QA的存在。可事实不是这样的,特别是像Oracle这样的公司,很多印度大妈其实不知道自己写的代码是干嘛的。再加上 Oracle开发的怪兽级的软件(Fusion Middleware),我觉得基本上开发就是QA驱动的。原因很简单,因为Oracle的产品实在太复杂,大多数Dev都不知道自己的代码将会被如何使 用,大部分Dev都不知道如何模拟客户的环境来测试自己的功能。他们只管把代码checkin,然后就等QA报bug。等QA报的新bug数量处于一个比 较稳定的较低的状态的时候,产品就可以release了。所以,Oracle拥有一支和Dev差不多数量的QA队伍。这是必须的,否则玩不转。

 

下面我来摆事实讲道理说明QA也可以很牛逼。首先我要说的是,Oracle确实有很多很多QA是混的,基本上每天做一些机械操作。但也有一些像我这 样比较牛逼的QA,做啥呢,叫做automation。Oracle有一套非常完善的测试系统(我相信所有大公司都有),能够全自动模拟客户环境,执行测 试,报告结果,如果有错误的话,自动file bug。

 

这个牛逼的系统的最底层是Virtual Machine,具体用的哪个牌子我就不知道了。通过VM,Oracle虚拟了很多很多机器,叫做Server Farm。有一个程序是专门管理farm里的机器的,负责分配机器给不同的任务(job)并在任务结束以后回收机器。每个人都可以通过一个Linux命令 给farm提交一个job。

 

每个job都和一个拓扑结构相关(topology)。一个topology定义了需要几台机器,安装什么操作系统,安装什么软件,执行什么脚本。 所以当farm收到一个job的时候先根据topology的定义把机器安装配置好(所有被测试的软件都是可以进行无人值守安装的),然后执行指定的脚本 进行测试。这个脚本是什么呢?Ant。

 

几乎所有测试代码都是基于Ant的,少数会使用到python/perl。所以基本上我就是写Ant脚本的。Oracle有几套不同的Ant框架, 不过基本都差不多。框架提供了一些公共的ant命令,比如deploy application, call application, 对比测试结果,生成报表,上传测试结果等等。所以,基本上你自己的ant脚本只要负责测试逻辑就行了,比如部署哪些程序,调用哪些程序,输入是啥,正确的 输出应该是啥等等。

 

如果测试和UI相关的话,还要用到一些特定的UI测试框架,比如Selenium。 Oracle不久前买了一个公司的产品(是买license,不是收购),据说很牛逼,从desktop到web通吃,融合了record-replay 和selenium这样component based测试产品的优点。但是我忘记是什么名字了。看过demo,觉得是吹的比较牛。

 

QA牛在什么地方呢?牛在这些topology,job,ant框架等等都是QA开发的。所以我老板的老板管QA叫做Test Developer,他觉得这个名字比较好听。其实这些都和QA的本业关系不大。QA的根本目的是要保证产品质量,有了这些高级的工具还是不能 Assure Quality的。要正真做到保证产品质量,就得首先对这个产品有一个彻底的了解,然后要对和这个产品交互的其他产品有所了解,还要对客户的生产环境有所 了解,最后要在此基础上制定一份周全而可行的测试计划和测试案例。因为Oracle产品很大,要100% coverage是不可能的,所以如何取舍乃精华所在。(我说的100% Coverage不是API级别的,API肯定是全部测过的,往往不能发现任何问题。绝大多数问题都是在模拟生产环境中发现的。Oracle的产品错综复 杂,每两个产品的功能做一个乘法,测试用例就得几何级增长……)不幸的是,我到现在还没有发现哪个team在这方面下工夫,基本都是就事论事,测完该功能 了事。所以Oracle的产品质量很差,很难用。但是在Oracle的人都知道,IBM的产品更差!

 

因为在企业级软件这个被垄断的市场里,Oracle和IBM在比谁的软件更难用,于是诞生了Consulting这个职业。Consulting说 白了就是教你怎么用这个软件。我认识一个人,仅仅因为她会使用Oracle的某个软件,就拿到了多家公司的offer。因为培训新人使用Oracle的软 件成本实在是太高了 我觉得QA比Dev强的另外一方面就在此。因为QA测试的时候是模拟的用户生产环境,所以对这些东西再了解不过了。转行去做Consulting是一点问题都没有~

 

人们往往把软件和建筑比,因为两者在整个生产流程上有很大的相似性。不过我一直在考虑,为啥房子很少塌,但是软件却常常崩溃呢?最简单的理由是建筑 从人类起源就开始了,而软件才几十年。这点无可辩驳,不过我一直觉得QA在软件领域没有得到足够的重视也是重要的原因。牛人往往都不喜欢干QA,于是QA 自然就比Dev低了一等。不懂这个谬误啥时才能被纠正。

 

最后再说说程序员这个职业。我是计算机专业的,所以很多朋友,同学都是搞计算机的。但是毕业以后,很多人都想转行。因为程序员来钱太慢,都想赚快 钱。根本原因得归结于这个浮躁的社会。静下心来写程序的真的很少,很珍贵。我做程序员应该能比大多数人好一点,但肯定做不到最好,因为我整天想着赚钱,所 以我更想做老板。我算半个程序员吧。我也不懂说这些干嘛。大概现代人都觉得怀才不遇,找不到人生的方向。

加载中
0
老枪
老枪

绝对好文,先占个沙发。

0
红薯
红薯

话说那个“东哥”是哪颗葱啊?

0
虫虫
虫虫

引用来自“红薯”的帖子

话说那个“东哥”是哪颗葱啊?

你不会看链接的?

0
红薯
红薯

引用来自“虫虫”的帖子

引用来自“红薯”的帖子

话说那个“东哥”是哪颗葱啊?

你不会看链接的?

人家害羞,不好意思看

0
阿荣
阿荣

貌似不同公司的QA都不一样的,Oracle公司的QA怎么看像是测试一样,我们公司的QA是来审核文档的,呵呵

0
任远
任远

哈哈,点了链接才知道谁是东哥。也不能说程序员来钱慢哈,那个熊猫烧香不是写了几个代码,就赚了几百万嘛。

0
音乐巢疯狂
音乐巢疯狂

引用来自“任远”的帖子

哈哈,点了链接才知道谁是东哥。也不能说程序员来钱慢哈,那个熊猫烧香不是写了几个代码,就赚了几百万嘛。

 熊猫烧香跟QQ了

0
城头的土人
城头的土人

引用来自“阿荣”的帖子

貌似不同公司的QA都不一样的,Oracle公司的QA怎么看像是测试一样,我们公司的QA是来审核文档的,呵呵

 就是,我们的QA也就是来看看流程走了没有,文档写了没有,评审开了没有。

0
l
lvqian

路过..挺有意思的文章!

0
z
zdy

QA是管质量的。一是管生产的工序和流程要正当,发现有敷衍工序或有意漏过工序的,要去制止。二是管各种制品的。包括中间的半成品和做种最终产品的质量。质量比较抽象,所以有个FURPS把“质量”具体化一些。F功能 U可用性 R可靠性 P性能 S可支持性。功能是用户要求的,这个产品必须能做的事情。可用性是产品要符合人体工程学,符合人的审美标准。可靠性是产品要有一个强健的体格,不能一用就趴窝了。性能是产品的饱满的工作精神,不能让用户去恨不得抽它三鞭子让它跑快点。可支持性是产品的配套帮助,培训,易升级,易维护,易扩展等。FURPS是比较难调和的,为了得到F,很多公司会不自觉的去牺牲URPS。当你需要URPS时,往往已经到了交付期,一切有点晚了。QA还管“开发过程的开发和改进”。总之,我觉得QA还是很重要的,不过国内能胜任QA的人不多。还有个问题是QA的真正权力很小,项目经理一句工期紧,就把QA的工作和建议否定了。

返回顶部
顶部