这两天各种看职位要求,各种总结研究最后找到自己的发展目标了。至少是一个可以作为短期的发展目标—>做白盒测试。基调找到了之后就要确定学习计划。现在什么都要讲究敏捷Agile,我也来一个敏捷学习计划吧。以半个月为期限,随时研究随时调整。
学习目的:想要做白盒测试-->写测试代码-->需要知道自动化测试框架
百度百科看得云里雾里的,突然发现还是要追根究底的,这样就带来以下的问题:
为什么要进行自动化测试?
之前很长时间做的都是手工测试,虽然也有将手工测试用例转化为自动化测试用例过,但是个人的认识是自动化测试是用在为产品后期维护进行测试的目的上。我接触到的自动化测试分两个方面:一个是性能测试(LR),一个是自动化测试(XACC)。我个人的理解想要做这两样测试的话必须软件的界面都很成熟了,变动不大了。比如在产品后期交付界面比较稳定不会做大的调整的过程中,为了进一步的提高软件性能可以进行性能测试,为了保证每一个版本的基础功能不受其他代码变动的影响也可以在后期版本中运行自动化测试。既然要打翻从新学习就要了解一下网上现在都是什么情况?总结起来跟我之前的理解不冲突。
软件自动化测试是测试工作的一部分,是对手工测试的一种补充。自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复性和高效率等特点。
手工测试局限性:
1、手工测试不能覆盖所有代码路径。
2、基本的功能性测试用例在每一轮测试中都不能少。由于工作量往往较大,属于重复性的、非智力性的和非创造性,并要求准确细致,使用机器比人类更有优势。
3、许多死锁、资源冲突、多线程等有关的不正确 ,通过手工测试很难捕捉到。
4、系统压力、性能测试,须要模拟大数据或大并发用户等各种测试场景,很难通过手工测试执行。
5、系统可靠性测试,须要模拟系统长时间运行,以验证系统能否稳定运行,难以通过手工测试执行。
6、如果有大量(几千)的测试用例,须要在短时间内(1天)完成,手工测试几乎不可能做到。
自动化测试主要优点:
1、避免重复工作:对于功能已经完整和成熟的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。
2、提高测试效率:DCC版本的发布周期往往比较短,也就是开发周期只有短短的几个月,而在测试期间是每天/每2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,人工测试是非常的耗时和繁琐,这样必然会使测试效率低下。
3、保证每次测试地一致性和可重复性:由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,人是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。
4、更好的利用资源--周未/晚上。理想的自动化测试能够按计划完全自动的运行,在开发人员和测试人员不可能实行三班倒的情况下, 自动化测试可以胜任这个任务, 完全可以在周末和晚上执行测试。这样充分的利用了公司的资源,也避免了开发和测试之间的等待。
5、解决测试与开发之间的矛盾:通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测试出错误的时间。事实上在叠代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。
6、节省人力资源:将烦琐的任务转化为自动化测试。大量重复的测试是非常繁琐的,并且需要消耗大量的人力才能够完成。自动测试能够很好的解决这个问题,不需要繁琐的劳动,不需要大量的人员。
7、增加软件信任度:只有经过大量测试案例测试过的版本才是可靠的,而只有使用自动测试才能够保证在段时间内完成大量的测试案例。
8、缩短软件开发测试周期,可以让产品更快投放市场。
9、提高软件测试的准确度和精确度,添加软件信任度。
10、软件测试工具使测试工作相比较容易,但能产生更高质量的测试结果。
11、手工不能做的事情,自动化测试能做,如压力、性能测试。
自动化测试局限性:
1、不能取代手工测试
2、手工测试比自动测试发觉的缺陷更多
3、对测试质量的依赖性极大
4、测试自动化不能提高有效性
5、测试自动化可能会制约软件开发。
6、工具本身并无想象力,不能主动发觉缺陷
7、手工测试比测试工具更优越的另一个方面是可以处理意外事件。虽然工具也可以处理部分异常事件,但是对真实的突发事件和不能由软件处理的疑问就无能为力。
自动化测试需要知道:
1、一种测试工具不完全适用于所有测试
2、自动测试不一定减轻工作量
3、测试进度可能不一定缩短
4、测试工具不一定易于运用
5、自动化测试的普遍使用 存在局限
6、测试覆盖率不会达到百分之百
后面的文章会解决下面的问题:
1、什么是自动化测试框架?
2、测试框架的作用?
3、一般测试框架的分类?
4、我究竟要怎么学?