记得以前面试过一个女孩,她认为软件测试就是点击网页,囧,作为一名软件测试工程师,我当时真是无地自容啊。相信很多人都把这个职业想象的非常简单,作为软件测试工程师的我,是有必要普及一下软件测试的童鞋都需要在哪些方面提高自己的。
1.分析能力。软件测试的核心其实应该就是设计测试用例了(具体啥样的用例设计,请参见《什么样的测试用例是好的》),而设计测试用例,就是依赖与分析能力了。这里我们不说那些常用的设计方法,从一个稍高的层面上来讲,可以说就是怎么将一个复杂的系统进行抽象,分析拆成几个不同的维度,结合维度可能出现的情况进行有选择的组合,以最小成本获取最大的收益。无法将一个复杂系统拆解成简单的维度,是没法做好用例设计的
2.编程语言。语言其实就像说话一样,只不过我们常说的英语日语之类是与人沟通,计算机语言就是与计算机进行沟通的。对于测试工程师来说,精通一门语言,熟悉其它几门语言是有必要的。对于不同语言编写的被测程序,是有不同特点的,如果对实现的语言不了解,无法进行白盒测试,没法看代码diff(结合代码diff做测试)来提高效率。对于特点不了解,可能也会导致自己漏掉部分内容。
3.设计能力。不要认为设计能力就是开发工程师的事情,拥有好的设计能力,就可以在设计评审的时候多提意见,促进开发工程师使用好的设计,不仅对开发有好处,对测试也是很有好处的。这样才能防患于未然,不仅自己的劳动力,也节省团队的劳动力。
4.对业务的理解。对业务的理解越充分,就越能够理解最终用户的需求,促进产品设计使用好的方式,促进产品成功。难道你想做一大堆不成功的项目么,那样是多么没有成就感的一件事啊。
5.自动化相关的考虑。随着项目越来越多,系统的测试项目也会积累的越来越多,每次有新功能了,难道要用手工来回归一下原有的case么。自动化测试是提高回归测试效率的唯一解决方案(如果你说还有解决方案就是不回归,我…),以高效率促进高质量,才是一个良性循环的发展方式啊。
嗯,以高效率促进高质量,我觉得很有很有道理。
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/30/professional-quality-software-test-engineer.html
---------------------------------------------------------------
代码diff与测试相结合,可以对测试起到较明显的促进作用,通常都是用在模块的功能升级使用。结合代码diff做测试,好处主要有下面几点:
1.提高旧有case回归的效率。从代码diff里面,可以看到旧有功能哪些地方没有任何改动,这样就可以增加信心,节省对旧有功能回归测试的工作量。当然,如果升级导致旧有功能的前置条件产生变化,还是需要注意的
2.明确case的重点。知道变动的内容,就可以根据修改的代码设置case,有针对性的测试。
3.辅助定位发现的问题。
4.直接发现bug或者代码设计上的问题。
5.测试人员的经验积累。经常看别人的代码diff,积累经验,就能加深自己对项目的理解,判断大致什么地方容易出现问题,提高职业素养。
diff少的时候,就可以直接发现问题了,这个非常有用,可以极大的提高效率。如果对被测对象的了解比较深入,通过查看diff即可知道新功能修改的是否到位,也可看出新增加的地方是否处理很山寨,不具备通用性等。另外比如实现细节上,看看申请的内存是否会溢出等也可以在这里处理。
有的时候,代码diff很多,看diff可以只关心重点内容:
1.if语句。新增或者修改的if标志着新旧功能点所走的不同逻辑分支。通过查看修改点的判断参数来设计case覆盖不同的分支。另外也要关注是否条件出现问题,程序走到错误分支的情况。
2.新增的函数。这种情况下,新增的函数通常都是为了满足新功能增加的部分逻辑,这时就设计case重点照顾一下新增的函数。
3.循环。比如修改了循环的条件,里面增加了break等也是属于流程分支改变的情况。
结合代码diff的作用很明显,但貌似总结这个的文章也很少,而实际用到的也是比较细小,零碎的东东,在这里先暂时列出一些,开启话题,逐渐补充吧。
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/26/combination-of-code-to-do-tests-diff.html
---------------------------------------------------------------
今天发现邮件里有一个backlinks的推广是新产品AuthorityBackLinks,于是研究了一下注册了,发现现在推广阶段还挺合适的。
AuthorityBackLinks是Backlinks在3个月前开的另一个文字链接交易的平台网站,新平台按照自己特有的网页评分标准“Pagescore ”来计算链接交易价格,主要考虑因素有:Google Pagerank、域名岁数、外链数目等其他因素,此外对于出售链接的Blog/网站更多了人工审核这一过程来提高链接的质量。
AuthorityBackLinks的信誉不用多说,和Backlinks的支付方式一样,支持Paypal付款,每月的前3天支付上个月的收入,无最小支付要求。此外新平台在链接出售方面添加了一新功能“Add links manually”,也就是手动添加链接,就像我们平台给Blog添加友情链接一样,这样做的好处非常明显 – 链接交易更加安全性!
链接交易价格如下:
Pagescore 1: $1.20/month
Pagescore 2: $3/month
Pagescore 3: $6/month
Pagescore 4: $9/month
Pagescore 5: $18/month
Pagescore 6: $36/month
Pagescore 7: $60/month
Pagescore 8: $90/month
Pagescore 9: $150/month
Pagescore 10: $180/month
而在不久前AuthorityBackLinks的推广Affiliate Program上线,活动期间3倍佣金!详情如下:
如果你推广一个链接购买用户每月至少购买50$的文字链接,你将获得100$;如果你推广一个链接出售用户至少出售了$5的文字链接,你将获得$25,所有被推广用户必须在45天内激活账号。出售$5还是很容易的,我这个blog,放在backlinks的第一个月就是$8每月,而现在AuthorityBackLinks是三倍佣金,所以我就不用多说啦。
但是在2010年11月1日前推广佣金为3倍,也就是说:
如果你推广一个链接购买用户每月至少购买50$的文字链接,你将获得300$;如果你推广一个链接出售用户至少出售了$5的文字链接,你将获得$75,所有被推广用户必须在45天内激活账号。
如果你愿意在自己赚钱的时候顺便也帮助一下我,请点这个链接注册,算是我介绍的吧~~
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/25/3-times-during-the-promotion-commission-authoritybacklinks-to-promote-on-line.html
---------------------------------------------------------------

