|
我在软件测试行业已经滚打一年半了,所在公司的软件测试部门也有一定的规模,自己也对测试这门手艺有了小小的认识,在此和软件测试同行们交流一下,希望大家指正,谢谢。
一. 测试目的:
我们来到公司做软件测试人员是为了什么,那就是挣钱,当然也是为了实现个人价值。那么公司老总为什么很乐意将金钱投到我们测试人员身上呢?那他希望我们测试人员能给他带来什么好处?
我们都知道,现在的软件规模是越来越大了,同时软件的功能更加丰富,软件的复杂度也不断增加,软件的可靠性却面临着严重的危机。我们在大学里都做过课程设计,多多少少有点编程的经验,我想很少有人能够保证他编写的程序可以第一次运行就能成功。软件中存在bug是必然的,但是如果使用存在严重bug的软件,那后果可能是灾难性的,至少会影响到这种产品在市场的推广。当一款已经投放到市场上的手机存在一个严重的bug,如手机的按键经常接触不良,这款手机用户们很可能将这个消息发布到了网站上,结果其他很多打算买这款手机人都知道了这个问题,他们还会愿意发钱买这款手机吗,这款手机的生产商还会从这款手机上挣到钱吗。很显然,手机的生产商很希望这款手机在投放到市场之前,我们测试人员能够发现这个问题并及时反馈给研发人员进行修复。老总们希望我们测试人员能够通过自己的努力来保证公司产品的质量,从而在市场上买个好价钱。
我们对一款软件进行测试时,应该怀着怎样的一个测试目的呢?是验证软件的各部分功能是否能够正常运行吗?不,我们测试的目的是要发现软件中各部分功能存在哪些问题。寻找到软件中的bug是我们劳动成果中很重要的一部分,你的劳动成果越多,你的价值就越高,你就会得到老总们的重视,你的提升机会也就越大。我们测试软件的过程就是在寻找我们宝库的过程,怀着这样的心情去测试,我们的就会有无穷的动力,我们的工作热情就会很高涨,我们的劳动成果自然就会很多。
二. 我们需要做什么
我们为了收获更多的劳动成果(即发现更多的软件bug),我们需要做哪些工作呢?
1. 熟悉我们要测试的产品
当你到手机市场去买手机之前,你一般会做些什么?你一定会去了解这款手机有哪些功能,手机的外壳是什么材料做的,是什么样式的(直板的,还是翻盖的),手机的理论待机时间是多少等等。熟悉我们要测试的产品,我们测试的方向就会更清晰,我们就会更容易找到我们期待已久的bug,并且我们可以判断某一现象是否为bug,如我们买手机后,结果发现这手机不能照相片,是个严重的bug,要求退货,营业员解释说:这手机本来就不支持照相,你早干嘛去了。还有我们买完手机回家后才发现这手机还有收音机功能,但不能使用,要求退货,一般有良心的厂商会同意退货,但你坐车跑到代理商那要花费车费、时间、精力,岂不很亏吗,可能还不止跑一两趟就能解决的。在你那这手机之前知道这手机还有收音机功能,并进行有效地测试,岂不给你省了很多麻烦。
我们可以通过哪些途径了解我们将要测试的产品呢,研发人员、测试部的老员工、产品设计书就是很好的选择。
2. 编写测试用例
测试用例(即测试计划)在软件测试中的作用主要体现在四个方面:
1)它可以指导测试的实施,令软件测试的实施重点突出、目的明确,可以避免盲目测试并提高测试效率;
2)在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度、缩短项目周期;
3)有利于测试的跟踪;
4)评估测试结果的度量结果以及分析缺陷的标准;
3. 完成测试报告
测试报告是大多数软件测试人员的主要工作产品。有些人认为测试报告只是一种形式化的文档,可以尽量简化,实际上,准确而客观的测试报告是保护你事后免受指责的有效武器。如果产品投入市场后,出现了比较严重的缺陷,在这种情况下,如果在你的测试报告中已经警告过了这种缺陷的存在,尽管你仍然有可能受到批评,至少准确的测试报告可以表明你是无辜的。高层管理人员、开发人员和客户构成了测试报告的观众群。如果测试报告看起来解释不清,研究不充分或提出过于追究小问题的建议,会给开发人员带来额外的工作量,开发人员就会躲避测试人员及其工作。同时,这样差的测试报告会使管理人员对测试人员产生消极影响,直接影响到测试人员的奖励和提升的机会。
下面是我总结的写好测试报告的经验与技巧:
1)及时报告缺陷。不要等到忘记了一些关键细节才报告,拖延时间越长,缺陷被解决的可能性就越小。同时,如果项目经理知道测试员在测试产品的某一部分,而且没有看到测试报告,他们会错误的认为测试员没有发现缺陷,这部分程序的功能一定很稳定。
2)针对看起来很小的代码错误执行后续测试。如果看到的是小缺陷,不要只是重现该缺陷并写入测试报告,继续测试这一部分,并有可能发现更大的缺陷。
3)每个缺陷都需要单独的报告。有时为了提高效率,可能会在一份报告中包含多个小缺陷,有些缺陷可能得不到修复。
4)不要夸大缺陷。如果测试员所报告的缺陷比实际要严重,那么测试员的可信度就会下降。
5)只要清晰的报告缺陷。不要试图解释或解决缺陷,这是开发人员的工作,作为测试人员只需清晰的报告缺陷,描述如何重现缺陷即可;重要的是要描述该缺陷产生的环境或条件。
6)注意自己的口气。测试报告要对事不对人,不要带有责备或居高临下的语气。
7)跟踪缺陷,直到缺陷的确被修复。也许由于时间的压力或开发人员的情绪,开发人员会采取最快的技术路径修复报告中的缺陷。这种修复可能并不能完全修复缺陷,甚至引进新的缺陷。
三. 高级测试人员应该具备的知识:
1) 产品知识:对于你所测试的产品,你一定要非常熟悉。小到你所测试的模块,大到整个产品的架构,内部实现,代码,等等。
2) 测试知识:黑盒测试,白盒测试,手工测试,自动化测试,性能测试,安全测试等等。
3) 开发知识:编程,数据结构,算法,调试等等。
4) 专业知识:以上2,3是基本的知识,你还应该精通一些你从事的更专的技术知识。比如,如果你的产品是基于.net的,你应该精通.net, 或者类似的J2ee等。(例如这方面我应该掌握的Win32系统编程,Windows内核,WDM等等)
5) 领域知识:你应该精通你所工作的领域的知识,比如手机领域,数据库领域等等。
6) 行业知识:你要对计算机行业的整体状态,新技术,动态,发展趋势有一个明确认识。(比如我除了自己从事的领域还关注Web2.0,云计算等等) |
|