Functional testing. Functional Software Testing

  • inadvertent deviation of developers from working standards or implementation plans;
  • specifications of functional and interface requirements are executed without observing the development standards, which leads to a disruption in the functioning of programs;
  • organization of the development process - imperfect or insufficient management by the project manager of resources (human, technical, software, etc.) and issues of testing and integration of project elements.

Let's consider the testing process based on the recommendations of the ISO/IEC 12207 standard and list the types of errors that are found on each life cycle process.

Requirements development process. When determining the initial concept of the system and the initial requirements for the system, analysts make mistakes when specifying the top level of the system and building a conceptual model of the subject area.

Typical errors of this process are:

  • inadequacy of the requirements specification for end users; - incorrect specification of software interaction with the operating environment or with users;
  • discrepancy between customer requirements for individual and general software properties;
  • incorrect description of functional characteristics;
  • lack of tools for all aspects of the implementation of customer requirements, etc.

Design Process.Mistakes in the design of components can occur in the description of algorithms, control logic, data structures, interfaces, logic for modeling data flows, input-output formats, etc. These errors are based on defects in the specifications of analysts and flaws in designers. These include errors related to:

  • with the definition of the user interface with the environment;
  • with a description of the functions (inadequacy of the goals and objectives of the components that are detected when checking the complex of components);
  • with the definition of the information processing process and the interaction between processes (the result of an incorrect definition of the relationships between components and processes);
  • with incorrect assignment of data and their structures in the description of individual components and the PS as a whole;
  • with incorrect description of module algorithms;
  • with the definition of the conditions for the occurrence possible errors in a programme;
  • in violation of the standards and technologies adopted for the project.

Encoding stage.At this stage, errors occur that are the result of design defects, errors of programmers and managers in the process of developing and debugging the system. The causes of errors are:

  • lack of control over the values ​​of input parameters, array indices, loop parameters, output results, division by 0, etc.;
  • incorrect handling of irregular situations when analyzing return codes from called subroutines, functions, etc.;
  • violation of coding standards (bad comments, irrational allocation of modules and component, etc.);
  • the use of the same name to denote different objects or different names of the same object, poor name mnemonics; - inconsistent changes to the program by different developers, etc.

Testing process.In this process, errors are made by programmers and testers when performing assembly and testing technology, selecting test suites and test scenarios, etc. Software failures caused by such errors should be detected, eliminated and not reflected in the error statistics of components and software generally.

Maintenance process.During the maintenance process, errors are found that are caused by shortcomings and defects in the operational documentation, insufficient indicators of modifiability and readability, as well as the incompetence of persons responsible for maintaining and / or improving the software. Depending on the nature of the changes being made, almost any errors similar to the previously listed errors in the previous stages can occur at this stage.

All errors that occur in programs are usually divided into the following classes [7.12]:

  • logical and functional errors;
  • calculation and runtime errors;
  • I/O and data manipulation errors;
  • interface errors;
  • data volume errors, etc.

Logic errors are the cause of violation of the logic of the algorithm, internal inconsistency of variables and operators, as well as programming rules. Functional errors are the result of incorrectly defined functions, violation of the order of their application or lack of completeness of their implementation, etc.

Calculation errors arise due to inaccuracies in the source data and implemented formulas, method errors, incorrect application of calculation operations or operands. Run-time errors are related to the failure to provide the required query processing speed or program recovery time.

I/O errors and manipulation of data are the result of poor-quality preparation of data for the execution of the program, failures when entering them into the database or when retrieving from it.

Interface errors relate to errors in the interconnection of individual elements with each other, which manifests itself when transferring data between them, as well as when interacting with the functioning environment.

Volume errors relate to data and are a consequence of the fact that the implemented access methods and database sizes do not satisfy the real volumes of system information or the intensity of their processing.

The given main classes of errors are characteristic of different types of software components and they manifest themselves in programs in different ways. So, when working with a database, there are errors in the presentation and manipulation of data, logical errors in the task of applied data processing procedures, etc. Calculation errors predominate in programs of a computational nature, and logical and functional errors in control and processing programs. The software, which consists of many diverse programs that implement different functions, may contain errors. different types. Interface errors and scope violations are common to any type of system.

Analysis of types of errors in programs is necessary condition creating test plans and test methods to ensure the correctness of the software.

At the present stage of development of software development support tools (CASE-technologies, object-oriented methods and tools for designing models and programs), such a design is carried out in which the software is protected from the most common mistakes and thereby preventing the appearance of software defects.

Linking an error to a failure.The presence of an error in the program, as a rule, leads to the failure of the software during its operation. To analyze the cause-and-effect relationships "error-failure", the following actions are performed:

  • identification of flaws in design and programming technologies;
  • the relationship between flaws in the design process and human errors;
  • classification of failures, flaws and possible errors, as well as defects at each stage of development; - comparison of human errors made in a certain development process, and defects in the object, as a result of errors in the project specification, program models;
  • verification and protection against errors at all stages of the life cycle, as well as the detection of defects at each stage of development;
  • comparison of defects and failures in software to develop a system of interconnections and methods for localization, collection and analysis of information about failures and defects;
  • development of approaches to software documentation and testing processes.

The ultimate goal of error-failure causality is to define methods and tools for testing and detecting errors of certain classes, as well as criteria for testing completion on a set of data sets; in determining ways to improve the organization of the software development, testing and maintenance process.

We give the following classification of failure types:

  • hardware, in which the system-wide software is not operational;
  • informational, caused by errors in the input data and data transmission over communication channels, as well as when input devices fail (a consequence of hardware failures);
  • ergonomic, caused by operator errors when interacting with the machine (this failure is a secondary failure that can lead to informational or functional failures);
  • software, if there are errors in the components, etc.

Some errors may be due to flaws in requirements definition, design, output code generation, or documentation. On the other hand, they are generated during the development of the program or during the development of interfaces for individual elements of the program (violation of the order of parameters, fewer or more parameters, etc.).

Sources of errors.Errors can be generated during the development of the project, components, code and documentation. As a rule, they are discovered during the execution or maintenance of software in the most unexpected and various points of it.

Some errors in the program may be the result of flaws in the definition of requirements, design, code generation or documentation. On the other hand, errors are generated during the development of a program or interfaces of its elements (for example, when the order of setting communication parameters is violated - less or more than required, etc.).

The reason for the appearance of errors is a misunderstanding of the requirements of the customer; inaccurate specification of requirements in project documents, etc. This leads to the fact that some system functions are implemented that will not work as the customer suggests. In this regard, a joint discussion is held between the customer and the developer of some details of the requirements for their clarification.

The system design team may also change the syntax and semantics of the system description. However, some errors may not be detected (for example, indexes or variable values ​​of these operators are incorrectly set).

Functional testing is one of the key types of testing, the task of which is to establish compliance of the developed software (SW) with the initial functional requirements of the customer. That is, carrying out functional testing allows you to check the ability information system under certain conditions to solve the tasks needed by users.


Depending on the degree of access to system code There are two types of functional tests:
  • testing black box(black box) – functional testing without access to the system code,
  • white box testing - functional testing with access to the system code.

Black box testing is carried out without knowledge of the internal mechanisms of the system and relies on the external manifestations of its work. This testing checks the behavior of the software under various inputs and the internal state of the systems. In the case of white box testing, test cases are created based primarily on the code of the software system. There is also an extended type of black-box testing, which includes the study of the code, the so-called gray box.

Key Benefits

  1. Functional software testing fully simulates the actual use of the system.
  2. Allows you to timely identify software system errors and, thereby, avoid many problems when working with it in the future.
  3. Save money by fixing bugs earlier in the software life cycle.

The main stages of functional testing

Training

Holding

Training

The initial documents about the system are analyzed: functional and business requirements, terms of reference, project passport. There is also a development and approval of a test plan, test cases, coordination of project deadlines, the number of iterations, and an assessment of possible risks. The tasks of this stage are carried out jointly with the representatives of the customer.

Holding

Functional testing is carried out manually according to pre-prepared test scenarios with the entry of all found errors into the bug tracking system. If the customer does not have such a system, we can: provide a test management system at our site; to supply the customer with licenses; use the funds available to the customer; manage only office suite; put the testing process at the customer's site based on free funds.

There is a development and coordination of reports on the conducted testing with a list of detected deviations and recommendations for improving the system. If necessary, user training is provided.

Tools

Testing is managed in specialized systems.

Functional testing- this is software testing in order to verify the feasibility of functional requirements, that is, the ability of software under certain conditions to solve problems that users need. Functional requirements determine what exactly the software does, what tasks it solves.

Functional requirements include:

    Functional suitability suitability).

    accuracy (English) accuracy).

    The ability to interact interoperability).

    Compliance with standards and regulations compliance).

    security (English) security).

Security Testing

[edit | edit source]

From Wikipedia, the free encyclopedia

Security Testing- assessment of software vulnerability to various attacks.

Computer systems are very often the target of illegal entry. Penetration refers to a wide range of actions: attempts by hackers to penetrate the system for sport, the revenge of angry employees, hacking by scammers for illegal profit. Security testing tests the actual response of the defense mechanisms built into the system to an intrusion. During security testing, the tester plays the role of a cracker. He is allowed everything:

    attempts to find out the password using external means;

    system attack with special utilities, analyzing protection;

    suppression, stunning the system (in the hope that it will refuse to serve other clients);

    purposeful introduction of errors in the hope of penetrating the system during recovery;

    viewing unclassified data in the hope of finding a login key.

With unlimited time and resources, good security testing will break any system. The task of the system designer is to make the price of penetration higher than the price of the resulting information.

Load testing of software[edit | edit source]

Term Stress Testing can be used in a variety of ways in a professional software testing environment. In general, it refers to the practice of simulating the expected use of an application by emulating multiple users at the same time. Thus, such testing is most suitable for multi-user systems, most often using a client-server architecture (for example, web servers). However, other types of software systems can be tested in a similar way. For example, text or graphics editor can be made to read a very large document; and the financial package - to generate a report based on data for several years. The most adequately designed load test gives more accurate results.

The main purpose of load testing is to create a certain expected load on the system (for example, through virtual users) and, usually using identical software and hardware, to observe the performance of the system.

Example 1:

A web service with a shopping cart functionality is designed for 100 concurrent users who follow some specific scenario (specified actions in the specified proportions):

    25 users view the item and log out.

    25 users add an item to their cart, checkout, and log out.

    25 users use the return item feature and log out.

    25 users log in and show no activity.

In this case, load testing should emulate the typical scenario of working with a web service described above in order to make sure that the system is ready for production. At the same time, performance indicators of the system as a whole or each node of the system in particular can be taken for analysis.

In the ideal case, the criteria for the success of load testing are the requirements for system performance, which are formulated and documented at the stage of developing the functional requirements for the system before programming the main architectural solutions. However, it often happens that such requirements were not clearly formulated or were not formulated at all. In this case, the first load testing will be trial(English) exploratory load testing) and be based on reasonable assumptions about expected load and hardware resource consumption.

One of the best approaches to using load testing to measure system performance is testing at the early development stage. Load testing at the first stages of the readiness of an architectural solution in order to determine its viability is called "proof-of-concept" testing.

Basic principles of load testing[edit | edit source]

Below are some experimental facts summarized in principles used in performance testing in general and applicable to any type of performance testing (in particular, to load testing).

1. Uniqueness of requests

Even having formed a realistic scenario of working with the system based on the statistics of its use, it is necessary to understand that there will always be exceptions to this scenario.

