- 通用测试技术。
- 测试环境的配置。
- 数据库的测试技术。MySQL或者是Oracle。
- 实操,能够动手做项目实战。
- 自动化相关的前端基础。
- 一定的编程基础,python或者Java。
- 自动化测试实战技术。
- 接口测试能力。
- app测试技术能力。
一、软件:程序、数据、文档(使用说明书)。
二、软件的分类:
按层次划分:系统软件,应用软件。
操作系统的四大管理功能:设备管理、作业管理、文件管理、进程管理。
按组织划分:商业、开源。
按结构划分:单机软件、分布式软件。
所有不满足需求或超过需求的都是缺陷。
没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷。
三、缺陷:
软件未实现产品说明书要求的功能。
软件实现了产品说明书中指明不应该出现的功能。
软件实现了产品说明书中未提到的功能,,且这个功能也不应该实现。
软件未实现产品说明书中虽未明确但应该实现的目标。
软件难以理解、不易使用、运行缓慢或者(从测试角度看)最终用户会认为不好。
和同类型的产品不同,不如人家好,是缺陷,如果人家说不是,那就让人家把需求写的清楚一点。
站在坚定的立场上去判断这个软件是不是有缺陷的。
明确的需求:把所有可能性都规范清楚。难以理解的需求一定要问足够清楚。难就难在有些地方很灵活,是或不是就在我的一念之间。
计算机1946年,操作系统1956。
一个好的测试,相当于半个产品经理。
bug defect error
四、软件测试的定义和目的:
- 正向思维的定义:是能正常工作的。
- 按照系统要求来,所做的都是为证明软件是没问题的。
- 反向思维的定义:怀疑一切,为发现错误。我偏不。
- 要能设计出发现很多错误的测试用例。不要涉及没有意义的测试过程。
- 一个好的测试用例在于他能发现以前从未发现的错误。
- 一个成功的测试是发现了以前未发现的错误的测试。
- IEEE定义的软件测试。
- 电气电子工程师学会,专门制定一些标准、性能参数指标等。
- 运行软件的过程,观察并记录结果,并给出相关评价。
- 分析软件项目的过程,检测现有状况与需求状况的不同,评估软件项目的特性。
- 广义的软件测试
- 软件形成过程中的所有工作产品(包括程序以及相关文档)进行测试。
- 确认(validation):通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现。
- 验证(Verification):通过检查和提供客观证据来这个是指定的需求是否满足。
- 软件测试的目的
- 以最少的人力物力和时间找出软件中潜在的错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
- 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误。
- 采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。
- 测试和调试的区别。
测试 | 调试 | |
主体 | 测试人员 | 开发 |
目标 | 找Bug | 将错误修改正确 |
方法 | 等价类、边界值 | 程序和逻辑算法 |
思路 | 反向思维: | 正向思维: |
测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;
调试是从未知的条件开始,结束的过程可能不可预计。
测试可以计划,可以预先指定测试用例和过程,工作进度可以度量;
描述调试的过程或持续时间相对比较困难。
- 软件测试的对象。
- 软件的生命周期。
<瀑布模型>
缺点:
- 强调时间顺序的严格性。
- 测试放在编码之后。没有体现出测试贯穿软件生命周期的原则。
- 不适应用户需求的变化。
- 需求分析 需求规格说明书
- 概要设计 架构文档
- 详细设计 详细文档
- 编码、测试 源代码、测试报告
- 验收 产品
<螺旋模型>
<迭代模型>强调深化。
<增量模型>
把软件分割成独立的模块,分批次的进行交付。一期、二期。
缺点:打破软件原有的结构和框架。一般会和迭代模型一起运用。
增加新功能、优化新功能、修复缺陷。
<快速原型>
应用领域越来越多。
原型:就是一个模型。可以模拟操作、简单运行。
典型应用和工具:Axure。制作原型。
产品经理做出来原型给客户看,没问题给开发开发。
- 测试流程
- 软件测试流程,顺序不能错
- 获取测试需求
- 编写测试计划
- 制定测试方案
- 开发与设计测试用例
- 执行测试
- 提交缺陷报告
- 测试分析与评审
- 提交测试总结
- 准备下一版本测试
- 软件测试的过程模型
- V:测试介入的时间太晚了。画图、缺点。
- 软件测试流程,顺序不能错
2.W:开发在做事情的时候我们也在做。
3.H:软件测试是一个独立的流程,测外包公司。什么写出来了我就对什么做测试。
4.X:一个箭头是一个V模型,有V模型的缺点,第一次用是探索性测试。
测试过程(工作独立性)
A:研发团队内部的测试岗位。
B:企业内部的独立于研发部门的测试岗位。
C:专门的测试外包公司的岗位。
D:开发人员自己测试。
测试独立性由高到低:
CBAD
过程理念:
尽早测试
全面测试,所有产品,所有人参与。
全过程测试,全程跟踪。
开发不好好干活需要追着他们修复然后验证。根据测试的影响定义开发什么时候完成。
独立的、迭代的测试,测试活动独立的,循环往复的,不断进行的。
加法计算器:
计算任意两个整数的和:确定一些计算无误,也要确认其他的是不是正确
要知道整数在mysql数据库中,占用几个字节?取值范围?
1+2计算对,也要计算2+1
-
软件测试的分类
1.按照开发阶段划分
(1)单元测试
最小单位,程序模块进行测试,有页面在页面进行测试,没有就测试代码。post隐藏传递的数据,get不隐藏。从程序的内部结构出发。读程序和代码。大多数时候,单元测试都是由开发人员自己完成(交叉)(一般不认为是在做测试)。反向思维。测试人员为什么不做单元测试?大家不懂代码和算法。单元测试可以独立的进行。
(2)集成测试:组装测试,把单元模块集成起来,比较多的涉及到接口测试。企业非常需要接口测试工程师。符合系统概要设计的测试,是一个持续不断地过程。