软件测试理论01
- 测试工程师
- 自动化测试工程师
- Web端测试工程师
- 移动端测试工程师
- 接口测试工程师
- 性能测试工程师
- 安全测试工程师
- 游戏测试工程师
测试理论与流程 - 什么是软件测试?
1 利用工具或者手工对程序进行操作, 对软件质量进行评估检测的过程. - 软件测试的目的是什么?
1 通过尽可能少的人力.财力,物力来查找并解决软件中存在的缺陷从而降低商业风险
软件测试的原则
- 1、所有的测试都应追溯到用户需求
- 2、应当把“尽早和不断地测试”作为座右铭
- 3、测试工作应该由独立的专业的软件测试机构来完成
- 4、Pareto原则,测试发现的错误中80%很可能起源于20%的模块中。
- 5、设计测试用例时,应该考虑各种情况。
- 6、对测试出的错误结果一定要有一个确认的过程(描述缺陷报告)
- 7、制定严格的测试计划
- 8、完全测试是不可能的,测试需要终止。
- 9、注意回归测试的关联性。
- 回归测试是指修改了旧代码后,重新进行测试, 以确认代码修改后没有引入新的错误, 或者导致其他代码产生错误.
- 10、妥善保存一切测试过程文档。
软件测试基本流程
- 1.需求分析
- 2.编写测试用例
- 3.评审测试用例
- 4.搭建测试环境
- 5.等待开发提交测试包
- 6.部署测试包
- 7.冒烟测试
- 8.执行测试用例
- 9.BUG跟踪处理
- 10.测试报告输出
- 11.测试结束
软件开发过程模型
常见的三个模型
瀑布模型
- 瀑布模型是线性模型的一种,在所有模型中占有重要地位.
- 每一个阶段执行一次,阶段界定清晰
瀑布模型的优缺点
优点:
• 每一个阶段界定清晰
• 强调早期计划及需求调查
• 适合需求稳定的产品开发
缺点:
• 依赖于早期的需求调查,不适应需求的变化
• 单一流程不可逆
• 风险往往延至后期才显露,失去及早纠正的机会
• 问题在项目后期才开始暴露
• 前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败
可以改进的地方:
• 沿用瀑布模型的线性思想,细化了各个阶段,在中间掺入迭代思想
快速原型模型
快速原型模型也叫敏捷开发
快速原型模型的优缺点
优点:
• 克服瀑布模型的缺点,减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发
缺点:
• 不适合大型系统的开发
• 敏捷开发
螺旋模型
螺旋模型引入了风险分析活动
螺旋模型的优缺点
优点:
• 有风险评估, 降低了项目发布前的危害
缺点:
• 需要具有相当丰富的风险评估经验和专门知识
• 如未能够及时标识风险,势必造成重大损失
• 迭代次数过多会增加开发成本,延迟提交时间
软件测试模型
- 随着测试过程的管理和发展,测试人员通过大量的实践,总结出了不少测试模型,如常见的V模型、W模型、H模型等.
V模型
-
v模型是线性模型
V模型的优缺点:
优点:
• 包含了底层测试和高层测试
• 开发阶段界定清楚
• 容易控制开发过程
缺点:
• 风险在后面才发现
• 灵活性低
W模型
-
也叫做双V模型
W模型的优缺点:
优点:
• 测试伴随整个开发周期
• 更早的接入测试, 降低成本
• 开发阶段界定清晰
缺点:
• 小项目不适合
• 技术要求高,实践困难
还有H模型,由于是特别理想的模型,这里就不进行介绍了,有实力的大公司一般会采用w模型,但是一般公司还是采用v模型的
H模型优缺点:
优点:
• 除测试执行外,还有很多工作
• 软件测试完全独立,与其他流程并发进行;
• 灵活性很强的
缺点:
• 管理型要求高
• 技术要求高
• 测试就绪点分析困难
• 对项目组的成员要求高
软件测试分类
单元测试
- 可以这么理解,单元测试就是模块测试,针对程序最小的单位进行测试-程序模块
- 定义: 在图形化的软件中,单元一般指1个窗口,1个菜单
同时单元测试也会出现一些问题
- 什么时候进行单元测试。
- 谁来做单元测试
中小企业的程序员和项目经理,一般面对的都是压力大、任务重的项目。 如果作为项目经理的你,觉得测试组有人(有人就行了,多少倒不大重要),不妨让测试组的人早点介入单元测试,又或者假如测试组的人起码能写点代码,那其实更好,那么分配测试组的人去写单元测试,这其实是很有好处的。
- 单元测试在国内的现状。(单元测试在国内目前很不正规,如果你不要求开发去做这项事情,一般开发是不会做的)
- 如何进行单元测试(单元测试细节较多,这里就不一一列举了)
更多的国内测试,并不会选用单元测试,而是选用集成测试
集成测试
- 也叫组装测试或者联合测试,通常在单元测试的基础上,将所有模块按照设计要求进行组装,进行集成测试。
- 集成测试的问题
1.什么时候进行集成测试
1.它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合为程序的更大部分。
2.此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
2.由谁来做集成测试
系统测试
- 整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试 可以理解为,就是整体的测试、
- 系统测试前期主要为功能测试,后期则为性能测试,以及系统在不同的软硬件环境中的兼容性等
黑盒测试和白盒测试
- 黑盒测试: 又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据
- 黑盒测试能发现以下几类错误:
1.功能不对或功能遗漏
2.界面错误
3.数据库访问或者处理错误
4.性能问题
黑盒测试又称为功能测试,检查程序的功能是否符合它的功能说明。
功能测试
1.逻辑功能测试
2.界面测试
3.易用性测试
4.安装测试
5.兼容性测试
黑盒测试优缺点:
缺点:
• 不能测试程序内部特定部位;
• 如果程序未执行的代码无法发现;
• 不可能做到穷举测试
优点:
• 测试人员不需要了解实现得细节,包括特定的编程语言(没有编程经验的人也可以设计测试用例);
• 测试人员和编程人员是相互独立的(黑盒测试用例设计与程序如何实现无关);
• 从用户的角度进行测试,很容易被接受和理解;
• 有助于暴露任何与规格不一致或者歧异的地方;
- 白盒测试: 指的是把盒子打开,去研究里面的源代码和程序结构
软件的白盒测试是对软件的过程性细节做细致的检查。因此白盒测试又称为结构测试。白盒测试主要是想对程序模块进行检查。”
性能测试
• 是软件测试的高端领域,性能测试工程师的待遇和白盒测试工程师不相上下,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师
• 时间性能(事务响应时间等)
• 空间性能(系统资源消耗)
• 一般性能测试
• 稳定性测试
• 负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况。
• 压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,既可保证黑盒的关注点又可掌控白盒的内部结构,但不会去对内部程序功能和运作做详细了解,灰盒测试结合了白盒测试和黑盒测试的要素
静态测试
指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程
动态测试
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
随机测试
随机测试(探索测试), 随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressivetesting)一起进行
测试验收
α测试
- Alpha 是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。
β测试
- Beta是公测版本,是对所有用户开放的测试版本。该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
γ测试
- Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本。