An illustration of the different variance distributions for query execution times X and Y.

When Example 1 it can be a user accessing different, unique pages of a web service.

2. System response time

In general, the system response time is subject to normal distribution functions.

In particular, this means that having a sufficient number of measurements, it is possible to determine the probability with which the system's response to a request will fall within a particular time interval.

3. Dependence of the system response time on the degree of distribution of this system.

Dispersion of the normal distribution of the system response time to a request is proportional to the ratio of the number of system nodes that process such requests in parallel and the number of requests per node.

That is, the scatter of system response time values ​​is affected simultaneously by the number of requests falling on each node of the system and the number of nodes itself, each of which adds some random amount of delay in processing requests.

4. Variation in system response time

From statements 1, 2, and 3, we can also conclude that with a sufficiently large number of measurements of the value of the request processing time in any system, there will always be requests whose processing time exceeds the maximums specified in the requirements; moreover, the longer the total time of the experiment, the higher the new maxima will be.

This fact must be taken into account when forming requirements for system performance, as well as during regular load testing.

5. Load Profile Accuracy

The required fidelity of the load profiles is more expensive the more components the system contains.

It is often not possible to take into account all aspects of the load profile for complex systems, as the more complex the system, the more time will be spent designing, programming and maintaining an adequate load profile for it, which is not always necessary. The optimal approach in this case is to balance between the cost of developing a test and the coverage of the system functionality, as a result of which there are assumptions about the impact on the overall performance of one or another part of the system under test.

Integration testing(English) Integration testing, sometimes called English. Integration and Testing, English abbreviation I&T) - one of the phases of software testing, in which individual software modules are combined and tested in a group. Typically, integration testing is done after unit testing and precedes system testing.

Integration testing takes the modules that have been unit tested as input, groups them into larger sets, runs the tests defined in the test plan against those sets, and presents them as outputs and inputs to subsequent system testing.

The purpose of integration testing is to verify that the designed units meet the functional, acceptance and reliability requirements. Testing of these designed units - associations, sets or groups of modules - is performed through their interface, using "black box" testing.

Everything types of software testing, depending on the goals pursued, can be divided into the following groups: 1) functional; 2) non-functional; 3) associated with changes.

Functional tests are based on functions and features, as well as interaction with other systems, and can be presented at all levels of testing: component or unit (Component / Unit testing), integration (Integration testing), system (System testing) and acceptance (Acceptance testing). ). Functional types of testing consider the external behavior of the system. The most common types of functional tests are listed below:

- Functional testing(Functional testing)

- Security Testing(Security and Access Control Testing)

- Interaction Testing(Interoperability Testing)

Functional testing. This type of testing verifies that the implemented functions meet the requirements, requirements specification, specifications, various other design documents, and simply the user's expectations. Each of the functions of the application is checked and all of them in a complex. All use cases are being explored. The adequacy of the stored and output data, methods of their processing, processing of input data, methods of data storage, methods of importing and exporting data, etc. are checked. depending on the specifics of the application.

Functional Tests are based on the functions performed by the system and can be carried out at all levels of testing (component, integration, system, acceptance). As a rule, these functions are described in requirements, functional specifications or in the form of system use cases (use cases).

Functionality testing can be carried out in two aspects: requirements»; « business processes».

Testing in perspective requirements» uses the functional requirements specification for the system as the basis for the design of test cases (Test Cases). In this case, you need to make a list of what will be tested and what will not, prioritize the requirements based on risks (if not already done in the requirements document), and based on this, prioritize test cases (test cases). This will allow you to focus and not miss the most important functionality when testing.

Testing in perspective business processes» uses knowledge of these same business processes that describe scenarios for daily use of the system. From this perspective, test scripts tend to be based on use cases.

Advantages functional testing: simulates the actual use of the system. Flaws functional testing: the possibility of missing logical errors in software; likelihood of overtesting.


Quite common is functional testing automation.

