最近招聘面试测试工程师,发现不少测试工程师都是半路出家,对一些基本的测试概念,思路与技术没有认知。在设计测试用例的时候只是基于直觉与经验去测试。这就致使测试用例的设计既不全面,也不科学。面试
通常功能测试指的都是黑盒测试。就是测试工程师基于需求文档,对开发完的功能进行测试。也就是说,功能测试都是基于需求的黑盒测试。而需求主要归为两大类:sql
下边咱们分别来看一下两类不一样的需求都有哪些测试用例设计方法或思路。浏览器
对于显式功能性需求咱们最长用到的方案主要有三种:缓存
咱们若是想测试一个功能的最傻的办法就是穷举。好比说一个密码验证功能,咱们把全部的可能的密码都尝试一遍,天然就能够覆盖掉到全部的问题与可能。可是这种穷举的方法明显是作不到的。所以咱们要用到等价类划分法。安全
等价类划分法就是说咱们将全部可能的输入数据或操做分为多组不一样的子集,每一个子集中的数据与操做对发现程序中的潜在错误都有同等的效应。这样咱们就将一个子集称为一个等价类。好比输入各类与用户名不相符的密码,是一个等价类;输入各类不存在的用户名是另外一组等价类。这样在测试的时候,咱们只要在每一个等价类中选择一个典型操做,就能够达到较好的测试覆盖度。cookie
等价类还会分为有效等价类和无效等价类两种。有效等价类指的是合理的、有意义的输入,主要用来验证功能是否实现了某个功能。无效等价类与有效等价类相反,指的是无心义的,超过软件规格的,不合理的输入,主要用来测试功能的健壮性,看是否考虑了如何处理不合理的状况。性能
在咱们在测试合理与不合理的数据的时候,每每最容易出现问题的就是合理与不合理的边界,这时咱们就须要使用边界值分析法了。边界值分析法,就是对刚好大于、小于和等于边界的值进行测试,来验证程序是否作到了合适的处理。边界值分析法通常是做为等价类的补充,来增强测试功能实现的程度与健壮性保障的程度,是否符合规格。测试
在测试的时候就算咱们使用了等价类划分法和边界值分析法,也极可能会遗漏一些需求中没有清晰提出,技术上比较隐蔽的错误。这种错误就须要测试人员经过已有的经验、对功能实现可能的方法的理解或直觉,来推测出软件中可能存在的各类错误与场景,而后编写测试用例来进行验证,这就叫作错误推测法。好比,登陆超时后,某个须要权限操做的功能在使用的时候,是否跳到了登陆页,仍是直接报错,甚至说依旧能够操做。这种错误是须要测试人员必定的经验、技术积累与直觉的。大数据
虽说功能性测试每每是黑盒测试,可是若是测试工程师对于功能的实现有必定的理解——好比说是否用了缓存、是否使用了消息队列、是否某个地方会消耗极大的性能等等——将会更容易的推断出哪些地方会产生错误。网站
在测试工程师测试完显示功能需求以后,还要考虑到系统的非功能性需求。这种需求可能在文档中有明确提到,也可能并无明确的提出。可是咱们的测试工程师在测试的时候却必需要关注到。
兼容性指的是开发的软件是否在各类平台均可以使用。好比咱们开发一个网站,咱们的用户可能会用到各类不一样的浏览器访问咱们的网站。这样咱们在测试的时候,就不能只考虑到某一种浏览器。咱们须要考虑到多种浏览器的兼容性。
兼容性测试可能会涉及到:
咱们的测试人员还须要关注到开发软件的安全性。这涉及到:
测试人员也须要考虑的软件是否可以承载其需求所需的压力,例如: