赞
踩
1、测试工程师要做好测试工作是不容易的,测试工程师也是一个重要的角色
2、原来的测试以功能为主,现在的测试以自动化为主;
3、熟练应用各种测试工具,并且了解这些工具背后的原来,以及根据各个不同的场景选择合适的工具;
4、因地制宜的了解、熟悉新的测试工具或者方法;
1、作为测试工程师,你的目标是要保证系统在各种应用场景下的功能是符合设计要求的,所以你需要考虑的测试用例就需要更多、更全面;
2、等价类划分方法,是将所有可能的输入数据划分成若干个子集,在每个子集中,如果任意一个输入数据对于揭露程序中潜在错误都具有同等效果,那么这样的子集就构成了一个等价类。后续只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果。
3、边界值分析方法,是选取输入、输出的边界值进行测试。因为通常大量的软件错误是发生在输入或输出范围的边界上,所以需要对边界值进行重点测试,通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。
4、一个质量过硬的软件系统,除了显式功能性需求以外,其他的非功能性需求即隐式功能性需求也是极其关键的。显式功能性需求(Functional requirement):显式功能性需求(Functional requirement)的含义从字面上就可以很好地理解,指的是软件本身需要实现的具体功能;非功能性需求(Non-functional requirement):从软件测试的维度来看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
5、一个优秀的测试工程师必须具有很宽广的知识面,如果你不能对被测系统的设计有深入的理解、不明白安全攻击的基本原理、没有掌握性能测试的基本设计方法,很难设计出“有的放矢”的测试用例;
6、软件测试的用例设计是不可穷尽的,工程实践中难免受制于时间成本和经济成本,所以优秀的测试工程师需要兼顾缺陷风险和研发成本之间的平衡;
1、好的测试用例就像一张可以捞起全部池塘鱼与渔网,如果网好着,没有捞到鱼那么池塘就是没有鱼;
2、“好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关;
3、一个“好的”测试用例,必须具备以下三个特征:
4、三种最常用的测试用例设计方法:
5、如何才能设计出“好的”测试用例?
1、从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率
2、对于识别出的每个测试需求点,需要综合运用等价类划分、边界值分析和错误推测方法来全面地设计测试用例
6、用例设计的其他经验:
7、总结
1、单元测试是什么:单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类;
2、如何做好单元测试?要做好单元测试,你首先必须弄清楚单元测试的对象是代码,以及代码的基本特征和产生错误的原因,然后你必须掌握单元测试的基本方法和主要技术手段,比如什么是驱动代码、桩代码和 Mock 代码等,通常包括以下几个方面:
1、如果要实现正确的功能逻辑,会有哪几种正常的输入;
2、是否有需要特殊处理的多种边界输入;
3、各种潜在非法输入的可能性以及如何处理;
2.1.1、对输入数据的见解”:如果你想当然的认为只有被测试函数的输入参数是“输入数据”的话,那就大错特错了
2.2.2、对预计输出的见解:如果没有明确的预计输出,那么测试本身就失去了意义。同样地,“预计输出” 绝对不是只有函数返回值这么简单,还应该包括函数执行完成后所改写的所有数据
1、驱动代码(Driver)指调用被测函数的代码,在单元测试过程中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数以及验证相关结果三个步骤。驱动代码的结构,通常由单元测试的框架决定;
2、桩代码(Stub)是用来代替真实代码的临时代码。 比如,某个函数 A 的内部实现中调用了一个尚未实现的函数 B,为了对函数 A 的逻辑进行测试,那么就需要模拟一个函数 B,这个模拟的函数 B 的实现就是所谓的桩代码;
3、Mock 代码和桩代码的本质区别是:测试期待结果的验证(Assert and Expectiation);
4、桩代码的应用首先起到了隔离和补齐的作用,使被测代码能够独立编译、链接,并独立运行。同时,桩代码还具有控制被测函数执行路径的作用,编写桩代码通常需要遵守一下三个原则:
3、实际项目中如何开展单元测试?
最后我要跟你聊一下,实际软件项目中如何开展单元测试?
3.1、并不是所有的代码都要进行单元测试,通常只有底层模块或者核心模块的测试中才会采用单元测试。
3.2、你需要确定单元测试框架的选型,这和开发语言直接相关。比如,Java 最常用的单元测试框架是 Junit 和 TestNG;C/C++ 最常用的单元测试框架是 CppTest 和 Parasoft C/C++test;框架选型完成后,你还需要对桩代码框架和 Mock 代码框架选型,选型的主要依据是开发所采用的具体技术栈。通常,单元测试框架、桩代码 /Mock 代码的选型工作由开发架构师和测试架构师共同决定。
3.3、为了能够衡量单元测试的代码覆盖率,通常你还需要引入计算代码覆盖率的工具。不同的语言会有不同的代码覆盖率统计工具,比如 Java 的 JaCoCo,JavaScript 的 Istanbul。在后续的文章中,我还会详细为你介绍代码覆盖率的内容。
3.4、最后你需要把单元测试执行、代码覆盖率统计和持续集成流水线做集成,以确保每次代码递交,都会自动触发单元测试,并在单元测试执行过程中自动统计代码覆盖率,最后以“单元测试通过率”和“代码覆盖率”为标准来决定本次代码递交是否能够被接受。
4、总结
4.1、代码要做到功能逻辑正确,必须做到分类正确并且完备无遗漏,同时每个分类的处理逻辑必须正确;
4.2、单元测试是对软件中的最小可测试单元在与软件其他部分相隔离的情况下进行的代码级测试;
4.3、桩代码起到了隔离和补齐的作用,使被测代码能够独立编译、链接,并运行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。