软件失败的术语:
缺点、偏差、故障、失败、问题、矛盾、错误、特殊、事件、缺陷、异常。。。
首先要认识一个东西叫:产品说明书:
满足下列五个规则之一,即可以称作,发生了一个软件缺陷:
1、软件未实现产品说明书要求的功能
2、软件出现了成品说明书指明不应该出现的错误
3、软件实现了产品说明书中未提及到的功能
4、软件为实现产品说明书虽未提及,但应该实现的目标
5、软件难以理解,不易使用,运行缓慢,从测试人员的角度,最终用户会认为不好
为什么会出现软件缺陷:
产品说明书成为造成软件缺陷的罪魁祸首,在许多情况下,说明书没有写,或者写的不够全面,经常更改,或者整个开发小组没有更好的沟通。第二缺陷,来源是设计,这是程序员规划软件的过程,产生缺陷的原因与产品说明书一样,随意、易变,沟通不足。
软件测试员究竟要做些什么?
软件测试员的目标就是发现软件缺陷
尽可能早的找出软件缺陷
软件测试人员应该具备的素质:
1.他们喜欢拿到新的软件,安装到自己的机器上,观看结果
2.善于发现问题的原因,喜欢解谜
3.不会放过任何蛛丝马迹,出现一次的BUG,必然不会轻易放过,想尽一切可能的去发现它
4.具有创造性,想出富有创意,甚至超常的手段来寻找缺陷
5.判断准确,要确保看到的问题,是否真正的存在缺陷
6.知道如何冷静的和程序员沟通,告诉他,你的程序有BUG
7.善于说服,有一些问题,被认为不重要,不用修复,测试人员要说明为何必须修复,并推进缺陷的修复
测试人员,也需要编写测试文档:
1.测试计划 是否符合产品说明书和产品需求,制定计划
2.测试用例 列举测试项目,描述验证软件的步骤
3.缺陷报告 描述测试出的问题,并记录,
4.测试工具和自动测试
5. 统计和总结 测试过程的汇总
软件开发的几种模式:
1.大爆炸模式:
大爆炸模式优点是简单,计划、进度安排和正规开发过程几乎没有,所有精力都花在开发软件和编写代码上,最终产生了优秀的产品软件,或者一堆废品。
这种模式的测试 ,既容易,又困难,因为不可能回头修复已经打乱的事情,软件测试的工作其实就是报告发现的问题,让客户知道。
2.边写边改模式:
在大爆炸的模式上更进一步,至少考虑到了产品的需求,这种模式下通常是最初只有粗略的想法,接着进行一些简单的设计,然后开始编码,测试,觉得 可以了,然后发布产品。
3.瀑布模式:
采用这种模式的项目,从最初的构思到最终的产品要经过一系列步骤,每一个步骤结束,项目小组会组织审查,并决定是否进入下一步,没准备好,久停滞,直到准备好。
4.螺旋模式:
螺旋模式的总体思想是一开始不必详细定义所有细节,从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直到得到最终的产品。
5.敏捷软件开发:
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
软件测试人员在项目组中不受欢迎:
1.早点找出缺陷:产生更小的影响,会让人更容易接受
2.控制情绪:找到严重缺陷,不要兴奋,兴冲冲的跑到程序员那里,告诉他存在大问题,他是会不高兴的。
3.不要总是报告坏消息:经常找程序员聊聊天,不要总是报告坏消息,别人会对你唯恐避之不及。
软件测试的术语和定义:
1.精确和准确:
往靶盘上掷飞镖,掷到靶盘上交准确,掷到靶心叫精确。
2.确认和验证:
确认是保证软件符合产品说明书的过程。
验证是保证软件满足客户要求的过程。
3.质量和可靠性:
质量包括:软件功能的多少,运行能力。可靠性包括:产品的可靠性,比如,多少用户,或者多长时间会崩溃等等。
4.测试和质量保证:
是对确认和验证的一个过程。
测试基础:
1.黑盒测试和白盒测试:
黑盒测试中,测试人员只需要知道软件需要做什么,无法看到是这么运行的,不知道软件如何运行,只知道结果。黑盒测试又被成为功能性测试或者行为测试,
白盒测试:测试人员可以访问程序员的代码,通过检查代码来协助测试。
2.静态测试和动态测试:
静态测试是指测试不运行的部分(比如踢下车胎,看看车漆)。
动态测试是指使用和运行软件(发动汽车,听听发动机的声音,上路行驶)
3.静态黑盒测试:
测试产品说明书,认真找出其中的缺陷。
数据测试:
1.边界条件:软件是很极端的,即要么对,要么不对,对一定范围内的数据进行测试,往往是对的,但是在边界处,是最有可能出现错误的。
2.测试边界:例如 第一个减一/最后一个加一、空了再减,满了再加等等
3.默认,空白,空值,零值和无
4.非法、错误、不正确和垃圾数据(要求输入数字,则不能输入字母等)
5.状态测试:一旦使用某一项,使软件改变了外观,菜单,或者某些操作,就是改变了该软件的状态。
重复测试:
指不断执行同样的操作,不停的启动关闭程序,要想找出一个软件的缺陷,重复操作是不可避免的。
压迫测试:
指软件在不够理想的状态下运行,内存小,磁盘空间少,CPU速度慢等,有点类似于边界条件测试。
重负测试:
与压迫测试相反,压迫测试是尽量限制软件,而重负测试是尽量提供条件任其发挥, 让软件尽可能的处理大的数据,最大限度发挥软件能力,让它不堪重负。
其他黑盒测试技术:
1.像笨拙用户那样做
2.在已经找到软件缺陷的地方在找找
3.像黑客一样考虑问题
4.凭借经验,直觉和预览
静态白盒测试:
不执行软件的条件下有条理的审查软件设计,体系结构和代码,从而找出软件缺陷的过程,,有时称为结构化分析。另一个好处是可以为黑盒测试人员提供思路,他们可能不必了解代码的细节,通过审查评论,可以确定问题或者找出容易产生问题的范围。
通用代码审查清单:
数据引用错误:引用未经正确声明和初始化的变量,常量,字符串等引起的缺陷。
数据声明错误:不正确的声明或者使用变量和常量
计算错误:数学问题,计算无法的到预期的结果
比较错误:大于小于等于等,比较和判断错误很可能是由于边界条件的问题
控制流程错误:编程语言中循环等未按照预期方式工作
子程序参数错误:错误的来源是子程序不正确的传递数据
输入输出错误:包括文件读取,接收键盘或者鼠标输入以及向屏幕输出信息等
其他检查:
软件是否使用了本语言之外的语言,是否可以移植到其他编译器和CPU,是否考虑了兼容性,编译程序是否产生警告或者提示的信息。