1、软件的定义与分类
软件定义:
有一系列特定顺序组织的计算机数据和指令的集合
软件 = 数据 + 指令 + 文档
软件分类:
根据应用场景分类:工具类、游戏类、视讯类,电商类等各类软件
根据软件框架分类:单机版软件、分布式软件
单机版:红警、反恐精英、蜘蛛纸牌等
分布式:分两种架构软件:B/S架构软件与C/S架构软件
C/S架构软件:(Client/Server,客户端/服务器模式),桌面级应用 响应速度快,安全性强,个性化能力强,响应数据较快。如:微信、QQ等
B/S架构软件:(Browser/Server,浏览器/服务器模式)web应用 可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。如:浏览器、hao123等
2、软件测试的定义与原则
软件测试的定义:
通过人工和自动化的方式来验证软件是否与实际结果和用户需求是否一致的过程
软件测试的原则:
原则一:测试显示软件存在缺陷
测试只能证明软件中存在缺陷,但并不能证明软件中不存在缺陷。软件测试是为了降低存在缺陷的可能性,即便是没有找到缺陷,也不能证明软件是完美的。
原则二:穷尽测试是不可能的
由于时间和资源的显示,进行完全(各种输入和输出的全部组合)的测试是不可能的,测试人员可以根据测试的风险和优先级别来确定测试的关注点,从而控制测试的工作量,在测试成本、风险和收益之间求的平衡
原则三:测试尽早介入
软件的错误存在于软件生命周期的各个阶段,因此应该尽早展开测试工作,把软件测试贯穿软件生命周期的各个阶段中,这样测试人员能够尽早的发现和预防错误,降低错误修复的成本,尽早介入测试有利于测试人员了解软件产品的需求和设计,降低难度和风险,定制出完善的计划和方案,从而提高测试的效率
原则四:缺陷的集群性(2/8原则)
缺陷的“二八”定理也称为Pareto原则、缺陷集群效应,一般情况下,软件80%缺陷会集中在20%模块中,缺陷并不是平均分布的。因此在测试时,要抓住主要矛盾,如果发现某些模块比其他模块具有更多的缺陷,则要投入更多的人力、精力重点测试这些模块以提高测试效率。
原则五:杀虫剂悖论
反复使用相同的杀虫剂会导致害虫对杀虫剂产生免疫而无法杀死害虫。软件测试也一样。如果一直使用相同的测试方法或手段,可能无法发现新的bug。为了解决这个问题,测试用例应当定期修订和评审,增加新的或不同的测试用例帮助发现更多的缺陷。
原则六:测试活动依赖于测试内容
根据业务的不同,软件测试内部也分为不同的行业,比如游戏行业、电商行业等不同的行业,测试活动的开展都有所不同,比如测试技术、测试工具的选择,测试流程都不尽相同,所以软件测试的活动开展依赖于所测试的内容。
原则七:没有错误是好是谬论
有可能99%没有bug的软件也是不能使用的。如果对错误的需求进行了彻底的测试,这种情况就发生了。软件测试不仅是找出缺陷,同时也需要确认软件是否满足需求。如果开发出来的产品不满足用户的需求,即便找到和修复了缺陷也作用不大。
原则八:测试应基于客户需求
所有的测试工作都应该建立在满足客户需求的基础上,从客户角度来看,最严重的错误就是软件无法满足要求。有时候,软件产品的测试结果非常完美,但却不是客户最终想要的产品,那么软件产品的开发就是失败的,而测试工作也是没有任何意义的。因此测试应依照客户的需求配置环境,并且按照客户的使用习惯进行测试并评价结果。
软件的开发模型与测试模型
开发模型
1、瀑布模型:
定义:是线性模型的一种,每一个阶段只执行一次,形成瀑布流岁,最终得到软件产品的项目

瀑布模型的优缺点:
优点:开发的各个阶段比较清晰,当前一阶段完成后,只需要去关注后续阶段
缺点:不响应需求的变化。风险往往延至后期才显露,失去及早纠正的机会。
2、快速原型模型
定义:在需求分析阶段对软件的需求进行初步而非完全的分析和定义,用户与开发者在过程中加强反馈,快速设计开发出软件系统可以运行的模型;
特点:(1)快速的构建软件的原型
(2)支持用户参与
优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的项目开发风险。
缺点:不适合大型系统的开发(适合开发小型的、灵活性高的系统)。

3、生命周期

4、螺旋模型
定义:它兼顾了快速原型的迭代的特性以及瀑布模型的系统化监控化与严格监控
特点:引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径
优点:设计上的灵活性,可以在项目的各个阶段进行变更。
缺点:过多的迭代次数会增加开发成本,延迟提交时间。

测试模型
V模型
定义:V模型本身的软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系
特点:V模型标明了测试过程中本身存在的不同阶段,从左到右,描述开发过程中和测试过程间的阶段对应关系
优点:测试V模型既包含了底层测试又包含了高层测试;
缺点:当需求变更时将会导致返工量非常大,模型灵活比较低

W模型
定义:测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试。
优点:强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,还包括需求和设计。更早地介入测试,能尽早得发现缺陷进行修复。
缺点: 对于测试技术要求高,实践起来困难。

软件测试流程
