咱们的思惟是不完美,不管咱们多想尽力的完成一项工做,都会可能会在某一点上出错。咱们要让本身作出的决定比不进行测试的时候要更好。编程
做为软件生产者,咱们要经过测试来了解软件产品是否可以卖出去。要从客户的角度去进行测试。工具
风险的评估存在主观性:1.风险是针对将来进行评估的,将来可能会发生任何事情;2.不一样人对同一种风险的感觉是不一样的。测试
经过测试获取的信息可以下降决策带来的风险。spa
由于不一样的人,不一样的项目,不一样的时间都意味着对风险的不一样理解。须要设计对应的测试来回答不一样的问题。操作系统
1)软件是否可以作咱们但愿它作的工做?设计
2)若是软件不能作咱们但愿它作的工做,须要多扫工做才能解决这个问题?内存
3)软件是否作了咱们不但愿它作的事?资源
4)软件是否可以达到咱们的预期(有没有实现其目的)?开发
5)软件可以作用户但愿它作的事吗(用户满意吗)?文档
6)软件是否知足了其余的商业要求?(计划外的维护和技术支持)
7)失败的可能性和后果严重性如何?
经过设计测试用例和执行测试计划,能够提供以上问题答案的信息。
1)试图进行完美的测试,会让你完蛋
2)测试人员的职责是为决定提供信息(但不是全部信息),作决定是经理要作的。
3)在作决定时应考虑全部相关信息,须要考虑开发人员、测试人员和用户等人的意见。
4)因惧怕未按计划交付产品,就交付尽是错误的产品,可能致使公司巨大损失。
5)测试只是收集有关产品的信息,测试自己不会修复发现的错误。测试不会改进产品,改进是由那些修复测试发现缺陷的人实现的。
6)不存在一个“测试阶段”只进行测试,测试应该是贯穿于整个项目。
若是存在任何缘由致使不须要使用测试结果提供的信息,就没有必要进行测试。测试获得的信息不可靠,也没有必要测试。
软件行业的经理常常须要作出带风险的决定,一般在得到部分信息的状况下作出决定是比较保险的。但有些时候经测试得到信息可能会增长决定的风险。
1)对项目进行太多测试,可能推迟发布产品而不能及早进入市场;
2)测试提供的信息,开发人员因测试提供的信息,进行的程序修复可能会破坏程序其余部分的运行;
3)测试发现问题,可是并未引发重视进行修复,可能会致使后续的问题。
须要解释并使用测试产生的信息。
1)测试人员提交测试报告后,应对报告进行仔细审核,找到有用的信息;
2)测试人员不清楚怎么测试,应对他们进行培训;
3)测试人员不能很好理解软件,应对他们进行培训;
人们存在一种感情倾向,不但愿发现本身犯了错误。因此人们会作出与理性使用信息没有关系的决定。
考虑不周的测试或者执行过程不佳的测试都属于“不良测试”。这样的测试会让人认为产品的质量高于实际质量,致使提早交付。或者产品质量低于实际质量,致使推迟交付,损失效益。这都是不可取的。
有如下几种状况,说明产品还没有准备好接受测试,那么就没有必要进行测试,状况以下:
1)测试是否有助于解决产品存在的至少一个问题?
2)是否但愿知道该问题的答案?
3)是否只是漫不经心地对待测试结果?须要对测试发现的问题追根究底。
4)是否预先和测试人员就经过测试的标准达成一致?
5)若是不能,怎样才算经过测试?
6)是否定为测试的结果会替你作出决定?不可能从纯技术的角度作出商业决定。可使用测试获得的信息来支持商业决策。
7)测试结果可否是你改变决定?
1)既然雇佣测试人员,就要相信他们的测试结果。若是不信任他们,要么是选错了人,要么就须要帮助他们提升可信度。
2)不能让测试人员代替经理作决定,他们只是提供信息。
3)不使用测试提供的信息,就最好不要进行测试。
4)在作出决定时,要冷静并控制好本身的情绪,尽可能用理性进行决定。
5)要对测试数据进行评估。数字自己只是数字。要学会问:得到这一数字的过程是什么?这个数字有何含义?
6)测试是一项技术开发支持活动,须要和需求、设计、编程、文档、制造及支持过程协调起来。同时要给开发人员必要时间和资源来修复测试中发现的问题。
7)不要催促测试人员进行测试,测试是很是精细的工做。催促测试人员容易产生危险的有误导性的结果,尤为在测试人员感到惧怕、疲劳或变现愤世嫉俗时。
8)测试经理也须要了解测试过程,因此须要任命有测试经验的人担任测试经理。
9)不少看起来非理性的决定在不一样的价值取向下是理性的。记住这一原则,能够避免经理、测试人员和开发人员之间的许多冲突。
10)测试产生的信息用途不少,交付产品后进行测试,能够收集对客服和支持人员有用的信息。
本章主要介绍不对全部可能性进行测试的缘由,对于经理和测试人员,都应该了解测试是一种采样过程,须要了解采样给测试所带来的风险。
若是不能查看代码内部逻辑,可输入的测试用例是无限的。固然还有在不一样配置下进行测试,不一样制造商、不一样驱动程序、不一样操做系统、测试执行的顺序、不一样的内存等等。这样算来可测试的用例确实是无限多。
因为咱们没法测试全部可能性,任何实际的测试集(测试用例)都是某种程度的样本——表明整个可能测试集合的一个部分或片断。因此测试就是用样本集对程序进行采样。
采样也是一个心理过程,也是一个感性过程。令某人满意的样本也许会让另外一我的以为不满意。
咱们如何决定采那些样?如何知道是否获取足够大的样原本充分表明全部状况?如何知道得到了合适的样本?
1)但愿测试可以覆盖全部使人感兴趣的条件;
有些缺陷是测试员偶然发现,而不是精心设计的用例发现的。有没有什么心理学方法能够帮助发现更多使人吃惊的缺陷?
2)但愿讲测试集减小到能够管理、能够承受的程度。
首先,认识到测试集都是一种采样方法,而后不管你有多少资源,都要尽量选择那些具备最强表明性的测试集。
1)要理解测试便是采样过程,无论用哪一种方法,都要准备好应对出现采样错误的可能性。
2)获取信息的成本可能超过信息带来的好处。某些测试可能花费大量力气,可是效果并很差。
3)人不能进行穷举测试,测试工具更不能。
3)减小测试资源后,最简单的方法是限制样本的规模。规模减小可能出现采样错误,多样化的样本发现的问题可能会超过大样本发现的问题。因此与扩大测试团队相比,让测试团队成员多样化也可能会发现更多的问题。