Testing practice

Creating a load test report

One of the most common questions in load testing is how to create a good test report that you would be able to present to your manager or customer. This big question actually consists of many smaller ones. What to start with? How to create the right test? What load parameters should be applied? How to interpret the results? Which numbers to look at when you browse through a long report generated by a load testing tool?

I will hardly answer all these questions and present the complete methodology in one article. This would be a long story and… it would be too boring. I know that there is a 90% chance that you really need something more simple and ready to use right away. I will simply present an example of the load testing report. A typical one, if you want.

However first of all I have to mention several steps you need to do in order to obtain the test data that you will use to create the report.

  1. Define test goals. The main difference between functional and load testing is that a load test cannot pass or fail until you specify additional conditions. You cannot test that a web site can stand load in general, but you can test that it can stand some specific load with some specific performance parameters. These requirements should be determined by the business goals.
  2. Describe test goals in technical terms. As soon as you have an understanding of what exactly you want to check in your test, you need to formalize these requirements and transform them to technical terms that can be applied in you load testing tool. You need to define the type of load, how many virtual users will run on each test phase, what is the acceptable response time, etc.
  3. Create a realistic emulation of virtual users. This is probably the most complex and important task. First, you need to divide all potential real users of your web application into different types depending on their expected behavior on the site. Second, you need to create a special script, (profile, scenario, or whatever term is used in your load testing tool for this purpose) for each type of users separately. Finally, you should make sure that they work correctly and produce consistent user sessions.
  4. Run the test. This is probably the easiest task. The only important thing to remember is that if you apply a significant load volume, you should make sure that the resources of the systems that you use for load generation are sufficient, and your load testing tool does not get overloaded itself. The same can be said about you network capability that can also limit the load volume, if you transfer significant amount of data in your test.
  5. Analyze test results. How to get valuable information from a series of digits reported by your load testing tool? This is not as hard as it seems to be. First of all you should check that the test went as expected, the load specified for each phase was really created, and there were no errors occurring because of an incorrect work of the load testing tool or your test scripts. After that it’s time to check if the tested web site worked as expected under the load: number of errors, response times, and number of sessions/requests served by second. You should check how these parameters change depending on the load volume.
  6. Isolate problems and suggest improvements. The web site can consist of several components, such as load balancer, web server, application server, database, etc. The performance of the whole system is usually limited by one of these components. This means that improving or fixing that component can result in significant growth of performance, while improving other components will not change anything. Such component is also called “performance bottleneck”. Note that this does not necessarily mean that you should completely change the hardware or reinstall something. In many cases improvement can be achieved by changing options, or fixing bugs in the application code.

Now I am ready to show what I promised from the very beginning: an example of the load testing report. Please note that it is not a general template that can be used for all cases. It is rather a simple, but most common example. Here it is.

1. Test objectives

We need to find out if the web site meets the performance requirements as specified below.

The site needs to be able to handle 20000 unique visitors per day providing the industry standard level of service in terms of response time and error rate. Average response time should be less than 5 seconds and error rate should be less than 1%.

We also expect that average number of simultaneous users on site will be about 150, during the peak hours it will grow to 300. We need to check that the site can handle this load.

2. General test conditions

The following test conditions are most appropriate to simulate the real life site usage.

  • Number of page requests per user session: from 15 to 20;
  • Average user time on site: 10 minutes;
  • User actions:

a)      browse site content, perform search (80% of all users);
b)      purchase items (20% of all users).

3. Tests performed

The following two tests have been designed and executed.

3.1 Capacity test

Test duration: 1 hour;
Load type: ramp-up from 10 to 300 users with step 30, every 5 minutes.

3.2 Stress test

Test duration: 10 min;
Load type: ramp-up from 0 to 1000 users with step 2 every 1 second.

4. Test results

4.1 Capacity test

The performed capacity test has shown that the site preserves the desired quality of service only with a limited load. When the number of users simultaneously working with the site goes beyond 160, average response time starts to grow proportionally. When the number of users is about 300, the average response time increases to 19 seconds. See the graph below.

Capacity chart

Number of active users
Active users table

Maximum server productivity in terms of pages per second: 5,5 (see table below).

Pages per second
Pages per second table

Maximum server productivity in terms of hits per second: 115 (see table below).

Hits per second
Hits per second table