Security Testing. A testing strategy used to test the security of a system, as well as to analyze the risks associated with providing a holistic approach to protecting an application, attacks by hackers, viruses, unauthorized access to confidential data. Security testing can be performed both automatically and manually, including checking both positive and negative test cases. Based on three main principles- it confidentiality, integrity and availability(confidentiality, integrity, availability)

Confidentiality is the concealment of certain resources or information. Confidentiality can be understood as restricting access to a resource to a certain category of users, or in other words, under what conditions a user is authorized to access this resource.

There are two main criteria for defining the concept integrity:

1. Trust. The resource is only expected to be modified in an appropriate way by a specific group of users.

2. Damage and restoration. In the event that data is corrupted or incorrectly changed by an authorized or unauthorized user, it is necessary to determine how important the data recovery procedure is.

Availability represents a requirement that resources be available to an authorized user, internal entity, or device. As a rule, the more critical the resource, the higher the level of availability should be.

Interaction Testing. With development network technologies and the Internet, the interaction of different systems, services and applications with each other has become significant, since any problems associated with this can lead to a drop in the company's authority, which, as a result, will entail financial losses. Therefore, interaction testing should be approached with all seriousness.

Interaction Testing is functional testing that tests the ability of an application to interact with one or more components or systems and includes compatibility testing and integration testing.

Software with good performance interactions can be easily integrated with other systems without requiring any major modifications. In this case, the number of changes and the time required to complete them can be used to measure interoperability.

Considering today's chances, each Petya and Vasya can develop websites. But in this rapidly changing world of technology, how do you stay unique and impress consumers?

Guys, the key to your customer's heart is nothing but "quality". No matter how complex you create a website, quality is the only factor that drives any business and leads to the main goal - attracting customers.

Your website is a kind of Internet window that presents your business to people in the real world. Every object on your site, from site color, design, functionality that includes ease of navigation, and even content loading time, really matters.

How can you make sure that all these components have been unmistakably organized and with the utmost precision? Proper analysis and testing of functionality is an integral part of the project development cycle, where quality assurance is also included in the script.

Web developer checklist

1. Design excellence

This is where you need to look at things from your client's point of view and how they want their business to look in the eyes of potential clients. The site is a platform that provides a mirror image of their product to the target audience.

Make your design unique and at the same time make sure you don't violate your client's design concepts and specifications to get the results you expect.

2. Content management with high standards

There is no change in the good old adage “Content is everything”: it will always rule in the world of online marketing. Organized content that is also fresh, interactive, readable and understandable will open the door to your customer's heart.

Research and surveys show that users typically stay on a site for barely a few seconds, of which they spend even less time reading content. That is why it is necessary to pay special attention to this point. Only good site content will make the visitor stay on the site.

Let's discuss some points that will help you get a site with zero chance of errors.

3. Creative with common sense

The appearance of your site is like a litmus test that determines whether your site can please the audience. Therefore, it is necessary to make it attractive and at the same time not flashy.

Remember that the first impression is always the best impression!

That is why you should adhere to the following rules regarding the content of the website:

  • Smart use of space
  • Enough white space for your content to "breathe"
  • No inappropriate images
  • Good readability
  • Avoid contrasting colors and inappropriate font sizes
  • Avoid broken links
  • Mandatory cross-browser compatibility
  • Don't forget to change your Email ID from the site
  • Copyright year should indicate the year the site will be launched


4. Content is the king of the site

As already mentioned, a website is a platform that presents a business to a global audience. Remember that it's not just locals who will visit the site, but a wide range of people from different parts of the world. Be prepared to face them and meet their needs.

The kind of content you choose and how you present it really matters when you have a large audience, especially as the race to satisfy user tastes is getting tougher every day.

When time and money are spent putting together exquisite content for your site, you need to check it for quality to make sure it's relevant to your audience without sacrificing quality and uniqueness.

Here are some of the general content selection rules to follow for best results:

These are some common content practices that you need to get rid of as soon as possible, for best results:

  • Avoid spelling and grammar mistakes
  • Provide spaces between words
  • Required spaces after punctuation marks
  • Start your sentence with a capital letter
  • Check if there are any inconsistencies
  • Avoid unorganized content layout


5. Functionality

Imagine that you have recently received a beautiful mansion, but you cannot lock the doors in it. You have spent all your hard earned money on building a mansion that is open to everyone. What's the use of it? The same goes for your site. You have been working very hard on a site that is absolutely beautiful, but it does not work according to technical requirements client.

How do you hope that your customer will attract the attention of customers or potential customers with such a site? All in vain! Now stop worrying!

Here are some tips to help you with its functionality:

  • Ensure proper navigation
  • Avoid mistakes in sending subscription messages, contact information etc.
  • Provide comments on the login and registration sections
  • Check if all links are functional
  • Double Check E-commerce Features


6. E-commerce functionality

E-commerce sites are nothing more than online stores where people make purchases with a single click or touch on their smartphone. You need to constantly stay on top of trends and come up with innovative ideas that will fuel their spirit.

Creating an impression is directly proportional to the number of online users on your site. That is why it is necessary to understand what customers are looking for on such sites:

  • Short loading time
  • Possibility to delete, add, order, etc.
  • Availability of entrance and exit
  • Correct settlement of the transaction

Remember, you are not alone in your pursuit of the perfect ecommerce site and everyone else is just as focused as you are. Even increased load times can turn your customers away.

There are certain programming standards that you should start following today in order to reduce boot time to zero or a bare minimum.

Some of them are mentioned below:

  • Removing broken links
  • Focus on content
  • Image optimization
  • Large File Optimization
  • Using Pure CSS
  • PHP code optimization


7. Email

Many things can be done with Email. This can range from simply providing valuable information to huge business transactions. So, make sure that sending mail never fails. Also, don't forget to verify your email address.

8. Call to Action (CTA)

A call to action is the link between the regular content that your potential customer is interested in and a page with more valuable applications (landing page), which in turn is relevant and interesting enough to convince your visitors to fill out a short form.

CTA is one of the most proven strategies to get user attention and that is why we recommend it. First of all, make sure it works. Your call to action should really hit the spot, and it should be clear and to the point.

If it can have a contrasting color from color scheme web pages, and at the same time fit into the overall design, it will be more efficient.

Perfection is a lot of little things that are done right!

Now that we've done away with the basic building blocks of a website, let's take a better look at the other relevant factors that need immediate attention.

  • Providing Standard Confirmation Messages
  • Providing style and color combinations confirmation by mail, similar to the site
  • Mandatory company logo
  • Company name in address
  • Cross browser compatibility
  • Customizing the 404 Page
  • Select all links and buttons

Last but not least, what will make your website user friendly!

Checklist for clients

Who is the person you are designing the site for? This is someone who is going to build a business and make sales through the website, and obviously not the end user, but still the client you work for.

If you don't know what he wants, then how are you going to give him a website that is meant for his end users?

Logo Checklist

The site logo is just as important as the creation of any other site components. So when your client demands a website along with a logo, here are some things you need to work on.

  • Is the logo related to the business?
  • Does the logo fit into the site itself?
  • Will it remain in the memory of the audience for a long time?


Overall design checklist

Although, we have already discussed the necessary points of site verification, a general list is also needed when it comes to the coding part:

  • Doc format that you use on the site
  • Character set used on the site
  • Does your site implement valid HTML or XHTML?
  • Have you implemented valid CSS for your site?
  • Have you implemented any classes or ids that are not important to your site?
  • What code did you implement for your site?
  • Check for broken links! Don't ignore it, you may not know, but there could be a lot of them!
  • Site speed in terms of each page?
  • Are there JavaScript errors on your site?

That, perhaps, is all! We hope that with the help of our list you will be able to make the coolest sites!

Share