测试越老越吃香,这句话说的不错。但是“老”指的可不是年龄,而是我们的经验老到,并且强调一下,测试经验和开发经验是不一样的。我们先拿微软公司的测试工作内容来看看,基本了解一下软件测试是干什么,你就好选择了。 微软的软件测试工作 1. 基本情况 测试在微软公司是一项非常重要的工作,微软公司在此方面的投入是非常巨大的。
微软对测试的重视表现在工程开发队伍的人员构成上,微软的项目经理、软件开发人员和测试人员的比例基本是1:3:3或1:4:4,可以看出开发人员与测试人员的比例是1:1。对于测试的重视还表现在最后产品要发布的时候,此产品的所有相关部门都必须签字,而测试人员则具有绝对的否决权。 测试人员中分成两种职位,Software Development Engineer in Test(测试组的软件开发工程师)实际上还是属于开发人员,他们具备编写代码的能力和开发工具软件的经验,侧重于开发自动化测试工具和测试脚本,实现测试的自动化。
Software Test Engineer(软件测试工程师)具体负责测试软件产品,主要完成一些手工测试以及安装配置测试。 2. 测试计划 测试计划是测试人员管理测试项目,在软件中寻找Bug的一种有效的工具。测试计划主要有两个作用,一是评判团队的测试覆盖率以及效率,让测试工作很有条理的逐步展开。二是有利于与项目经理、开发人员进行沟通。有了测试计划之后,他们就能够知道你是如何开展测试工作的,他们也会从中提出很多有益的意见,确保测试工作顺利进行。
总之,有了测试计划可以更好的完成测试工作,确保用户的满意度。 测试人员在编写测试计划之前,应获得以下文档: 1)程序经理编写的产品功能说明书或产品开发计划; 2)程序经理或开发人员提供的开发进度表。 根据产品的特性及开发进度安排,测试人员制定具体的测试计划。测试计划通常包括以下内容: 1)测试目标和发布条件: a. 给出清晰的测试目标描述; b. 定义产品的发布条件,即在达到何种测试目标的前提下才可以发布产品的某个特 定版本。
2)待测产品范围: a. 软件主要特性/功能说明,即待测软件主要特性的列表; b. 特性/功能测试一览,应涵盖所有特性、对话框、菜单和错误信息等待测内容,并列举每个测试范围内要重点考虑的关键功能。 3)测试方法描述: a. 定义测试软件产品时使用的测试方法; b. 描述每一种特定的测试方法可以覆盖哪些测试范围。 4)测试进度表: a. 定义测试里程碑; b. 定义当前里程碑的详细测试进度。
5)测试资源和相关的程序经理/开发工程师: a. 定义参与测试的人员; b. 描述每位测试人员的职责范围; c. 给出与测试有关的程序经理/开发工程师的相关信息。 6)配置范围和测试工具: a. 给出测试时使用的所有计算机平台列表; b. 描述测试覆盖了哪些硬件设备; c. 测试时使用的主要测试工具。 此外,还应列出测试中可能会面临的风险及测试的依赖性,即测试是否依赖于某个产品或某个团队。
比如此项测试依赖性WindowsCE这个操作系统,而这个系统要明年2月份才能做好,那么此项测试就可能只有在明年5月份才能完成,这样就存在着依赖关系。如果那个团队的开发计划往后推,则此项测试也会被推迟。 3. 测试用例开发 一个好的测试用例就是有一个合理的概率来找到Bug,不要冗余,要有针对性,一个测试只针对一件事情。特别是功能测试的时候,如果一个测试是测了两项功能,那么如果测试结果失败的话,就不知道到底是哪项功能出了问题。
测试用例开发中主要使用的技术有等价类划分,边界值的分析,Error Guessing Testing。 等价类划分是根据输入输出条件,以及自身的一些特性分成两个或更多个子集,来减少所需要测试的用例个数,并且能用很少的测试用例来覆盖很多的情况,减少测试用例的冗余度。在等价类划分中,最基本的划分是一个为合法的类,一个为不合法的类。 边界值的分析是利用了一个规律,即程序最容易发生错误的地方就是在边界值的附近,它取决于变量的类型,以及变量的取值范围。
一般对于有n个变量时,会有 6n+1个测试用例,取值分别是min-1, min, min+1, normal, max-1, max,max+1的组合。边界值的分析的缺点,是对逻辑变量和布尔型变量不起作用,还有可能会忽略掉某些输入的组合。 Error Guessing Testing完全靠的是经验,所设计的测试用例就是常说的猜测。感觉到软件在某个地方可能出错,就去设计相应的测试用例,这主要是靠实际工作中所积累的经验和知识。
其优点是速度快,只要想得到,就能很快设计出测试用例。缺点就是没有系统性,无法知道覆盖率会有多少,很可能会遗漏一些测试领域。 实际上在微软是采用一些专门的软件或工具负责测试用例的管理,有一些测试信息可以被记录下来,比如测试用例的简单描述,在哪些平台执行,是手工测试还是自动测试,运行的频率是每天运行一次,还是每周运行一次。
此外还有清晰的测试通过或失败的标准,以及详细记录测试的每个步骤。 4. Bug跟踪过程 在软件开发项目中,测试人员的一项最重要使命就是对所有已知Bug进行有效的跟踪和管理,保证产品中出现的所有问题都可以得到有效的解决。一...