应届毕业测试新员工培养最佳实践
应届毕业测试新员工培养最佳实践
1 前言
在2015年,部门迎来了三个测试新员工。对于测试新员工的培养提出了一个很大的挑战,如何对新员工进行培养是一个很大问题?经过实践,发现以新员工的毕业设计为训练项目,开展完整的进行软件测试训练,取得了良好的效果。本文详细记录测试新员工培养过程中的方法以及各个环节的重点内容,以及取得的效果。
新员工的培养,包括以下几个方面:
- 基本的产品知识学习,了解公司的产品原理以及测试操作。
- 软件测试理论的学习。掌握软件测试理论,以及实际软件测试的方法。
- 基本的工作技能以及工作软件的使用。
对于技能1和3的培养,公司的培养做的比较到位,但是对于软件测试这个方面的培养,因每个测试组的产品不一样,重点也不同。导致软件测试人员培养无法进行统一。 新员工全部为应届毕业生,进行了以下几个方面的探索,取得了良好的效果。该方法非常适用于应届毕业生。
2 培养理念、流程和目标
2.1 培养理念内容
核心理念为: 以每个人的毕业设计作为软件设计文档,毕业设计的程序为测试对象。开展软件测试实战训练。
2.2 培养流程
培养的主要流程如下:
- 基本的软件测试理论
- 软件测试真实模拟测试
- 编写测试方案和测试用例
- 测试方案、测试用例以及评审和修改
- 执行测试用例并记录Bug
- 交换毕业设计,编写测试方案和测试用例、并执行
- 编写测试报告,训练编写测试报告的基本技能和测试评估
- 编写测试总结,及时总结掌握的测试技能以及理解
软件测试是一个实践性非常强的工作。软件测试的理论不多,只包含了软件测试用例设计方法,软件测试分类的内容,根本无法系统的培养一个测试人员。 对于我们的测试新员工,学习的基本都是计算机以及相关专业的,对于基本的编程理论测试都有一定的了解,平时在日常生活中使用软件也是非常的频繁。但是如何系统的测试一个软件,能力是欠缺的的。
主要的原因为,对于软件测试,真正的核心技能不在测试用例设计方法,而在于如何系统的分析被测对象,提取出关键的测试点,然后结合测试理论进行分析。但是分析测试对象这个工作比较困难,原因在于新员工对于公司产品不熟悉,而如果没有准备的话,挑选一个大家普遍熟悉而又规模不大的软件系统也是比较困难的。
2.3 可行性分析
现在的应届毕业生,都会完成一个规模不大的毕业设计,包括毕业论文以及相应的程序。对于从事软件测试的新员工来说,毕业设计就是一个非常好的测试培训对象。
- 毕业论文可以作为软件设计文档,包括了可行性分析,使用场景,功能介绍等。
- 程序作为测试对象,有基本的软件功能
- 毕业设计的规模大小适合作为训练软件
- 每个人对于自己的毕业设计非常熟悉,不存在不了解测试对象的问题
综上所述,应届生的毕业设计,非常适合作为软件测试训练的材料。一般在完成毕业设计时,只是对于毕业设计进行了简单的测试和验证,没有系统的进行测试,正好借助测试培养的机会,系统的完整的进行测试,从而达到培养的目的。
2.4 培养目标
通过培训,使新员工完成从软件的需求设计-软件开发-软件测试的完整过程体验,形成一个完整的闭环,加深对于软件研发流程的理解。
软件测试方面,掌握基本的软件测试技能,软件用例设计方法,测试方案编写,测试报告编写等;对于软件测试工作有较为深入的理解。
3 软件测试基础知识培训
3.1 软件测试基本知识讲解
新员工入职后,许多不具备相应的软件测试知识,需要进行一个软件测试基本理论培训,培训内容包括基本的:
- 软件测试概念
- 软件测试理论
- 软件测试分类
- 与软件开发的关系
- 软件测试的流程
培训的目的是使新员工建立起软件测试的基本概念。目标要求不高,只要基本掌握测试的概念,基本术语,基本的测试用例设计方法等即可。
3.2 软件测试文档编写培训
讲解了基本的软件测试基本知识后,开始组织每个人阅读自己的毕业论文,开始编写测试方案,这里会讲解下测试方案包括哪些方面,提供一个测试方案模板,以及一个完整的测试方案供参考。
对于测试方案,讲解的内容包括:测试方案是描述测试内容提取、分析以及对应测试方法的文档。
要阐述清楚从被测对象的文档中提取了哪些测试内容,把测试内容分析清楚,需要测试哪些点,这些测试点的重要性如何,这些测试点需要测试哪些方面,该使用哪些方法进行测试。测试方案是一个承上启下的文档,上接软件需求文档,下为测试用例编写提供大纲。不提取测试内容,如何设计测试用例。
测试用例编写:讲述测试用例包括哪些核心要素。展示测试用例模板,测试用例分类等信息,熟悉基本的测试用例。
4 编写测试方案和用例
针对被测试软件系统,编写测试方案和测试用例,这个软件测试流程中非常重要的环节,测试设计的质量好坏,决定了后续测试的质量。
4.1 提取软件功能点
新员工的毕业设计是自己一手完成的,毕业设计实现了哪些功能,非常的清楚。编写测试方案第一步,就是把这些功能点提取出来,列表,然后进行功能分类。 提供软件功能点,这里要注意的是,不是简单的把设计文档中的功能列表复制过来。而是要针对每个功能进行分析,存在哪些测试点。在培训中,一般是结合实际的特性,进行讲解和分析。
4.2 分析软件测试点
针对提取的软件功能列表,以及功能点进行测试分析,这里的测试分析指对于列出的测试点进行分析,该如何进行测试,选取测试方法,设置测试点,编写测试用例使用哪种用例设计方法。
对于每个软件功能在整个系统中的地位进行分析,关联模块和功能进行阐述,阐述清楚后,结合阐述的内容,把要进行的软件测试的内容、测试观察点也就出来了。经过这样的分析,软件测试点就分析出来了。 然后把软件测试点进行整理归类。为后续的测试方法做准备。
4.3 针对测试点编写测试方法
对于分析出的测试点,针对每个测试的功能特点,选取合适的测试方法。测试方法的包括白盒和黑盒等,手工、自动化等。
针对这些功能点,结合现在的测试技术储备,对于每个功能对应的测试点选取适合的测试方法。 同时对于这些功能点,要分析出测试用例的设计方法,使用边界值,还是等价类等。
4.4 分析异常测试情况
异常情况是软件测试的非常重要的一个指标,决定了软件的可靠性以及用户的体验。要分析异常测试,就要把软件每个功能点的依赖分析清楚,功能的处理流程分析清楚,分析这些依赖条件以及流程中的环节可能会出现哪些异常,软件该做哪些保护。
针对分析的异常情况,要对每个异常情况设计测试用例。 异常情况的分析有下面几种方法:
- 功能依赖的条件出现异常
- 功能流程中出现异常
- 功能本身保护不够异常
- 功能直接配合出现异常
- 输入异常数据
- 环境异常
- 软件环境异常:例如java程序JRE版本不兼容
- 硬件环境异常
- 兼容性异常
把这些造成的异常全部分析清楚,同时结合软件的设计要求,预期软件的行为,形成测试用例。
4.5 分析软件使用场景
每个软件在发布后使用时,都有一个使用场景,这个场景在软件发布后不受软件设计人员的限制。
例如,软件在开发和调试时,开发和调试环境都是Win7环境,但是实际发布后,有可能面对WinXp,Win8,Win10等这些环境,对于这些环境,在划分时,属于软件使用场景。
对于每个被测试软件测试场景分析,要完全站在客户的角度来考虑。思考客户会如何使用软件,实际的客户的环境。
软件测试使用场景分析,是非常考验测试人员功力的地方,也是经验丰富测试人员体现水平的地方。
4.6 汇总形成软件测试方案
经过上述几个环节的分析,软件测试方案就水到渠成了。
软件需求列表,测试点,软件功能列表关系、地位,异常情况,使用场景以及每个情况的测试方法以及测试用例设计方法都阐述清楚了,把这些内容汇总就是一篇完整的测试方案。
4.7 编写软件测试用例
在完成测试方案后,按照测试方案提取的测试点以及测试方法,进行编写测试用例。按照功能分类的方法,把测试用例也进行归类。
测试用例的编写要求:
- 每个一个测试点形成一个测试用例
- 每一种异常情况列为一个测试用例
- 每个测试场景下,要考虑有关联的特性要全部覆盖
- 测试用例的要素要全面:标题、预置条件、操作步骤、预期结果等
- 自动化测试用例和手工用例分别归类
- 性能测试用例单独归类
5 测试方案和用例评审
5.1 文档辅导评审
完成初稿后,进行方案和测试用例的评审。
评审测试方案:要注意以下几个点。
- 要强调先把测试内容提取完整。不能有遗漏的测试内容
- 针对每个测试内容,查看用例设计方法选取是否合理,测试点是否有遗漏
- 测试场景是否设计,异常情况等
- 测试方法是否可行
- 测试重点是否突出,重点分析是否准确
- 测试难点的分析,选取的方法是否准确
评审测试用例:
- 查看测试用例设计是否完整, 由测试方案生成的用例,是否有遗漏测试内容
- 测试用例是否与测试方案内容对应
- 测试用例的方法是否与文档中的一致
- 测试用例的观察点有没有遗漏
在评审时,把文档中写的不好的地方,使用批注或者修订模式标记出来,然后面对面的讲解。阐述清楚这个地方为何要修改,要考虑哪些因素,遗漏了哪些因素,详细的讲解。
特别要阐述测试场景的设计,讲述明白,毕业设计的程序,要面对哪些使用场景,会遇到哪些情况。这个程序可以运行的前提条件是哪些?都要一一的列出来。要考虑这些前提不满足情况下,程序该如何应对。
5.2 根据评审意见修改文档
评审后,对文档进行修改,然后进行第二轮评审。
最重要的是这一轮,测试方案的编写和测试用例的设计,要非常有耐心的进行辅导,目的是在编写测试方案的过程中,使新员工掌握测试对象分析要考虑哪些因素,哪些场景。这些软件功能运行的背后都有支撑。这些支撑都是软件运行必须考虑的因素。
例如:一个毕业设计依赖百度的API接口。 当时方案设计时,没有考虑网络是否通畅。或者说直接把程序依赖互联网接入这个必要条件忽略了。这样在实际的测试时,肯定会遗漏重要的测试内容。
通过评审,把测试方案中的遗漏的、在测试中要考虑、但是没有考虑的测试点和测试场景补充完成,强化了软件测试的全局思维、思考方式,加强了分析被测软件的依赖条件分析以及使用场景分析的能力。
6 执行测试用例并记录BUG
完成了测试方案和测试用例,这个属于软件测试的准备工作,软件测试的最重要的一个流程就是测试执行,无论多么全面的测试方案和测试用例,必须有扎实的测试执行。软件测试执行是软件测试能力的另一个重要技能。
6.1 按照测试用例执行
在执行测试用例时,讲解基本的软件测试执行的关键点,注意观察系统反应,查看系统日志等容易忽视的地方。
在软件测试执行时,第一轮严格按照测试用例执行,实时记录发现的Bug。
执行完成第一轮后,反思是不是觉得存在没有覆盖到的功能或者地方,针对这些在进行补充测试,同时把这些添加到测试用例中。
记录下这些点,同时修改到测试方案中。引导和讨论为什么这些地方会遗漏,增强思考的完整度。
6.2 记录发现的BUG信息
软件缺陷的填写,是软件测试人员必备的一个基本技能。
完整的记录Bug信息,是为了更好的解决Bug和回归测试。
通过Bug填写,让新员工学习和掌握如何记录测试过程中的Bug,同时修改自己的毕业设计修复Bug,进行回归测试,验证Bug是否解决。
7 编写测试报告
完成测试后,编写完整的测试报告。
提供一个测试报告的参考,要求新员工按照测试报告模板来编写自己的测试报告。
对于测试报告的要求是记录软件测试的过程以及结果。真实的反映测试过程和结果的一个文档。
测试报告的编写,形成一个记录测试过程的文档,给项目中的其他人员快速了解软件测试概况的文档,也是项目经理评估当前项目质量的一个重要参考,属于软件测试中重要文档。编写测试报告的能力要重点培养。
对于测试报告编写的培养,也是编写完成,评审,修改的一个过程。不断的完善文档中的缺陷,掌握测试报告的基本要素以及重点内容的编写方法。
8 编写测试总结
经过上述步骤,相当于训练了软件测试的完整的一个流程。 从需求分析,软件特性设计,开发编码,测试设计,测试执行,报告缺陷,修复缺陷这样一个完整的流程,基本建立起软件工程的概念,对于软件的开发流程有了一个基本的认识。
项目完成后,编写测试总结文档,总结和回顾模拟项目的收获以及知识掌握情况,同时表达对于软件测试的各个流程的认识以及重点工作的思考。
通过编写总结,提升文档编写能力,项目完成后的知识总结能力。
9 交换毕业设计加强训练
完成了第一轮的项目模拟,基本了解的测试测试的流程,各个环节的主要工作。下一步要加强这个知识的掌握。我这里采取的方法是:新员工交换毕业设计作品,然后编写测试方案和测试用例、执行测试用例,报告Bug,编写测试报告。
通过交换毕业设计进行测试方案、测试用例、测试执行、记录缺陷、编写测试报告的训练,练习了软件测试的全流程工作,加深了对于软件测试的工作的理解。
通过对比发现,经过第一轮的训练,在第二轮的交换毕业设计的训练中,测试方案以及测试用例的质量有了较大提升,测试报告内容质量也有较大的提升。
特别注意的是,测试执行的能力提升最大,发现问题较原作者多。这个也符合软件行业的一般情况:不要测试自己的程序。
10 新员工培养过程总结
10.1 培养收获
经过这样的培养,迅速成长为可以基本承担软件特性测试的员工。在测试设计的全面性、异常测试方面有较大的进步。
对于测试新员工的培养,原来是直接拿产品的一个特性进行测试训练和培养的,发现提升较慢,主要原因是新员工对于整个产品系统的认识有一个过程,对于一个特性进行训练时,无法考虑与其他特性的交互以及相互影响,导致思考不全面。
对于使用毕业设计进行测试训练,不存在上述的问题,毕业设计都是深思熟虑的一个作品,并且是亲手实现的,软件内部的细节也比较清楚。毕业设计的规模大小也适合做训练的项目。
在训练中,测试经验丰富的测试人员也要参与,积极的提交评审意见。对于其他测试人员的能力也有一定的提升。
10.2 培养中的一些问题
文档能力欠缺:在实际的训练中也发现了一些问题,发现文档编写能力有较大的欠缺。从文档的格式,信息陈述,逻辑信息表达等等,都有较大的提升空间。在训练中,对于文档编写方面,给与很多指导,取得了一定的效果,但是还要继续加强。
培训准备不足:在训练中,发现对于时间节点的设置存在不合理的地方,导致有的时候为了交付导致交付质量下降。还有第一次尝试这样的培养模式,中间的一些沟通和解释不到位,新员工对于测试的一些概念和术语理解不透彻,出现了文档内容偏离主题的现象。在后续的培养中注意这个方面的问题。
11 后记
现在几个新员工已经转正了,对于新员工的培养,经过了这次培养的实验,发现使用好的方法,会达到事半功倍的效果。在培养过程中,特别给新员工树立了文档意识,强调软件测试的理念。这个方法只是测试新员工培养的一种,尤其是只适用于应届生的培养。