软件测试的艺术
测试是为了发现错误而执行程序的过程,不要只为了证明程序能够正确运行而去测试程序,相反,应该一开始就假设程序中隐藏着错误,然后测试程序,发现近可能多的错误。
人类的行为总是倾向于具有高度额目标性,确立一个正确的目标有着重要的心理学影响。如果我们的目的是证明程序中不存在错误,那就会潜意识中倾向于实现这个目标;也就是说,我们会倾向于选择可能见哦按少导致程勋失效的测试数据,另一方面,如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能发现更多的问题。
软件测试的原则
- 测试用例中一个必须部分是对预期输出或结果的定义;
- 程序员应避免测试自己编写的程序
- 编写软件的组织不应当测试自己编写的软件
- 应当彻底检查每个测试的输出结果
- 测试用例的编写不仅应当根据有效和预期的输入情况,而且应当根据无效和未预料到的情况
- 检查程序是否“未做其应该做的 ”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”
- 应避免测试用例用后即废弃,除非软件本身就是一个一次性的软件
- 计划测试工作时不应该默许假定不会发生错误
- 程序某部分存在跟多错误的可能性,与该部分发现错误的数量成正比
- 软件测试是一项极富创造性,极具智力挑战的工作
测试架构师修炼之道
随着互联网发展和软件行业的兴起,中国出现了一种新的职业,软件测试工程师。追随西方完善的软件测试体系架构和理论,中国软件测试的起点还是还是比较高的。虽然起点比较高,但是软件测试行业的发展并不顺利。踏着互联网的浪潮,因为门槛低市场需求量大,来自各行业的后备软件测试人员不断涌入,而软件管理者对软件测试也缺乏正确的认识,在资源上偏重开发,测试人员在整个项目周期中比较弱势,迷茫的软件测试工程师在两三年之后就会出现三年之痒,在中国软件行业是一种很尴尬而又无奈的现状。
软件外包也是喜忧参半,一方面外包扩大了软件测试队伍,另一方面软件测试外包后公司就会削弱减少测试方面的投入,对于非外包软件测试人员的培训和职业发展的考虑。虽然外包公司可以得到专业,系统的测试技术方面的培训,但是外包行业本身的特点就决定了测试外包人员会比较频繁的更换测试产品,对产品实现的理解不会深入,而产品测试经验 的持续积累,对产品地不断深入理解又是深入软件测试的两个必要条件,加上外包行业本身存在这缺乏归属感,晋升空间等问题,软件测试外包人员很难在测试领域深入发展。
因为软件测试入门相对容易,选择软件测试转型也是不错的切入点。软件测试人员是产品研发团队中最理解产品全貌,最理解用户的人,这也是由于测试的工作内容决定的。入门简单虽然给测试人员带来更多的选择机会,但是也会导致测试在研发领域认可度比较低,认为软件测试是一项相对简单,没有技术含量的工作,这个印象导致了软件测试当前的困境和迷局。
和软件开发的深度不同,测试更注重的是广度,要有很强的综合能力。沟通能力,协调能力,风险评估能力,数据分析能力和 撰写文档的能力都是必不可少的。在职业发展上,大致分为管理和技术两个方向,软件测试工程师想要要管理方向有所发展,不仅需要能力,还需要机遇。
测试组长主要负责测试计划制定和执行,产品重难点测试,及新员工培训。测试经理不仅要运作测试项目,制定执行测试计划,还要对产品进行质量评估,给出产品发布建议,测试总监直接对产品成功负责,对测试团队发展负责,进行人员的招聘和培养,提高团队的胜任力和职业能力,负责资源计划分配,持续改进测试能力,提升产品效率和质量,从测试角度对产品成本,周期和质量负责。
对于输入个数有限的情况下,要遍历这些取值,对于输入个数无限的情况,可以使用等价类的思想将输入分类,从每一类中选取一些测试值进行测试;变无限为有限。稳定性测试可用四个字概括, 多、并、复、异。“多字诀”是在测试中增加用户对功能的操作数量;“并字诀”是测试多个用户同时进行这个操作;“复字诀”是一个或多个用户进行反复操作;“异字诀“是一个或多个用户多次进行异常操作。恢复测试法是指使用持续超过规格的负载进行测试后,再降到规格以内的测试方法。