1、软件测试
概念:测试是为了发现错误而执行的一个程序或者系统的过程。
分类:
a、按测试方法分为:黑盒测试、白盒测试、灰盒测试
b、按是否运行程序分为:静态测试、动态测试
c、按阶段划分为:单元测试、集成测试、系统测试、验收测试
生命周期:
2、V模型:
a、步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试
b、缺陷:仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证
3、瀑布模型:
a、定义:瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品
b、核心思想:采用结构化的分析与设计方法将逻辑实现与物理实现分开
c、优点:
为项目提供了按阶段划分的检查点;
当前一阶段完成后,只需要去关注后续阶段;
可在迭代模型中应用瀑布模型;
它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
d、缺点:
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
由于开发模型是线性的,用户只有等到整个过程的默契才能见到开发成果,从而增加了开发风险;
通过过多的强制完成日期和里程碑来跟增各个项目阶段;
突出缺点是不适应用户需求的变化
4、概念:
a、单元测试:对软件中的最小可测试单元进行检查和验证
b、桩模块:进行单元测试时所设置的一种辅助测试模块,它用来模拟被测试模块工作过程中所调用的模块
c、驱动模块:用来模拟被测试模块的上一级模块
d、集成测试:也叫组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装称为子系统或系统
5、⾃顶⽽下、⾃底⽽上的集成⽅法定义与辨析
自顶而下:从主控模块(主程序,即根节点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。在自顶而下的集成测试过程中,需对那些未经集成的模块开发桩模块。
自底而上:从最底层模块(即叶子节点)开始,按照调用图的结构,从下而上,逐层将各模块组装起来。在自底而上的集成测试环境中,需对那些未经集成测试的模块开发驱动模块。
6、测试用例:
a、概念:为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求
b、设计方法:测试用例=输入+输出+测试环境
7、黑盒测试:
定义:也称功能测试,通过测试来检测每个功能是否都能正常使用
优点:
a、适用于功能测试、可用性测试及可接受性测试;
b、对照说明书测试程序功能;
c、可测试长的、复杂的程序的工作逻辑,易被理解
缺点:不可能进行完全的、毫无遗漏的输入测试
8、白盒测试
定义:又称结构测试。是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。
优点:
a、迫使测试人员去仔细思考软件的实现
b、可以检测代码中的每条分支和路径
c、解释隐藏在代码中的错误
d、对代码的测试比较彻底
e、让软件最优化
缺点:
a、昂贵
b、无法检测代码中遗漏的路径和数据敏感性错误
c、不验证规格的正确性
9、等价类方法
参考文章
若现在存在条件,a、b分别是满足和不满足,a对应结果c、d,b对应结果e、f
弱一般等价类:使用最少测试用例覆盖每个有效等价类,即ac或ad
强一般等价类:使用笛卡尔积,即ac和ad
弱健壮等价类:弱一般等价类基础上加上一个无效情况be或bf
强健壮等价类:强一般等价类基础上加上所有无效情况be和bf
10、边界值方法
对范围的临界点两端进行取测试用例,
例如(50,100),要取的测试用例可以为:49,50,51和99,100,101
11、逻辑覆盖测试:
以分解法为例:
12、基本路径测试法:
步骤:
a、画出程序流程图
b、根据流程图画出控制流图
c、根据控制流图写出各个路径
d、准备测试用例
13、黑盒测试的三种方法
a、决策表
a、确定条件桩
b、确定动作桩
c、画出决策表
使用场景:输入条件之间的组合对输出结果具有影响
优点:能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏
缺点:不能表达重复执行的动作,例如循环结构
b、因果图
优点:
a、可以全面的覆盖输入和输入的组合对结果的不同影响;
b、可以清晰地归纳出输入条件之间的限制关系
c、可以帮助分析需求规格说明书中的存在问题
d、可以帮助提高测试用例发现问题的效率
e、可以帮助学习测试思想
缺点:
a、利用因果图来设计测试用例时,作为输入和输出的因果关系,以及输入和输入之间的
约束关系,很难从软件需求规格说明书中得出。但可能从软件设计文档可以得出这些信息
b、因果图必须依赖于判定表生成测试用例而不能独自生成测试用例,所以要对判定表使
用比较熟练
c、正交表
14、JUnit
注意点:
a、必须是无参数void返回类型的非静态方法
b、使用JUnit的类必须拥有一个无参的公开构造方法
常用注解:
a、@Test:测试方法
b、@Before:初始化方法,在任何一个测试执行之前必须执行的代码
c、@After:释放资源,在任何测试执行之后需要进行的收尾工作
d、@BeforeClass:针对所有测试,在所有的测试方法执行前执行一次,且必须为public static void
e、@AfterClass:针对所有测试,在所有的测试方法执行结束后执行一次,且必须为public static void
f、@Ignore:忽略该测试方法,写在@Test方法之前
15、动态测试与静态测试
动态测试:指通常意义上的测试——使用和运行软件
静态测试:指测试不运行的部分——只是检查和审核
16、缺陷
定义:对软件产品预期属性的偏离,包括内部测试缺陷和遗留缺陷
消除缺陷的流程:打开、分配、修复、关闭
分类:
a、用户界面缺陷
b、语言质量缺陷
c、功能缺陷
d、流程缺陷
e、接口缺陷
f、验证缺陷
g、规范缺陷
h、易用性
17、测试与调试
测试:检验程序是否有错误
调试:发现程序错误的位置、原因以及改正错误等
调试是发生在测试之后的步骤
18、自动化测试
常用工具:Appium,Selenium,Postman,Soapui,Robot Framework
优点:
a、对程序的回归测试更方便
b、可以运行更多更繁琐的测试
c、可以执行一些手工测试困难或不可能进行的测试
d、更好地利用资源
e、测试具有一致性和可重复性
f、测试地复用性
g、增加软件信任度
缺点:
a、不能取代手工测试
b、手工测试比自动测试发现的缺陷更多,自动化测试不容易发现新的BUG,
c、对测试质量的依赖性极大
d、不能提高有效性
e、测试自动化可能会制约软件开发。
f、工具本身并无想像力综上所述,可以归结自动化完成不了的,手工测试都能弥补,两者有效的结合是测试质量保证的关键。
19、alpha测试与beta测试
Alpha测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试
Beta测试:是一种验收测试(所谓验收测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,通过了验收测试,产品就会进入发布阶段。)