2010年(1)
分类: IT职场
2010-06-15 09:20:14
本人在做软件测试之前,做软件,只不过是一些简单的 application. 个人认为自己在开发方面并没有什么天赋,也不喜欢,甚至曾经怀疑过是不是要放弃IT,转入其他行业。但换了一份工作,并有幸到知名IT公司从事软件测试工作。从此,确定了软件测试正是我一直寻找并立志于一直从事下去的行业。
我做软件测试的工作并不长,两年零四个月,但深深喜欢这个行业。很奇怪,同是关于软件,讨厌开发,却喜欢测试。
1、软件开发和测试的区别
这是一个可以引起很多争论的话题。开发有时比较讨厌测试团队,因为测试,就是挑毛病。尤其是产品出现问题时,开发和测试更是相互推卸责任。很多软件开发人员,看不起测试的工作,认为没有什么含量。其实,这是很大的误区。
软件开发和软件测试确实有很大的不同。首先,技术要求不同。从开发语言来讲,开发也分很多方面。用开发的很少转向.net, 做嵌入式的不会去做网站。开发对于技术的要求是“精”,开发整天研究的是如何实现软件的功能,要用哪些类,这些类的哪些方法,结构的研究,变量的确定和之间的调用。如果做上曾,大部分开发都想的是如何使用API, 库函数等等,当然这些大部分都是别人写好的,自己去使用。我想很受有人能去Sun或Misrosoft做库函数的开发吧。虽然使用的是现成的东西,但想做一个东西出来,哪怕只有很简单的功能,也是不容易的。要考虑的东西很多,譬如说效率,如何定义函数,接口等等。所以开发看测试时,大多自命不凡。呵呵,没办法,个人也认为,从技术角度讲,开发确实比测试难。做一个东西,总比测一个东西难吧。
下面说说测试的技术要求。软件测试,80%都是重复性劳动。测试的主要工作包括,set up 测试环境,design test case, 执行test case, 开bug, 验证bug. 测试的难点在于:
1. 如何根据产品的功能,design test case, 测点在什么地方
2. 如何在有限的时间里,合理的安排人员,资源,尽可能多的测试产品,尽可能多的发现产品的缺陷
3. 如何合理的将重复性劳动变为自动执行(automation)
第一点,要求测试人员非常熟悉产品的功能,并且根据自己的知识贮备,分析出那些需要测,哪些不需要。比如,一个log in 的功能,1)界面需要测, 2)field 的max length 需要测, 3) 用户名或者密码错误,软件怎样处理, 4)重复错误登陆,软件怎样处理 5)正确登陆后,退出,在登入,软件怎样处理, 6)需要跨平台吗?
只是举了一个简单的例子,可以看出,开发和测试的出发点就是不同的,开发是如何实现软件, 而测试时如何发现软件的缺陷。
第二点,要求测试人员要考虑资源和时间的合理分配,(大部分是test manager要考虑的问题)那部分要分配的资源多些,那部分少些。比如说这个release 有一个新的功能,那么这个功能应该在所有的平台,version都要测,全面的测试。而一些原有的功能,有些可以交叉测,有些可以在推测会有用户使用的方面,多测一些(regression test)
第三点,就是如何automation. 这对于软件测试而言,是非常的话题。应不应该automation, 如何automation, 我想在以后的帖子中再议。
软件测试对于技术的要求的广但不精,对于软件的理解,数据库,,, 脚本,都是必会的。总体说来,有开发经验的对于从事测试工作,帮助很大。可以帮助理解软件,会考虑软件是如何实现的,非常有助于design test case.