Challenges with Multilingual Software and Website Testing
Software and website testing are essential to a successful product release. Obviously, the expense of errors in released software or website applications is multiplied by the number of target languages, for a multilingual software or website project. For that reason, it is crucial to understand and master software testing with the source language application.
This blog examines why errors occur, the cost of undetected errors and critical ingredients for successful software or website testing. By mastering these principles, you can provide your translation partner with complete specifications and other deliverables to ensure that software and website testing is valid and that you achieve your quality goals for your product.
Why do errors occur during testing?
Most of the software testing errors aren’t caused by programming issues. Studies performed on small to large projects show that the main reason for errors is a lack of sufficient information in the project specifications. For example a spec could be missing or not clear. Or, a spec may be constantly changing or it’s not communicated well to the project developers. This issues all point to importance of project planning.
The next reason of errors is the project design. This is the phase where the developers lay out their plan for a project. Errors occur here for the same reason they occur in the specification: the project design is rushed, changed, or not well communicated.
Coding errors are often related to project complexity, poor documentation, and schedule pressure. Its important to note that many of coding errors can be related to specification and design errors.
The cost of errors
The cost of fixing errors increases dramatically over time. An error found and fixed during the early stages when the specification is being written might cost “next to nothing.” The same error, if not found until the project is coded and tested, may cost a great deal more than errors found early in the project. But, if a customer finds the error after product release, the cost can be intolerably expensive.
Keeping the goal of software globalization in mind
Whether you are trying to release a multilingual product in order to increase your global market share and ROI or you are trying to increase your company’s global operational efficiencies by developing multilingual applications, software globalization is a requirement to make either a reality. Each client’s needs are somewhat unique and there are a variety of factors that can influence resources and costs involved in a complex software globalization project.
Quality assurance and testing issues
Quality Assurance (QA): this makes sure that the project will be completed based on the previously agreed specifications, standards and functionality required without defects and possible problems. It monitors and tries to improve the development process from the beginning of the project to ensure this.
QA is involved in the project from the beginning. This helps the teams communicate and understand the problems and concerns, also it gives time to set up the testing environment and configuration.
Software testing: this examines a system or an application under controlled conditions. The main goal of testing is to improve the software overall, find errors as early as possible, and make sure that they are fixed.
A test plan: this is a document that describes the objectives, scope, approach, and focus of a software testing effort.
A test case: this is a document that describes an input, action, or event and an expected response, to determine if a feature of an application is working correctly. A test case should contain elements such as test case identifier, test case name, objective, test conditions/setup, input data requirements, steps, and expected results.
Dynamic Black-Box testing (behavioral testing or input/output driven testing)
Testing a program without going into the details of its internal behavior and structure is dynamic “black-box” testing. It’s dynamic because the program is running and the tester is using it as a customer would. And, it’s “black-box” because the testing process is running without tester knowledge of the internal routines of the project done during an operation.
Effective black-box testing requires a clear definition of what the project does, namely, a requirements document or product specification. There is no need to know what happens inside the project “box”.
Static white-box testing: design and code examination (logic-driven)
Static “white-box” testing is the process of carefully and methodically reviewing the project design, architecture, or code for errors without executing it. The reason to perform static white-box testing is to find errors early and to find errors that would be difficult to uncover or isolate with dynamic black-box testing.
Dynamic white-box testing: (structural testing)
Dynamic white-box testing is using information you gain from seeing what the code does and how it works to determine what to test, what not to test, and how to approach the testing. It is called “structural” testing because you can see and use the underlying structure of the code to design and run the tests.
Unit testing: Unit testing includes testing of individual software components or modules. This type of testing is done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code.
Integration testing: This is testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc.
Load testing: This is performance testing to check system behavior under a load. For instance, a website may be tested under a range of loads to determine at what point the system’s response time degrades or fails.
Stress testing: The system is stressed beyond its specifications to check how and when it fails. Stress testing is performed under heavy loads like inputting a large number of transactions beyond storage capacity, complex database queries, continuous input to system or database load.
Usability testing: Usability testing checks if a new user can understand the application easily. The usefulness of help documentation is tested whenever a user gets stuck at any point. Also, system navigation is checked in this type of testing.
Security testing: Security testing checks if the system can be penetrated by any type of hacking and how well the system protects against unauthorized internal or external access. This testing also checks if the system and database are safe from external attacks (i.e. SQL injection).
Beta testing: Beta testing takes place when development and testing are essentially completed and final errors and problems need to be found before final release. Beta testing is typically done by end users and not by programmers or testers.
Multilingual Desktop and website application testing
The basic testing principles are the same for website and desktop applications as for software testing. But, the testing environment has some differences from software.
Desktop application: this type of application runs on personal computers and work stations. When testing the desktop application, you are focusing on a specific environment. You will test complete application broadly in categories like:
- Graphical user interface (GUI)
- Functionality
- Load
- Backend (i.e. database)
The tests performed on windows applications may include:
- Install / uninstall testing
- Compatibility testing
- Interface testing
- Unit testing
- Functional testing
- Integration testing
Web application: Application is loaded on the server, whose location may or may not be known. No *.exe is installed on the client machine; the testing process should be done on different web browsers.
Web applications are supposed to be tested on different browsers and OS platforms, so broad web applications are tested mainly for browser compatibility and operating system compatibility, error handling, static pages, backend testing and load testing.
The applications accessible in browsers would be developed in HTML, DHTML, XML, JavaScript etc.
Applications for the web server would be developed in Java, ASP.NET, JSP, VBScript, JavaScript, Perl, Cold Fusion, PHP etc.
The database server would be Oracle, SQL server, Sybase, MySQL etc.
The tests performed on web applications may include:
- User interface testing
- Functionality testing
- Security testing
- Browser compatibility testing
- Load / stress testing
- Interoperability testing/intersystem testing
- Storage and data volume testing
Keeping the goal of software globalization in mind
Whether you are trying to release a multilingual product in order to increase your global market share and ROI or you are trying to increase your company’s global operational efficiencies by developing multilingual applications, software globalization is a requirement to make either a reality. Each client’s needs are somewhat unique and there are a variety of factors that can influence resources and costs involved in a complex software globalization project.