一、轮岗学习内容总结
(一)git
Git常用命令:
提交文件到暂存区:git add 文件名
把文件提交到仓库:git conmmit -m “文件名”
查看是否还有文件未提交:git status
查看文件被修改的内容:git diff 文件名
版本回退(回退成之前的版本,一个^回退一次):git reset --hard HEAD^
查看文件内容:cat 文件名
查看版本号:git reflog
恢复到此版本号:git reset --hard 版本号
撤销工作区的修改:git checkout - -文件名
删除文件:rm 文件名
删除文件后恢复文件:git checkout - -文件名
克隆远程仓库:git clone 仓库连接
分支命令总结:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
把dev分支推送到远程仓库:git push origin dev
从远程抓取下来:git pull
(二)测试工作流程
1. 需求评审->制定测试计划及思维导图->测试用例的设计->测试用例评审
->测试->回归测试->撰写文档
2. 开发人员:需求评审->coding->单元测试->修改
(三)单元测试
- 简介
单元测试是指对软件中的最小可测试单元进行检查和验证。单元测试也是白盒测试,对于单元测试中单元的含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
- 优点
(1)便于后期重构和修改
(2)优化设计,易于调用和可测试,解除软件中的耦合
(3)文档记录,展示函数或类如何使用的最佳文档
(4)具有回归性,避免代码出现回归,提高效率
(5)提高代码质量
(6)减少bug以及能快速定位bug
(7)保证程序的稳定性和安全性
3. 驱动代码,桩代码和Mock代码
驱动代码是用来调用被测函数的,而桩代码和Mock代码是用来代替被测函数调用的真实代码的。
驱动代码(Driver)指调用被测函数的代码,在单元测试过程中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数以及验证相关结果三个步骤。驱动代码的结构,通常由单元测试的框架决定。
桩代码(Stub)是用来代替真实代码的临时代码。 比如,某个函数A的内部实现中调用了一个尚未实现的函数B,为了对函数A的逻辑进行测试,那么就需要模拟一个函数B,这个模拟的函数B的实现就是所谓的桩代码。
Mock代码和桩代码非常类似,都是用来代替真实代码的临时代码,起到隔离和补齐的作用。但Mock代码和桩代码的本质区别是:测试期待结果的验证。
(四)JUnit
- 简介
JUnit 设计的非常小巧,但是功能却非常强大。JUnit 是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。是用于单元测试框架体系xUnit的一个实例(用于java语言)。主要用于白盒测试,回归测试。
- 优点
可以使测试代码与产品代码分开;针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试;JUnit是公开源代码的,可以进行二次开发;可以方便地对JUnit进行扩展。
- 单元测试用例
单元测试用例是一部分代码,可以确保另一端代码(方法)按预期工作。为了迅速达到预期的结果,就需要测试框架。JUnit 是 java 编程语言理想的单元测试框架。一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。
- JUnit单元测试步骤
(1)准备测试所需条件(包括JUnit测试工具安装,环境配置,测试类和被测类的编写)
(2)调用要测试的方法(可以选择调用测试类调用全部测试类,也可以右键选择某个要测试方法go to->test进行测试某个模块)
(3)验证被测试方法的行为和期望是否一致
(4)完成后清理各种资源
- JUnit断言
JUnit提供了一些辅助函数,用于帮助确定某个被测函数是否正常工作,这些函数统称为断言。断言可以确定:1.某条件是否为真;2.两个数据是否相等,或者不等,或其他情况。
(1)assertEquals断言
(2)assertTrue与assertFalse断言
(3)assertNull与assertNotNull断言
(4)assertSame与assertNotSame断言
- JUnit的注解
@Test
JUnit4中在方法前面家@Test定义测试方法;
@lgnore
暂时不想运行某些类测试方法/测试类,在方法前面加上就会忽略;
@BeforeClass
将测试用例公用的部分提取出来,放在一个方法里,在测试类里所有用例运行之前,运行一次这个方法。例如创建数据库连接、读取文件等。(注意:方法名可以任意,但必须是public static void,即公开、静态、无返回。这个方法只会运行一次);
@AfterClass:
跟@BeforeClass对应。用于处理一些测试后续工作,例如清理数据,恢复现场。(注意:同样必须是public static void,即公开、静态、无返回。这个方法只会运行一次);
@Before:
与@BeforeClass的区别在于,@Before不止运行一次,它会在每个用例运行之前都运行一次。(注意:必须是public void,不能为static。不止运行一次,根据用例数而定);
@Runwith:
@Runwith是放在测试类名之前,用来确定这个类怎么运行的。也可以不标注,会使用默认运行器。
二、心得体会
在测试部轮岗的一周,比较充实,学习的计划和目标明确,学习到了很多关于测试的知识,尤其是开发涉及到的单元测试,包括具体的测试工具、方法和理念,对于以后可能涉及到测试这一块有一个很大的认识和了解。同时也遇到一些问题和发现很多不足,包括对工具使用和环境配置不够熟悉,对于代码量较大的项目理解不了,还没去学习和了解其他项目的单元测试等。
三、自我建议和改进
1. 继续进一步学习轮岗内容以及加强单元测试实操;
2. 了解和学习C#和C++项目的单元测试工具和用法;
3. 通过阶段性目标地去学习,提高效率,节省时间。