In this article, I will talk about the branch strategy in testing processes.

Branches are copies of our projects. Branches allows us to work on the same project by adding new features on different subjects by more than one person, without touching the current state of our project. Thus, the project can continue to be developed rapidly. So, we can do some experimental work without touching our main code, try library upgrades, and simply delete our branch without facing any rollback in case it fails. If it is successful, we can simply merge it with the DEV branch and continue.

Feature branch includes the new feature added to the project. It is preferable to use a descriptive branch name. Feature branch naming format can be made as Feature / ABC.

Completed feature branches are merged with the final code as a merge to DEV after the tests. If the release branch is combined, the “release/[major].[release].[hotfix]” tag is created by merging the dev and master branch.

The Test Engineer can engage in the DEV branch of these stages. It will be possible to test all the features together, and since it will test in a single branch, it will not need to look at which feature is in which branch. However, this will have some disadvantages. Since each feature developed with feature branches will be transferred to the DEV branch without being tested, too many findings can be encountered in the DEV branch. Regarding the findings; “Is it at a point where the improvements made affect each other?” or “Is it caused by faulty development while the feature is being developed” will not be clarified.

As a second and healthy way, the Test Engineer can step in at the Feature Branch. Comprehensive test cases prepared with the details of the feature are run manually on the branch. Findings should be analyzed and it should be ensured that the feature included in the branch works without errors. When the feature branches are merged into DEV, we may get an error in the dev branch in the functions that work in the feature branches, since more than one developed feature will come together. Therefore, we need to retest the relevant features and pre-existing features in the DEV branch. At this point, manual testing will take a lot of your time. Therefore, by using automation, you can try all scenarios in the master branch by adding the scenarios of the newly added features to the automation scenario. Finally, the reliability of the released code will be more robust with the test made in the master branch. If you are not using automation, you can test certain functions by relying on your experience on the relevant project.