Server utilization %
Server utilization table

4.2 Stress test

The performed stress test has shown that when the number of users reaches 340, the server starts producing errors. The error rates increases with further load growth. See the graph and tables below.

Stress test graph

Number of active users
Active users table

Total errors %
Errors table

5. Conclusion

The web site can experience slowdowns showing inacceptable response time in peak hours. When the load is at an average or below average level, the desired level of service is provided.

The web server resource utilization measured during the testing shows that the performance problems cannot be related to the web server hardware. We recommend to check if the database server resources are sufficient and/or increase the number of connections with the database.

67 Comments

  1. Hi Ivan,

    Thanks for the great article. Can you further advise on below?

    1. How should we decide the ramp-up load parameters values?

    2. For stress test, why do you choose ramp-up instead of 1000 fixed users?

    3. When we choose ramp-up load, assuming max is 250 users, start & completion settings is to complete 250 user sessions before test end, but among the columns of Number of Active Users in test report, we only see maximum of 87 users, what could be the possible reason? Is that because of error occurs?

    Successful sessions: 242
    Failed sessions: 8
    No. of Active Users: 20 | 40 | 40 | 60 | 60 | 80 | 87 | 70 | 37 | 7
    Total Errors (%): 0 | 0 | 0 | 0 | 0 | 0 | 1.77 | 1.61 | 0 | 0

    • 1. This depends on your web site. Usually you start from a very small number of users (like 1 or 10) and run to the number of users that you expect to visit your web site at the estimated peak load. If you do not have such estimation, you can simply try achieving some round number, like 100. If the site responds well to such load, you can conduct next test with load from 100 to 1000 users, and so on.

      2. Because we want to know the number of users on which the site starts producing errors.

      3. In WAPT each virtual user executes its sessions one by one. As soon as a session is completed, it starts the next one, and so on. So, each virtual user can execute several sessions during the test. At any test moment the number of virtual users is the number of concurrent user sessions. In your example, some users executed several sessions and they all completed total 250 sessions much sooner than the load would have reached 250 concurrent users.

  2. Hello,

    It is good article, nice to and interesting to read it.

    Hope u’ll be posting more number of articles.

    Thanks
    venky

  3. Hi, thanks for article.
    I have a question for this test process. What you use for test? Your custom code, or a tool?

  4. Hi,
    I am new to WAPT tool.
    Please explain me about “Ramp-Up” load scenario. I am bit confused at fields like “From”, To”, “Users with step” and “Every”. How we can give the values for it.
    For Example, If I want to test a web application with 2000 users, start with 5 users. Please give me all the configuration details clearly.

    Thanks,
    IndianPrince

    • Each virtual user executes sessions one by one. As soon as it completes a session, it starts the next one, and so on until the test is finished. So, each virtual user emulates several successive real users and can execute corresponding number of sessions during the test. At any moment the number of active concurrent sessions is equal to the number of virtual users. The more users you add, the greater load will be created against the web site. So, if you use the “ramp-up” option, in the beginning of the test you have small number of users, but it can grow throughout the test. Comparing performance characteristics (such as response time) for different test phases you can check if they degrade with higher load.

      It is up to you how to specify the parameters for the growing test load. For example, you can make WAPT add 5 more users every 10 seconds. So, the load will grow from 5 to 2000. Note that it will take 4000 seconds to get to the maximum specified load in such case, so you should adjust the total test duration accordingly.

  5. Great article! Thanks!

  6. Hi Ivan,

    I am new to WAPT tool,

    I need create a scripts for below scenarios,

    could you please give me a brief step by step instructions on this,

    Scenarios:
    1.1000 concurrent blank searches
    2.1000 Job seekers register

    Thanks
    Manju

  7. Hi Ivan,

    Hope you are doing good,today i am trying load scenario for Gmail registration.

    Scenario:

    Gmail registration

    Load user: 3

    How i am doing: first recording for single registration > then changing the setting to 3 users.

    Time settings: ramp up: 3 users + 3 mins + 30 sec for every user

    I need to run for 100 users, so i did paramatrization (added 100 users (100 email id + 100 password))

    Here our question is after running it will get 100 registration(Received emails for 100 new ids?) or it just simulate the 100 users load.

    Please suggest regarding the above scenarios.

    • Hello Manju,

      First of all I would not recommend to run load tests on public web sites (unless you are asked to do this by the site owner), because most probably they will simply ban your IP address as a result. If you need to experiment with something, try running very small number of users.

      If you perform correct parameterization of your profile, the result of running it will be a new registered user. If you run several virtual users, this will result in several new registrations. Each virtual user executes sessions one by one. As soon as it completes a session, it starts the next one, and so on until the test is finished. So, each virtual user emulates several successive real users and can execute corresponding number of sessions during the test. At any moment the number of active concurrent sessions is equal to the number of virtual users. The more users you add, the greater load will be created against the web site. So, if you use the “ramp-up” option, in the beginning of the test you have small number of users, but it can grow throughout the test. Comparing performance characteristics (such as response time) for different test phases you can check if they degrade with higher load.

      Note however that all public web sites also have protections against robots. They require to enter capcha text, for example, when you try registering a new user. Unfortunately it is not possible to overcome this with WAPT, because it is also a robot. This is another reason why you should better practice on your own web site where you can turn off such protection for the testing time.

      Regards,
      Ivan

  8. Hi
    I am a beginner in test.I wana to know how you calculate test parameters in capacity test and stress test? And I have to work with jmeter. Is the tool easy for beginner?

    Thanks

    • Hello,

      Such test parameters as the number of virtual users should be determined by the business goals of your web site. For example, if you expect that it will be normally visited by 1000 users concurrently (in peak hours), you can stress test it with 2000 users to make sure that even in case of 2 times bigger load it will stand it.

      As for JMeter, I think that this tool is good because it is free. It is not supported and not very easy to use for a beginner, so I would definitely recommend WAPT, if you can afford it.

      Regards,
      Ivan

  9. HI Ivan,

    Thanks for Your good suggestion.
    We will use WAPT to our own site,

    Could please explain detail How to Parametrization for 10 new register users So that it will be usefull to create the test for More users.

    Also suggest the settings for the above scenario.

    Prefer function: Order list or Load different users from text file.

    • Manju,

      The “Ordered list” function takes values from a list one by one. Each new value can be applied either for each new session or for each new virtual user. In the latter case all sessions of that users will share the same value. The list can be either specified directly in the dialog where you edit function parameters, or taken from a file that you choose in that dialog. I suggest watching the following demo clip to get more familiar with the parameterization process: http://www.loadtestingtool.com/quick-start-guide.shtml

      If you have any further questions related to your specific case, please send your virtual user profile (.wpp file) to support@loadtestingtool.com. Please also attach your verification log. To save it, verify the test and choose “File | Save logs” from the WAPT menu.

      Regards,
      Ivan

  10. Hi Ivan,

    One small question. Your tool is for Web Sites….Is there any other tool for the same job BUT for Web Applications? Because i couldn’t find any!

    Regards,
    Teo!

    • Hello Teo,

      In fact, the terms “web site” and “web application” have the same meaning these days, because any web site that includes dynamic content has an application running behind it. WAPT can be used to test any application that has a web interface, which means any application that uses HTTP(s) protocol for communication between the client and server. If you have any doubts about a specific one, please let me know how can I take a look at it and I will further suggest on that.

      Regards,
      Ivan

  11. baner baneri

    Hi , first of all thank you for the good suggestions and materials.
    I am new in capacity and load testing. I have told to test a system which consist of different servers, web application server, gateway server , a queue server and DB server.
    The main focus is to see how increasing the load on each server would affect the CPU , memory and other factors on each server. basically although the system is a web application but the database get the data from gateway and the web application is actually just used to browse the data in the database.
    right now we want to do load testing on the part that read the data, queue it and write it in to the database. I need to simulate the input data and monitor the CPU, memory …. of that particular server and also the bandwidth of its output (which goes to database) and find the capacity of the server.. how much data it can handle (read and process and send to DB) and from which point it gets slow and what is the bottleneck at that stage…
    So I would like to know if you have any good suggestions for me , Is there any tool available to do and monitor these kind of stuff and how we can analysis the data out of them, for example zabbix can monitor some stuff but how I have to analyze those data and get meaningful results.,..
    Thank you so much for your help

    • Hello,

      This looks like a typical load testing project for a rather large and complex web application. I would recommend using the Pro version of WAPT, because it can monitor performance parameters directly from one or several servers through WMI and SNMP interfaces. If you apply version 3.1 (which is currently in beta state, but fully functional), you will be able to monitor any server parameters available through SNMP.

      Note also that in any case WAPT creates load by emulating real users working with your web application. It cannot apply load directly to a separate system component, however you can create different types of virtual users. They can perform different types of activity, which will load system components in various ways.

      If you have any specific questions on WAPT usage, please don’t hesitate to contact me through this blog or through our support email: support@loadtestingtool.com.

      Regards,
      Ivan

  12. Hi Ivan. I have a question about realistic scenario in browsers and Wapt. Browsers connect to server, starts downloading the web page,and starts downloading embedded URLs like javascript, CSS and image files – static content (for this purpose browsers create more threads, each of which opens a new connection and sends requests in multiple concurrent connections). As result, the page loading time in browser is less then in the case when http requests (for downloading css, js ,…) are sent sequentially by some load tool. Does Wapt allow to simulate such scenario? Because if a page contains many static content, time for this page to load can be very overestimated if load tool does not allow to simulate real browser behavior and such important metric as time for page to load can not be calculated

    • Hello Taras,

      Starting from WAPT Pro 3.0 and WAPT 8.0 we have an option to create several connections for each user session. You can change this option in the profile properties. One connection is used by default.

      Note that this reduces the performance of the tool and increases memory consumption, so with 10 connections per user you will be able to create less virtual users than with a single one.

      Regards,
      Ivan

  13. Tushar Talware

    Hello,

    As name indicates WAPT as a Web application testing tool.
    Can we perfrom testing on Desktop applications using WAPT?

    Thanks
    Tushar

    • Yes, if your desktop application communicates with its server through HTTP(s) and it can do this through a proxy, you can test the server with WAPT. Note that WAPT only tests the server part in any case, because it fully emulated the client activity.

  14. We are using load balancing mechanism, In live servers version 1 web application is running in version 1 application domain.I want to test Version 2 Web application in version 2 app domain Using WAPT tool.

    If i will create 10 users & do performance test with WAPT tool Version 2 application ,is it will effect to Version 1 Live web application users and network traffic.

    My question is simple I am having 2 applications one is live another one not live in same server.If i will test not live application using WAPT tool,is it effect to live server application users & network traffic ?

    • Hello,

      The answer to your question depends on the implementation of your web applications. For example, if they share the same database server, the performance of one application will be affected if you test another one.

      Regards,
      Ivan

  15. Hello Boss,
    I am new to WAPT tool, Can u please any one, how to validate the below logic.

    Load test 200 concurrent users running normal business process scenarios (level 1, level 2, listing, assessments, dashboard, workflow, etc) for 1 to 2 hours elapsed time, continuous running ramping up from 0 to 200 users in 20 minutes incrementing load by 10 new users every minute, running full load for ½ hour to 1 ½ hours and then ramping down 10 users every minute. Response time between pages < 3 seconds. The system should not crash and the system resources should not be consumed more 100% for more than 1-2 minutes at any time during the entire test. The test should be repeatable with the same normal business script.

    • Hello Boopathi,

      First of all you should create a profile for each type of virtual users. To do this you can simply record a typical session using a browser and WAPT recorder. After that you can specify the load parameters on the “Test Volume” page in WAPT or WAPT Pro.

      Each virtual user executes sessions one by one. As soon as it completes a session, it starts the next one, and so on until the test is finished. So, each virtual user emulates several successive real users and can execute corresponding number of sessions during the test. At any moment the number of active concurrent sessions is equal to the number of virtual users. The more users you add, the greater load will be created against the web site. So, if you use the “ramp-up” option, in the beginning of the test you have small number of users, but it can grow throughout the test. Comparing performance characteristics (such as response time) for different test phases you can check if they degrade with higher load.

      This is a very general description of the usual approach.

      If you have a specific question, please let me know. You can post it here or send to support@loadtestingtool.com.

      Regards,
      Ivan

      • Boopathi

        Thank you so much Ivan… I ill try based on your points mentioned above.

        One More question:
        When i am seeing the report, still i am confused abt the main difference between the Session & Users.

        • A session is a single execution of a profile.

          Each virtual user executes sessions one by one. As soon as it completes a session, it starts the next one, and so on until the test is finished. So, each virtual user emulates several successive real users and can execute corresponding number of sessions during the test. At any moment the number of active concurrent sessions is equal to the number of virtual users. The more users you add, the greater load will be created against the web site. So, if you use the “ramp-up” option, in the beginning of the test you have small number of users, but it can grow throughout the test. Comparing performance characteristics (such as response time) for different test phases you can check if they degrade with higher load.

  16. Boopathi

    Hello Ivan,

    Can u please explain, what are all the features are not supported in WAPT pro trial version (30 days).

    What are all the menus,features are not available in Trial version (30 days).

    Thanks,
    Boopathi

    • Boopathi, the only limitation of the trial version is the number of virtual users it can generate (20). In all other respects it is fully functional, so all features are the same as in the full version.

      • Thank you so much for you timely help Ivan…

        Is there any option for Ramping down.

        Let take example for Outoff12 users, increasing 2 virtual users for every 2 sec),, after that decreasing 2 VU for every 3 sec…

        • There is no such feature as ramping down, but you can use a workaround. You can use the “Stop user” operator to reduce the number of active users. So, you can check some condition (like current time) and stop some users this way reducing their number.

  17. Thanks a lot Ivan… you r my boss for WAPT tool

  18. Once again thank u so much Ivan…

  19. Boopathi

    Hello Ivan,

    we are able test the IOS applcation in WAPT tool by using Ipad..

    Is it possible.

  20. Hello,

    Is it possible to test the IOS application in WAPT tool.
    can u pls explain any one..

  21. Ivan,

    I am just started using this tool, it is quite easy to
    operate and replay, but i have query that while load testing does it really load data into the applications back end database or it just replay with defined virtual users.

    I am recording the scenario by accessing through browser of given URL, does it really meaningful to get the proper result as i did not do any configuration just record and replay with 20 users by ramp up 1 user per 10 sec.

    Regards
    Virendra

    • Virendra,

      If you just record and replay a user session, WAPT will repeat same sequence of HTTP requests. It will handle cookies and hidden form values automatically, so in most cases this will emulate correct sessions.

      However you may want each virtual user to use its own credentials. Your session may modify server data and you need to use session-specific values, because initially recorded ones cannot be reused every time. In such cases you need to parameterize the profile after recording.

      Regards,
      Ivan

      • Ivan,

        Thanks for your kind reply, but still i did not get the answer whether the data is loaded into to database or not ? while replaying for 20 user, please do clear my query.

        Regards,
        Virendra

        • Virendra,

          WAPT does not work directly with the database. It performs the emulation of application users. If such emulation is performed correctly, your application will work with the database as it normally does. As a result you should see the corresponding load on the database.

          To make your profiles work correctly you may need to parameterize them. That is what I tried to explain in my previous message. If you have any doubts regarding this requirement, please send your virtual user profile (.wpp file) and its verification log to support@loadtestingtool.com. I will take a look at the files and will suggest if you need to do any additional work to execute your test.

          Regards,
          Ivan

  22. Dear Ivan,

    Hi

    After creating script when doing “Verify Test” a dialog appearing saying “Cannot create the folder for log files” can you please provide any workaround asap.

    Regards,
    Virendra

  23. Dear Ivan,

    I have installed WAPT Pro in my local machine and load agent installed (started already) in remote machine i.e. VM (Virtual Machine)then above mentioned problem occurring.

    Regards,
    Virendra

    • Hello Virendra,

      Please make sure that the folder specified for log files in Settings on General tab is available for writing. You can also change it to any other folder.

      If the problem appears on the agent system, please try to chnge the folder for test data files in the Load Agent Manager.

      Regards,
      Ivan

  24. Hi Ivan,

    I am testing ADF [10g] appl’n but when recording script if i click any button image or select LOV (List of values) image then system gets hang by continuous blinking and then after i have to do “End Task” from task manager & restart tool but problem remain same.

    Regards,
    Virendra

  25. Dear Ivan,

    I am checking two forms for which output of one form is input for other form then how to parameterize as output of form one is “transaction no” unknown.

    How to check performance in end-to-end scenario. i am using inventory flow as follows:

    1. purchase order (on save number generated)
    2. Goods Receipt notes (requires PO number reference )
    3. Goods Receipt Posting

    Regards,
    Virendra

    • Hello Virendra,

      You can extract the required value from the server response to a variable. This is done on the “Response processing” tab for the corresponding request. In the next request you can use that variable containing “transaction no” instead of the initially recorded value. So, in each emulated session that value will be different and will be taken from the page received after posting the first form.

      Same way the parameterization can be done on subsequent steps. Unfortunately this process is application-specific, so I cannot provide more exact instructions on how to do this in your specific case. However if you want, we can work on this for additional charge and deliver ready-to-use parameterized profiles for your application. Please let me know if you are interested in this service.

      Regards,
      Ivan

  26. Dear Ivan,

    When checking script before run test, i am getting “500 internal server error” , how to fix this issue as i did not find its root cause.

    Regards,
    Virendra

  27. Hello Ivan, thank you so much for this article, it is the most useful I found about WAPT, i have WAPT 8.5 PRO installed, i am new on QA world but i love to learn.
    I can record and login to my web app with no problem, but i have to login with 2 different users and i can’t , in my web the user name is not in the url, is in the parameters section, so i have created a variable to handle this,it works with the first user but when i reviewed the log to see why the secon uses cannot login, i saw the first user set a cookie and the second don’t , i don’t know why, both users has the same password,and are sending the password correct.
    Please help me, i would like send you screenshots if you want.

    Thank’s a lot!

    • Hello Miguel,

      Please send your virtual user profile (.wpp file) to support@loadtestingtool.com.

      Also, please run the 2 sessions test with 2 users with full logging enabled. After the test is completed, save the logs (“File | Save logs” on the menu). Please also send the log files to the me to the above address. This will let me further suggest on the problem.

      Regards,
      Ivan

  28. Hi , I solve the problem!! it was that, the encrypted password are not the same even if the users has the same password, i retrieved the real password of database and it works excellent!!!

    thanks !!!

  29. Hello,

    Thanks for the great article. I have question about sentence you have mentioned in the article above:

    1- Maximum server productivity in terms of pages per second: 5,5 (see table below).

    2- Maximum server productivity in terms of hits per second: 115 (see table below).

    How did you find “the Maximum server productivity” from the both tables (pages per second, hits per second).

    Thanks in advances,

    • Hello Sarah,

      Possibly this is something I have not mentioned exactly in the article… Further test phases do show higher numbers for pages/hits per second, however we only consider stages with acceptable response time. As mentioned earlier in the analysis, it starts to grow significantly after 30:00.

      If you do not consider this, the best performance numbers would be 5.93 and 122 respectively, which are not much higher though.

      Regards,
      Ivan

  30. Hi,

    I ran a stress test for this web application but I have the same result all the time. All sessions fails. Can you tell me what should I have to do.

    I am new with WAPT and I don’t know if I am doing something wrong.

  31. thanks for sharing, it is very useful

  32. Hi

    I am running load test for my web application I have some clarifications..Can you answer the below questions?

    1.What are the major parameters to be considered while doing performance testing for an web application?
    2.What should be the min/max range of CPU usage,Memory and Response time?
    3.How to conclude that a certain amount of values(measurement values) is good enough for uploading a file?
    4.How to calculate CPU usage,Memory and Response time of an application(Which one should increase and which one should decrease if we upload three different volume of file say for an example:file 1 – 50 records,file 2 – 500 rec and file 3 – 1000 rec.) the above three param should increase or decrease?

    Regards,
    Kavitha.M

    • Hi Kavitha,

      Please find my answers below.

      1. This is a complex question. In short, first of all you need to check if the test is executed correctly. After that you can check error rate and response times for various requests. Other parameters are used to troubleshoot specific problems.

      2. CPU should never go to 100% for longer than few seconds. Response time requirements depend on your business goals. In some applications a 5 second response time may be considered acceptable. In other applications this is way too long. You should also pay attention on how that time depends on the created load. Ideally it should not change significantly within the range of normal expected load.

      3. When you test file uploads, you should rather pay attention to the amount of data sent per second. Make sure that you have sufficient bandwidth for such testing.

      4. Greater load usually increases CPU usage and can also increase response times, however the exact dependence is application-specific. In any case your goal is to check that when you create realistic load, any parameters that affect user experience when working with the application stay within the acceptable range. To check that you can also conduct manual testing while the application is under load.

      Regards,
      Ivan

Leave a Reply to Teo Cancel

Your email address will not be published. Required fields are marked *

*