Software Testing

Testing is an integral part of software development and plays a vital role in the delivery of quality products. It is imperative to not only fix bugs but to also get down to the root cause of what could cause the system to fail. We focus on achieving this by rigorous testing throughout the product development cycle.

At TechnologyC, we provide a full scale testing suit covering various aspects of the system. This includes but not limited to:

  • Unit testing - In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use. Intuitively, one can view a unit as the smallest testable part of an application. In procedural programming, a unit could be an entire module, but it is more commonly an individual function or procedure. In object-oriented programming, a unit is often an entire interface, such as a class, but could be an individual method. Unit tests are short code fragments created by programmers or occasionally by white box testers during the development process. It forms the basis for component testing.
  • Integration testing - Integration testing, is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing

  • Acceptance testing - acceptance testing is a test conducted to determine if the requirements of a specification or contract are met. It may involve chemical tests, physical tests, or performance tests. It may involve black-box testing performed on a piece of software, prior to its delivery.

    In software testing the ISTQB defines acceptance as: formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system. Acceptance testing is also known as user acceptance testing (UAT), end-user testing, operational acceptance testing (OAT) or field (acceptance) testing.

    A smoke test may be used as an acceptance test prior to introducing a build of software to the main testing process.

  • Exploratory testing - As its name implies, exploratory testing is about exploring, finding out about the software, what it does, what it doesn’t do, what works and what doesn’t work. The tester is constantly making decisions about what to test next and where to spend the (limited) time. This is an approach that is most useful when there are no or poor specifications and when time is severely limited.

    Exploratory testing is a hands-on approach in which testers are involved in minimum planning and maximum test execution.

  • Non-functional testing - Non-functional testing is the testing of a software application or system for its non-functional requirements: the way a system operates, rather than specific behaviours of that system. This is contrast to functional testing, which tests against functional requirements that describe the functions of a system and its components. The names of many non-functional tests are often used interchangeably because of the overlap in scope between various non-functional requirements. For example, software performance is a broad term that includes many specific requirements like reliability and scalability.
  • Performance testing - Performance testing is the process of determining the speed or effectiveness of a computer, network, software program or device. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS (millions of instructions per second) at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing.

Our test engineers come from various backgrounds and skill sets. This unique advantage provides us the benefit of putting the developed system through various unexpected scenarios during our intense testing phase, making sure the released product is stable and ready to accommodate your requirements.

Our experienced Acceptance and Functional testers are equipped and capable of executing both manual test cases following all the new test methodologies and automated tests using all common open source / automation tools.

Dedicated functional testing services for develoment companies and indie developers

If you are a development company without a dedicated testing team or an indie developer looking to ensure that your coding is as solid as it can get, we encourage you to have a word with us.

Please find more information about our dedicated testing service here.