自动化测试-2 单元测试
自动化测试-2 单元测试
单元测试是受益最大的自动化测试
因为是基于类、方法的测试,所以颗粒度比较小,主要关注函数的入参和出参是否正确,涉及到的代码量较少
当出现问题后较好定位
单元测试既不是纯白盒也不是纯黑盒,结合代码逻辑或函数入参出参等方法进行灰盒测试,一般由开发执行
单元测试因为不需要UI展现完全的代码执行速度高,所以执行效率很高
谷歌要求每个人的代码都要有单元测试代码一并提交
单元测试测试点:(单元测试主要关注代码覆盖率,70%以上已经很高了)
语句覆盖
分支覆盖
逻辑覆盖
国内较少公司进行单元测试,特别是互联网公司。
单元测试执行效率一般在毫秒级别
接口测试需要类和方法调用,所以相对单元测试效率低,一般在毫秒到秒级别
UI自动化测试执行效率更高,单位时间在秒级以上
单元测试框架:
xuint(junit\phpunit\nuint\testng\pyunit)
框架执行过程,测试用例步骤:
测试前的准备 setup
测试执行 test
测试清理 teardown
框架注解:
“@”
xml文件配置
自动化测试设计模式的框架:
1.分布式
如果测试用例很多,想在一台机器上运行,那么是线性运行,没办法多开线程,
想提高效率同时在十台机器上运行的话,就需要写一个多线程并发的或者多进程并发的分布式框架,能够把请求发到不同的测试机上
然后分别执行后再把测试结果拿回来。webdirver上组件是grid
2.数据驱动框架
相同的测试程序的逻辑,取外部不同的数据做重复的执行来验证程序是否正确
数据文件:txt/excel\数据库文件等
依次的每次取一条数据用数据驱动的框架运行,对结果进行断言
断言:实际的返回值是否与预期返回值一致,一致则成功,否则失败
数据驱动的核心是外部的数据输入到框架,数据框架的本质是我做到了程序和测试数据的分离
每次想测试的时候只需要维护测试数据文件就行,不需要做测试代码的维护修改(被测对象未发生变化的前提下)
3.关键字驱动框架
三要素:
我要操作的对象是谁
我要对这个元素怎么操作
操作的值
先写定位表达式(找到输入框)
动作关键字(输入input)
数据(123)
关键字的好处是把测试的三要素动作都写在数据文件里或测试文件里,不需要写代码
根据关键字进行反射(每个动作要有对应的函数,找到对应的代码函数进行执行)
通过外部的文件来定义自动化测试用例,更方便的实行自动化。
比数据驱动更高级的框架,非自动化测试也可以做
robotframework
4.混合式框架
支持关键字+数据驱动