这个图片里面具体的数据都是瑞银做的,分子是瑞银收集的各国(或地区)房价(100-120平米的住房),分母是各国(或地区)的人均GDP。美国(房价收入比为5),香港(房价收入比略高于20),中国(房价收入略低于20)和印度(房价收入略高于40)。
可见虽然我们的房价很高,但还不是最高,劳动人民水生火热程度排在第五或第六的样子
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/24/figure-say-house-prices.html
---------------------------------------------------------------
作为测试人员,设计测试用例是干活的第二步(第一步当然是了解测试对象嘿嘿),这一步做的好与否,对后续工作起着决定作用,那么如何评价一个测试用例的好坏,或者说,设计的成功与否呢,本文大概讨论一下,抛砖引玉吧,记录在这里,看看是不是可以作为一次团队讨论的话题。
在此之前,我们需要明确测试工程师的工作原则:用最小的成本找出最多的问题。
1.用例覆盖程度
毫无疑问,这一点应该是最重要的,无需多说,覆盖率最大化是一套测试用例的最重要评价标准,如果漏测就杯具了。
2.用例是否已经达到工作量最小化
在满足用例覆盖程度最大化的前提下,应该尽量减小执行用例所需要的工作量。这些方面的方法有不少,如条件覆盖,分支覆盖,正交覆盖等方法。面对不同的测试对象,也有不同的方法来保证:对于网页背后的php逻辑,可以通过在网页上测试后,用一些工具比如xdebug来统计代码覆盖率;对于向外提供接口的server,采用的方式就是分析在外面暴露的接口设计用例,大致的通过接口参数来估计一下分支判断的情况。
3.用例的分类以及描述是否足够清晰
用例的分类,在这里是指相同类型的用例是否放在一起了。例如:接口类的用例,参数的取值范围是1-3,但是现在却传入4;数据类用例,状态机现在位于状态2,却要求状态跳转到无法到达的4;逻辑类用例,正常功能的产出等。将相同类型的用例放在一起,有助于理清思路,清楚了解用例设计是否完备。
用例的描述,是指描述的清晰程度是否能够形成文档。例如上面参数取值范围的例子,用例这样写:“传入错误的值”或者“传入非1-3的值”,明显没有写成“传入值4”有效。这与写程序一样,总是写闭区间的范围而不是开区间。
4.用例是否表明了测试目的
写明用例的测试目的,对文档的易于理解性和工作交接的好处不言而喻,现代软件工程不可能只有一个人在做事情,项目于人员的变动也是难免的。在过程中留下足够的信息,可以在后续工作提高很多效率。
5.测试用例的易于维护性
如果被测对象有所升级,测试用例的说明或者脚本是不是容易维护呢?例如在有状态机的情况下,测试用例之间是相互依赖的(即需要一定的执行顺序),这样被依赖的用例修改后,后端不需要同步根据修改。而如果用例之间没有相互依赖关系(如用例是自己造的数据,不是依赖于前端的产出),可能一旦有变化,就需要修改这两个。当然,这两种情况不能绝对的说哪种好,是需要看实际使用时候的情况进行取舍的。不过,通过一些系统性的工具支持,也会出现一种做法绝对性的好于另外一种的情况,情况很多,做法也有很多,在这里就不多说了。
说了这么多,其实这个第二步,还是严重依赖于第一步的,如果对测试对象的需求,实现等都不了解,设计用例也就无从谈起了。
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/23/what-is-a-good-test-case.html
---------------------------------------------------------------
随着社会的发展,人民的分工也越来越精细,作为一个项目的负责人,应该怎样把项目做好呢,仅仅对手里当前的项目来说,不考虑任何其他的因素,至少要具备这样的素质或者做到下面两点才行,否则项目组的人就会会不胜其烦,项目走向山寨或者流产:
1.对项目的各方面有一个大致的了解,可以不是对细节非常非常清楚,但至少要有总体上的把握。例如:项目的需求,进度计划,当前进度等。这是负责项目所必须要了解的内容,如果连这个都不知道或者不愿了解,何谈负责项目呢。在执行上,估计与猜测是要绝对避免的,用户需求要与客户沟通清楚(估计的后果就是返工与进度拖期客户满意度降低等),进度就要与具体执行人员定期沟通。
2.沟通是项目中的关键,团队中的人是靠沟通与通报连结起来的。通常各子部分的人关心的只是自己的那一部分,通报是合作与协调进度的基础条件,没有沟通与通报,最终项目合并的时候一定会出现问题。
当然,对一个成功的项目来说,负责人的责任心,人员短期与长期的安排,离职替补等因素都是很重要的,在这里,上面两点就是成功的基石。
或许我下面的话,大家都会觉得可笑,但确实是我看到的问题。作为公司老板,你能用一句我不懂技术,就放弃了解它么?即使你不懂,你能隔几天都不问,让别人找你么?直接面对客户,你能估计他想要什么而都不用去问他?你能对工期漠不关心,对返工或者重做一点都不在乎?你能一个问题反复问个几遍,以前说过的话都不记得?你能等着别人推着你做事情?
保持学习心态,沟通清晰之后能够落实。这两点是人生路上真正的11路汽车,没有它们,是无法前行的。
任何事情都不可能一躇而就,即使不懂也可能变成专家,时间而已,自己创造的门,只能靠自己打开。
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/08/10/do-not-do-it.html
---------------------------------------------------------------