软件测试求生法则读书笔记
“软件测试”枯燥乏味
软件测试的重要性是毋庸置疑的,在测试环节任何一个小小的错误被放过,对客户体验、公司的信誉都是极大的打击。但另一方面,软件测试是非常枯燥的,它需要大量的时间,整个过程非常乏味,重复做一件事情往往会让人分心,分散注意力。管理者通常认为,一个好的测试人员就能保证某个软件能够完整的被测试。这种想法是错误的,好的软件测试员不是解决一切问题的“万能药”。人总是会犯错误的,尤其是在大型软件进行测试的时候,很少有人能够保持长时间的耐心,保证软件没有任何纰漏。
那么我们势必要找到一种解决方法,就是用合适的工具,恰当的流程,训练有素的测试人员,将这三种要素结合起来完成测试工作。如果公司能够将有限的资金用来购买测试的工具,而不是用来给予测试人员加班费用,那么整个测试工作就会变得比以往高效。毕竟古话说得好,“工欲善其事必先利其器”,好的工具不但能够减轻测试人员的压力,并且能够加快整个软件开发的流程。
所以获得一个有用的测试工具是非常有必要的。但是获得工具往往不够,我们仍需要将使用工具的测试人员与工具很好的并且有机的结合起来才能够完成测试工作。缺乏合适的测试工具往往会给测试流程带来种种弊端,如何选择测试工具和如何高效的使用往往成为软件测试流程的首要问题。
“软件测试”缺乏工具
缺乏测试的工具可能会对这个软件测试的过程产生巨大影响。由于在一个相似的测试环境中,测试人员的测试用例往往十分相近。所以高度重复性的测试用例屡见不鲜,这个阶段的测试往往和开发人员不同,开发者往往没时间去找到所有的缺陷。尽管测试用例很多都是重复性的,但是可供选择的测试用例成千上万,任何一个项目都不能够有足够的时间遍历所有的测试用例。所以测试人员只能选取其中一小部分特例进行测试。当发现问题存在并且解决了该问题,测试又必须重新开始,许多重复的用例,将在此时的阶段重新开始。
手工测试往往是不准确的是不可靠的。手工测试的随意性比较大,最好的情况,使用的测试脚本运行测试用例进行测试,最坏的情况是可能不能进行重复的随机测试。即使是在最好的情况Ian,测试人员本身所具备的技术水准和知识范围,能力等因素也能很大程度上影响测试正确进行的关键因素。除此之外,准确使用测试脚本,全面测试系统的各个方面,以及完整的记录测试脚本。我们有必要怀疑手工测试的准确性。没有什么办法来验证手工测试的准确性,不能够知道测试人员是否完整的且严格的执行了每一个步骤。真正的回归测试还要要求完整的重复以前的测试步骤,那么如果测试结果与以前的测试结果出现一丝丝的误差,那么整个软件的质量就必须遭到质疑。手工测试并不能完全满足不同类型的要求。
手工测试是冗长乏味的。测试过程的冗长的无聊是测试人员未能及时发现问题的原因。使用自动测试工具不仅可以大大提高测试的速度,还能够准确的对比出与先前测试中存在的种种微小的差异。而往往微小的差异能反映出软件存在的问题。手工测试是劳动密集型的,项目的日程会制定的相当紧凑,以至于最少数量的测试用例都难以完成,更不必说那些需要大量测试用例的回归测试了。自动测试工具往往只需要一分钟的时间就能够完成手工测试一小时就能完成的测试用例。以此类推,成千上万的测试用例都可以用自动测试工具自动的完成,这样效率就可以提升不止60倍,时间人力就可以大量节约。大型软件的迭代更替,往往周期非常短,此时使用自动测试工具就非常合算。
“软件测试”工具
捕捉/回放工具
捕捉/回放工具通过捕捉测试过程并讲义其文件的形式记录下来。是以后自动重复测试过程成为了可能。这类工具还可以将以前的测试结果与以前的相应测试结果进行比较并且发现差别,适用于回归测试。它可以快速并且准确的进行测试和比较结果;可以准确的记录测试的步骤。不需要测试人员的介入,完全自动化。能够完整的记录测试的结果。非常实用于回归测试和性能测试。
自动测试执行工具
与捕捉/回放工具不同,自动测试执行工具的测试脚本不是通过捕捉自动生成的,而是由测试人员手工编写的。这类工具提供比较功能。它可以快速而准确的进行测试和比较结果;不需要测试人员的介入,完全自动化;可以完整记录测试结果;它非常适合回归测试和性能测试。
测试覆盖率分析工具
它用于分析在测试中模块/系统运行部分的比例。它可以同时支持多种测试指标,如测试用例实际覆盖的代码行、判断个数判断路径个数或是系统路径占整个全部被测模块的比例。它可以确定模块或是系统中尚未被测试部分,确定测试完成的程度
测试用例生成工具
测试同理生成工具是一种相当只能画的工具,可以通过软件需求、数据模型、对象模型等各种系统设计半自动生成测试用例,并保证测试同理之间尽量不存在相互覆盖,相互重复的现象。自动生成测试用例可以大大缩短测试用例的制造时间。可以尽量的减少测试的冗余,即用尽可能少的测试用例,覆盖尽可能多的系统或者软件模块。
测试数据生成工具
在不考虑数据组合的前提下,可以使用测试数据生成工具来产生测试文件和数据库。它生成的测试数据通常是随机的。因为那些由特别设计的测试用例产生的数据比较有规律,所以完整的测试数据集一般是由这两类型测试数据构成的。它相对于手工生产数据,使用该工具可以大量节省时间成本。
逻辑复杂度生成工具
它用于考察软件模块或是软件系统的复杂程度。复杂程度信息可以用来评估系统出现的问题的可能性。这种工具还可以更为直观地以图表的形式现实软件模块的逻辑结构。可以认为风险分析系统可维护性缝隙提供复杂逻辑的信息,借助这些信息,测试人员可以优化测试用例。扩大对被测软件模块或者代码段的覆盖范围。
缺陷跟踪工具
它用于收集和分发缺陷信息。大部分缺陷跟踪工具都需要局域网作为支持环境。缺陷信息通常以电子邮件的形式在网络中流传。借助缺陷跟踪工具,测试人员可以很好的生成总结报告。有利于手机有用的缺陷信息并且进行有效的分析;可以建立起无纸化缺陷跟踪系统,安全准确的保存缺陷信息;可以简单的快捷的获取总结和生成缺陷信息。
测试管理工具
它用于组织和跟踪各种与测试相关的组件。如测试脚本、测试用例和、测试进程等。它又利于加强测试的控制和管理。可以方便地确定测试工作的当前状态;可以通过缝隙导致问题的原因,来持续不断的改进测试过程。
测试脚本
它用于说明在一次测试中要执行的一系列动作。他可以是手工编写的,也可以是自动生成的。即使十分不了解测试过程,也可以使用测试用例进行测试;支持重复测试。
“软件测试”工具使用
确保管理层对购置工具的支持管理层的支持显得尤为重要,它意味着既可以获得重要的工具资金,又可以向其他使用者展示使用工具的重要性。如果人们看不到管理层的支持可能会认为这个工具不太重要转而不去使用它。用团队行为选择工具 有计划的团队目标往往比起孤军作战更能获得成功。大量的建议和反复的讨论能够让计划成功。让现有的工具发挥最大效益如果现有的工具能够支持我们完成各种工作的,再去添加别的工具就没有意义了。所以只有在遇到实在需要工具解决的问题时再去添加工具。提高人员的素质和改善测试流程施工局发挥最大效益 如果测试人员没有良好的使用工具的素质,只会加快程序向不好的方向去进行。使用正确的工具使用正确的工具能够加快测试速度,就好比使用斧头砍树和使用电锯锯书一个道理。