一.软件开发流程
软件开发流程就是,软件的生命周期,步骤如下:
需求分析------计划------设计------编码------测试------运行维护
而每个阶段所需要完成的任务和产出成果也是不一样的
1.需求分析
内容:分析用户需求是否合理,分别从市场需求、技术等方面进行分析
产出:输出需求等文档
2.计划
内容:计划出多长时间内完成该需求,每段时间具体完成哪些功能
产出:输出计划等文档
3.设计
内容:将需求细化成一个个任务,进行技术设计(架构设计、接口设计、采用什么技术等)
产出:输出技术等文档
4.编码
内容:开发人员参考需求、计划、设计、交互图等文件进行代码编写
产出:代码文件等文档
5.测试
内容:对软件进行测试,参考测试用例对软件进行测试
产出:测试用例、测试设计与计划、测试报告等文档
6.运行维护
内容:项目进行上线,并对产品进行线上维护,包括三方面,分别为修复性维护(修复bug)、完善性维护(完善功能)和预防性维护(进行防护)
二.常见开发模型
1.瀑布模型

其实就是刚刚软件生命周期的顺序
优点/特点:强调开发的阶段性、线性结构,每个阶段只执行一次、是其他模型的基础框架
缺点:测试后置(会导致项目大面积返工、留给测试时间若不充足,将缺陷直接暴露给用户)、周期太长,产品很迟才能被看到和使用,可能导致需求/功能过时
适用场景:需求固定的小项目
2.螺旋模型

采用渐进式开发模型
优点:强调严格的全过程风险管理、强调各开发阶段的质量、增加风险分析和原型
缺点:存在的风险性和风险管理人员的技能水平有直接关系、项目成本太高
适用场景:规模庞大、复杂度高、风险大的项目
3.增量模型、迭代模型


适用场景:大型项目、需求不明确
4.敏捷模型
即需求被分解成许多可以增量开发的小部分,然后采用迭代开发。每次迭代都旨在小而易于管理,并且只能在几周内完成。
敏捷模型的四个特点:轻文档,轻流程,重目标,重产出
其中Scrum是敏捷模型中的一种,在scrum模型中,主要有三个角色和五个重要会议
三个角色:产品经理+项目经理+研发团队
产品经理:负责制定发布计划
项目经理:负责召开各种会议,协调项目
研发团队:完成每一次迭代的目标
五个重要会议:发布计划会议+迭代计划会议+每日例会+演示会议+回顾会议
发布计划会议:发布计划
迭代计划会议:对任务进行分解
每日例会:汇报昨天完成的进度,以及今天计划完成什么
演示会议:展示本次迭代的成果
回顾会议:进行总结,发现不足,制定改进计划
三.测试模型
1.V模型

优点:标注了测试过程中存在不同类型的测试
缺点:仍然测试后置
2.W模型(双V模型)

优点:有利于尽早地全面的发现问题
缺点:仍然保持一种线性的前后关系
三.Bug
1.bug的基本要素
描述bug的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果
例如
问题出现的版本:谷歌浏览器版本123.0.6312.123(正式版本)(64 位)
问题出现的环境:Windows家庭版
问题出现的步骤:
1.打开谷歌浏览器,输入网址https://www.101eduyun.com/
2.等待首页页面渲染完成
预期结果:二维码与登录模块不会出现遮挡,二维码可以正常扫描
实际结果:二维码被登录模块遮挡,二维码扫描失败

2.bug级别
一般分为:崩溃、严重、一般、次要
崩溃则代表主要功能完全丧失,必须立刻中止当前版本
严重则代表主要功能部分丧失,没被影响的功能可以继续
一般则代表功能没有完全实现但不影响使用
次要则代表一些细节优化问题
根据bug级别来决定处理的优先级
3.bug的生命周期


四.测试用例
测试用例是一组集合,包括测试环境、操作步骤、测试数据、预期结果等
例如:

1.测试用例的方面
主要从以下方面进行设计测试用例
1.功能测试
即该功能是否按照文档逻辑所开发
2.界面测试
整体界面是否与设计图要求一致,以及界面元素是否能被点击
3.性能测试
判断该软件的性能如何,高不高效
4.兼容性测试
在不同的硬件和系统上,是否都能按照预期所展示
5.易用性测试
是否有提示引导,方便用户上手
6.安全测试
是否会有泄密等安全情况,包括隐私数据明文显示,参数未强校验导致SQL注入,越权(普通用户也可以执行管理员权限的操作)
7.弱网测试
在网络差的情况下是否能尽可能地保证用户体验
8.安装卸载测试
该软件是否能正常的安装和卸载
2.测试用例的设计方法
1.等价类
即以一个测试用例,等价所有该类的测试用例
其中分为有效等价类和无效等价类

其中符合要求的测试用例就是有效等价类(长度6-15),不符合要求的测试用例就是无效等价类(长度小于6和大于15)
2.边界值
边界值包括:边界值+次边界值

丰富刚刚等价类的测试用例

3.正交法
通过正交法,可以将所有排列组合的情况下,选出更有代表性的情况进行试验
其中可以通过allparis工具来进行生成正交表
例如创建一个新的文本文件new.txt,复制excel表格的因素和水平,直接粘贴到new.txt保持退出
然后在allparis安装路径下打开cmd
命令:allparis.exe new.txt>zhengjiao.txt
最后生成的正交表就保存在zhengjiao.txt里面
4.判定表法


以更直观的方法来编写测试用例
5.场景法
场景主要包括4种主要的类型:正常的用例场景、备选的用例场景、异常的用例场景、假定推测的场景
通过在不同的场景下,构造测试用例
6.错误猜测法
根据之前遇到过的类似的功能,提出一些常见的错误,主要通过个人的经验和直觉。
五.测试的分类
1.按照测试目标分类
包括界面测试、功能测试、性能测试、可靠性测试(系统能正常运行的能力或程度)、安全性测试、易用性测试
编写测试用例就主要通过测试目标进行构造的
2.按照执行方式分类
分为静态测试和动态测试
静态测试:也就是不运行程序,仅仅是静态地检查代码、界面或文档中可能出现的错误
动态测试:对实际运行的程序进行测试,输入相应的测试数据,检查实际输出结果和预期结果是否相符
3.按照测试方式
分为三种:白盒、黑盒、灰盒
白盒:
其中白盒的意思就是能看到其内部代码,是透明的,然后根据程序的逻辑进行设计测试用例

白盒常见测试方法:
1.语句覆盖

所以根据用例1,所有的语句都被执行到
2.判定覆盖

要求每个判定情况都覆盖到
3.条件覆盖

每个条件的T和F都被覆盖到
4.判定条件覆盖

二合一,使得既满足判定覆盖也满足条件覆盖
5.路径覆盖
代码执行的先后顺序全部覆盖
黑盒:
也就是不需要了解代码的实现,只用关注输入和输出,中间的过程不用管
其中方法就有等价类、边界值、因果图、场景法、错误猜测法等
灰盒:
是介于白盒和黑盒之间的一种测试,多用于集成测试阶段
4.按照测试阶段分类
单元测试:对最小组成单元进行测试,主要采用白盒测试
集成测试:对系统的接口及集成后的功能进行正确性检测的测试工作
系统测试:进行整体测试,验证系统功能性和非功能性需求的实现,其中主要包括冒烟测试和回归测试。
冒烟测试:只需要测试系统能否成功打开,主流程是否可以走通即可
回归测试:当修改了旧代码后,重新确认修改没有引入新的错误
验收测试:向软件购买方进行交付,验收该软件是否符合要求
5.按照是否手工测试分类
如果是自己手动测试就是手工测试,由应用程序自动测试,就是自动化测试
6.按照实施组织划分
内测就是a测,即公司内部人员模拟为用户进行测试
公测就是β测,由正式用户在任意时间、任意场合来使用软件,通常采用邀请用户进行测试
第三方测试,就是由独立的第三方公司或组织进行软件测试
7.按照测试地域划分
分为国际化测试和本地测试
国际化测试:需要测试软件在不同语言和地区是否能正常工作,即海外版
本地测试:面向国内的所有测试就是本地测试