1软件测试的心理学
测试与开发合作不愉快,有一个很重要的原因在于有些人一开始就把测试的定义搞错了:
“软件测试就是逐渐证明软件不存在错误的过程”;
“软件测试的目的在于证明软件能够正确完成其预定的功能”;
“软件测试就是为广大群众建立一个:‘软件已经做了其应该做的,其信誉度有所保障’的信心”;
然而这些理解都是本末倒置的。
我们可以类比一下病人看医生的情况,病人因为身体不舒服而去看医生。如果医生对病人进行了一些实验检测,却没有诊断出任何病因,我们就不会认为这次看病是“成功的”。
之所以判断为“不成功的”,是因为病人支付了昂贵的医药费,而症状任然存在。病人会因此而质疑医生的诊断能力。但是,如果实验检测诊断出病人是胃溃疡,那么这次看病就是“成功的”,医生可以进行适当的治疗。
因此,医疗界会使用“成功”或“不成功”来表达适当的意思。我们可以类推到软件测试中来,当我们开始测试某个程序的时候,它就好似我们的病人。对软件进行测试,就是为它诊疗的一个过程。
所以说,测试是为发现错误而执行程序的过程。当你确实“诊断”出“病情”,也就是找到了bug,也就证明这次检测是成功的。
2软件测试的经济学
软件测试是否能够发现“所有”的错误?答案是否定的:
为了应对测试经济学的挑战,测试者们应该在开始测试之前建立某些策略。黑盒测试和白盒测试是两种最普遍的策略。
1. 黑盒测试--又称为数据驱动的测试或输入/输出驱动的测试。测试的目标与程序的内部机制和结构完全无关。
2. 白盒测试--又称逻辑驱动的测试,你清楚盒子内部的东西以及里面是如何运作的,全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
3软件测试的原则
·测试用例中一个必须部分是对预期输出或结果进行定义;
·程序员应避免测试自己编写的程序;
·彻底检查每个测试的执行结果;
·测试用例的编写不仅要根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况,毕竟我们无法完全预料到用户拿到软件后都会怎样操作;
·检擦程序是否“做了其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”;
·对测试用例进行系统地管理,避免测试用例用后即弃,除非软件本身就是个一次性的软件;
·程序某部分存在更多错误的可能性,与该部分已经发现错误的数量成正比;
一个软件产品的成功需要从各个环节上去把握,但首先要明确的是思想,用人的左手和右手的关系来比喻开发和测试之间的关系更为恰当。今后也请大家愉快合作哦~