一,软件开发过程模型
在软件开发的十几年的实践中,人们总结了许多的软件开发模型用来描述和表示一个复杂的开发过程,如:
瀑布模型
快速原型模型
螺旋模型
-1.开发模型-瀑布模型Waterfall Model
-(1)瀑布模型的介绍
最早出现的软件开发模型是1970年罗伊斯W.Royce 提出的瀑布模型。该模型给出了固定的顺序,将生存期活动从上一个阶段向下一阶段逐级过度,如同流水下泄,最终得到所开发的产品软件,最终投入使用。
-(2)瀑布模型定义
瀑布模型是将软件的生存周期的各项活动规定为按固定的顺序而连接的若干解阶段工作,形如瀑布流水得到最终软件产品。
1.是线性模型的一种,在所有的模型中占有重要的地位,是所有其他模型的一个基础。
2.每一个阶段执行一次,按阶段线性的进行软件的开发。
3.测试的切入点:
测试阶段处于软件实现后,必须在代码完成后留出足够的时间给测试活动,否则将导致测试不充 分,很多问题到项目后期才暴露
-(3)瀑布模型 的优缺点
优点
1.开发的各个阶段比较清晰
2.强调早期计划及需求调查
3.适合需求稳定的产品开发
缺点
1.依赖于早期的需求调查,不适应需求变化
2.单一流程不可逆
3.风险往往延至后期才显露,失去及早修正的机会
4.问题在项目后期才开始暴露
5.前面未发现的错误阶段会传递扩散到后面阶段,可能导致项目失败
-2.开发模型-快速原型模型
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
1.第一步是建造一个快速原型,实现用户与系统的交互,用户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足用户的要求,开发人员可以确定用户的真正需求是什么。
-2.第二步是在第一步的基础上开发出用户满意的产品软件。
- 快速原型模型的优缺点
(1)优点
克服瀑布模型的缺点,更好满足用户需求并减少由软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统开发。
(2)缺点
不适合大型系统的开发(适合开发小型系统、灵活性高的系统)。提前要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
-3.开发模型-螺旋模型
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,螺旋模型沿着螺旋线旋转,即在坐标的4个象限上分别表示了4个方面的活动,如图所示:
螺旋模型的优缺点
优点
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前经常发生的循环之前,都必须首先进行风险评估
缺点
采用螺旋模型需要具有相当丰富的风险评估经验和专门的知识,在风险较大的项目开发中,如果未能及时标识风险,势必会造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
二,软件测试&软件工程
软件测与软件工程息息相关,软件测试是软件工程组成中不可或缺的一部分。
在软件工程、项目管理
质量管理以及配置管理与软件测试的关系;在不同的开发模式下,如何进行软件测试。
测试模型
到底测试的过程和软件开发的过程一样吗?是不是由些看上去很专业似乎很有内涵呢?
答:随着测试过程的管理和发展,测试人员通过大量的实践,从而总结出来了不少测试模型,如常见的V模型、W模型、H模型等。这些模型与开发紧密结合,对测试活动进行了抽象,成为了测试过程管理的重要参考依据
-1,V模型
-2,W模型
优点
-强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试;
-更早地介入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复;
-同样是分阶段的工作,便于控制项目过程。
缺点
-依赖于软件开发和软件测试依然保持一前一后的线性关系,依然无法支持迭代、自发性和需求变更调整;
-对于当前很多项目,在执行的过程中根本不产生文档,那么W模型极本无法适用;
-使用起来技术复杂度很高,对于需求设计的测试要求很高,实践起来困难。
-3,H模型
H模型的优缺点
优点
-开发肥肉H模型揭示了软件测试除测试执行外,还有很多工作;
-软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
-软件测试活动可以尽早准备,今早执行,具有很强的灵活性;
-软件测试可以根据被测试物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
缺点
-管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度, 否则测试过程将非常难以管理和控制;
-技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
-测试就绪点分析困难:测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
-对于整个项目的人员要求非常高:在很好的规范制度下,大家都能高效率的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。
三,软件测试分类
-1,按照测试阶段分类
-(1)单元测试
-又称模块测试,针对软件设计中的最小单元——程序模块,进行正确性检查的测试工作。
单元测试需要从程序的 内部结构出发来设计测试用例。多个模块可以平行地独立进行单元测试。
-C中指的是一个函数,Java中指的是一个类,在图形化的软件中,一般是指的一个窗口,一个菜单。
-(2)集成测试
-又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。种地啊测试不同模块的接口部分。
-(3)系统测试
-指的是将整个软件系统看作一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
-系统测试在系统集成完成后进行测试,
-2,按照是否查看源代码分类
-(1)黑盒测试
- 1,黑盒测试的优缺点
-优点
-测试人员不需要了解实现的细节,包括特定的编程语言(没有编程经验的人也可以设计测试用例);
-测试人员和编程人员是相互独立的(黑盒测试用例的设计与程序如何实现无关);
-从用户的角度进行测试,很容易被接受和理解;
-有助于暴露任何与规格不一致或歧异的地方;
-缺点
-不能测试程序内部特定部位;
-如果程序未执行的代码无法发现;
-不可能做到穷举测试
-黑盒测试能发现以下几类错误:
-功能不对或功能遗漏;
-界面错误;
-数据库访问或者处理错误;
-性能问题。
- 2,黑盒测试的分类
- 1,功能测试(function testing)
-是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
-逻辑功能测试(function testing)
-界面测试(UI testing)
-易用性测试(usability testing)
-安装测试(installation testing)
-兼容性测试(compatibility testing)
- 2,性能测试(performance testing)
-是软件测试的高端领域,性能测试工程师的待遇和白盒测试工程师不相上下,通常我们所说的高级软件测试工程师,一般指的就是白盒测试和性能测试工程师。
-时间性能(事务相应时间等)
-空间性能(系统资源的消耗)
-一般性能测试
-稳定性能测试
-负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况。
-压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别。
-(2)白盒测试
-指的是把盒子打开,去研究里面的源代码和程序结构。
-在软件公司,往往采用黑盒测试&白盒测试相结合的方式。
-软件的整体功能和性能进行黑盒测试。
-软件的源代码采用白盒测试。
-(3)灰盒测试
灰盒测试,是介于白盒和=与黑盒之间的一种测试,即可保证黑盒的关注点又可掌控百盒的内部结构,但不会对内部程序功能和运作详细了解,灰盒测试结合了白盒测试和黑盒测试的要素。
-3,按照是否运行分类
-(1)静态测试 (static testing)
指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
-(2)动态测试 (dynamic testing)
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符过程。
-4,验收测试
α测试
-Alpha 是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发给专业的测试人员。一般而言,该版本的软件bug较多,普通用户最好不要安装。
β测试
-Beta测试是公测版本,是对所以用户开放的测试版本。该版本相较于Alpha有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过大规模的发布测试来进一步的消除。这一版通常由软件公司免费发布,用户可以从相关的站点下载。通过一些专业爱好者的测试,将结果反馈给开发者,开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
γ测试
-Gamma版本,指的是软件正式发布的候选版本,该版本已经相当成熟了,与即将发行的正式版相差无几,是正式版本的候选版本。
随机测试(探索测试)
-随机测试主要是对被测软件的一些重要功能进行复测,也包括当前的测试用例没有覆盖到 的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大bug进行再次测试,可以结合回归测试(Regressive Testing)一起进行。
四,测试用例
测试用例举例说明1:
-买手机:按开机键,相当于输入了一组数据来测试,执行条件指的是开机的前提条件,比如是否有电;预期结果就是能够顺利的打开手机,那么测试完毕后,是否达到了想要的需求(顺利开机)。
-所以通过上面的描述,我们不难看出,测试用例要解决的问题是要测 什么?怎么测?
测试用例举例说明2:
-新浪注册页面:https://login.sina.com.cn/signup?entry=homepage
-这次测试的是邮箱地址格式是否正确,怎么测试的呢?分别输入正确的地址和错误的地址进行测试。
等价类划分法
计算器:到底输入几组数据才算测试完毕?
答案:一个一个测试效率低下,一定要分类测试!
-1、整数(在范围内的整数 -99到99 )取最大、最小、中间
-2、小数(在范围内的整数 -99到99 )
-3、符号(+-/*,!@¥%......&*())
-4、汉字
-5、空格
-6、不输入
通过上面的描述,我们发现我们用户所有可能输入的数据,划分成了若干份(或者也可以称为子集),然后从每个子集当中选取少数具有代表性的数据作为测试用例这种测试用例我们称为“等价类划分法”。
等价类划分是一种重要的,黑盒测试方法,不需要考虑程序的内部结构,只需要考虑输入的规格即可。它将不能穷举的测试过程进行合理的分类,从而保证设计出来的测试用例具有完整性和代表性。
>注意:在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。
-(1)等价类划分(分类)
-有效等价类
-指符合《需求规格说明书》,输入合理的数据集合
-无效等价类
-指不符合《需求规格说明书》,输入不合理的数据集合
-(2)等价类思考步骤
1.先确定有效和无效等价类
2.有效等价类就是题目条件(两端的极值(边界值)要判断、中间随意一个值也要判断)
3.无效等价类先划分与条件相反的情况,再找到特殊的情况(中文、英文、符号、空格、空)
-(3)等价类划分案例(两位数相加案例)
-我们可以把“有效等价”和“无效等价”用例写在一个Excel表格中(写出来永远比脑子里想的要好)!
-例:计算1---100的整数之和(包括1和100)
-(4)等价类划分案例(TIM登录和电话号码案例)
测试要求是:测试QQ账号,账号的要求是6—10位正整数。
-有效等价类
-1,长度在6~10位之间的正整数
-无效等价类
-1,长度小于6位
-2,长度大于10位
-3,负数
-4,小数
-5,英文字母
-6,中文
-7,空格
-8,特殊字符
手机号码
-某城市电话号码由三部分组成,分别是
-地区码:空白或是3位数字
-前缀: 非‘0' 且非 '1' 的三位数字
-后缀:4位数字
-例子:1234567890
登陆界面
-用户名(昵称)长度为3-19:以字母开头
-登录名称:非空
-密码:非空
-确认密码:值和密码相同
总结:
-通过上面的案例。我们可以总结一下,当我们在测试文本框的程序可以考虑如下情况:
-1:文本框要求输入的长度
-2:输入的类型
-3:组成规则
-4:是否为空
-5:是否重复---区分大小写
-6:是否去除空格