Web and mobile application testing have changed. In the traditional model, testers waited for the development team to complete the coding phase, before starting the testing phase. However, that’s changing. The “Shift-Left” approach is bringing testing earlier in the cycle, whereas the “Shift-Right” is extending testing later in the cycle. These approaches require greater collaboration between coders and testers. However, testers often lack coding skills, and they work differently from developers. Additionally, testing tools can be hard to use without knowing how to code. We at Experitest have solutions to make testing easier for web and mobile app developers.
Shift-Left and Shift-Right: An overview
The “Shift-Left” approach makes testing a part of the continuous integration (CI). In the case of the “Shift-Right” approach, testing continues after receiving feedback from end-users. A quick overview of Shift-Left and Shift-Right will help.
Shift-Left testing is becoming an integral part of Agile development. Application features need to meet product acceptance criteria. Moreover, the assumptions need to meet the business acceptance criteria.
To accomplish this in the Agile environment, the team needs to define tests even before they build new features. As a result, testers start their work early in the cycle. Shift-Left offers the following advantages:
- Improved design: Involvement of testers early in the process results in finding potential issues earlier. The outcome is an improved design.
- Early detection and resolution of defects: Testers start early, therefore defects aren’t “pushed under the carpet”.
- Effort saved: Early detection and resolution of defects reduces the overall project effort.
Shift-Left helps in improving the product quality early in the cycle, however, customers aren’t using the product yet. Customers will likely have plenty of feedback when they use it. The project team needs testing coverage at that time, therefore, Shift-Right gains a level of importance.
This approach involves testers collecting end-user feedback and further refining the testing effort based on that. This approach has the following advantages:
- Improved customer experience: Testers carefully collate all end-user feedback and deal with them as part of the overall test management. This systematic approach results in customer feedbacks receiving the attention they deserve.
- Enables automation: Customer feedback is key. Once you address them systematically using the Shift-Right approach, you free up significant capacity to build in test automation. This positively impacts the overall project.
- Better test coverage: Shift-Right enables more testing, and at a later stage. This improves test coverage.
Shift-Left and Shift-Right require greater developer-tester collaboration
Shift-Left and Shift-Right are promising methods for web and mobile application testing. However, this requires more developer-tester collaboration, which isn’t easy. Two broad reasons make this collaboration hard, as follows:
Testers might lack coding skills.
Testing involves the following broad category of roles, where one category doesn’t need to know how to code:
- Quality Analyst (QA): Practitioners in this role verify the functionality and completeness of a test. This verification follows the development phase and QA practitioners don’t need coding skills.
- Software Design Engineer in Test (SDET): This role requires an understanding of how the code works. The knowledge of programming languages and database concepts is important in this role. SDETs work during the development phase.
Additionally, testing techniques determine whether the tester needs coding skills, e.g.:
- Black box testing needs no coding skills on the part of the tester. Testers use input data to test the app, and they verify the inputs.
- On the other hand, white box testing requires testers to have programming and database knowledge.
Developers and testers have several differences in how they work, as follows:
- Diverging approaches: Developers and testers have markedly different approaches to their work. Developers are trying to build a product, whereas testers are trying to find defects in them.
- Different inputs: Developers take the design as their input, whereas testers go by the requirements.
- Differences in working style: Developers prefer to work at a stretch, without interruption. Testers have frequent interruptions in their work, by its’ very nature.
- Tooling challenges: Developers may not find it easy to use test automation tools, moreover, testers without coding skills may find it hard to use some of the tools.
Tools to aid in web and mobile application testing
Web and mobile app developers need the right tools to collaborate with testers. We will now review two such tools and see how they facilitate this collaboration.
XCUITest is a test automation framework. This is bundled with Xcode, the popular IDE from Apple. It’s part of the overall XCTest framework. As the name indicates, XCUITest helps in testing the UI of apps coded with Xcode.
XCUITest has the following advantages:
- XCTest couples tightly with Xcode, which naturally benefits users of XCUITest. Testers without in-depth coding skills can use it.
- It enables UI recording. Testers can generate code out of these recordings. They can then run tests identical to the UI tests that were recorded.
- Native iOS language support helps writing tests in the same language as that of the app. iOS developers find it easy to write tests using XCUITest.
- CI integration for the overall XCTest framework is possible.
- XCTest is faster than frameworks built on top of it, which also helps users of XCUITest.
There are a few disadvantages too, as follows:
- XCUITest has no cross-platform support.
- It supports only Swift and Objective-C, the languages that Apple supports.
- Basic usability and robustness need some improvement. Running tests on simulators work well, however, running the same tests on devices doesn’t give adequate stability.
Among the web and mobile application testing tools, Espresso is an important one for Android. You can use Espresso to write concise and reliable Android UI tests. This open-source test automation framework offers ease-of-use to manual testers, moreover, it can be extended for use within Android Studio.
Espresso offers the following benefits:
- The easy workflow helps developers to build test suites as stand-alone APKs. Testers without much coding skills can write tests.
- Developers can get timely feedback.
- Espresso makes the test cycle stable. The flakiness is less.
- Building Espresso test automation requires a reasonable amount of effort and skill. It’s not very hard.
Espresso also has a few drawbacks, as follows:
- Learning curve: It takes time to get used to the in-built test synchronization and UI.
- Espresso needs access to the source code.
- Repetition of effort: If you are writing tests for Android and iOS, you need to write them twice. Also, you need to use additional tools if your tests need to work with Android outside the application.
- The team needs prior experience of building Android apps and launching them on emulators.
From their pros and cons, it’s clear that XCUITest and Espresso go some way to make life easier for testers without coding skills. This clearly helps in adopting Shift-Left and Shift-Right. However, developer/tester collaboration needs more work, and this is where we at Experitest step in.
Experitest offers solutions.
We in Experitest offer solutions to realize the potential of Shift-Left and Shift-Right in web and mobile application testing. Let’s review these solutions.
Appium Studio for Eclipse
Testers can use Appium Studio for Eclipse for end-to-end Appium/Selenium testing automation from within Eclipse. It offers the following advantages:
- End-to-end test automation from Eclipse: Test development, automation, and execution on remote devices in the Digital Device Lab.
- Immediate visual feedback: Product teams can create robust and maintainable tests. The dynamic device reflection provides immediate visual feedback. Code snippets and automatically generated Eclipse framework assets provide further help.
- Teams can create stable automation suites.
- Increase test coverage by testing outside the app, including aspects like SMS, network, settings, etc.
- Easy integration with CI environment, and Eclipse plug-ins.
- Parallel test execution is easier with intelligent grid execution management.
Appium Studio for IntelliJ
Appium Studio for IntelliJ helps in mobile app automation testing from IntelliJ. Project teams gain several advantages from this, as follows:
- A complete test automation suite for IntelliJ: Teams can develop and automate tests. They can use remote devices on the Digital Device Lab for test execution.
- Instantaneous visual feedback: Quite like Appium Studio for Eclipse, project teams get immediate visual feedback here too. Code snippets and IntelliJ framework assets are also available.
- Robust object identification: It’s easy to identify and manage objects. The drag-and-drop editor helps in writing better scripts.
- Build stable test automation projects and eliminate errors.
- Just like Appium Studio for Eclipse, teams can increase the test coverage.
- Easily integrate with Appium, Selenium, and your CI environment.
Innovation is key to facilitate Shift-Left and Shift-Right
Shift-Left and Shift-Right can transform web and mobile application testing. However, developers and testers need to collaborate more for this. They need adequate tooling support. XCUITest and Espresso cover quite a lot of ground, however, they aren’t easy enough for developers. Our Appium Studio solutions for Eclipse and IntelliJ fill this crucial gap.