Tag Archives: QA

Software QA Engineers

QA Persona

Does designation define personality or  personality defines designation ?  Confused? Either ways you think, you are absolutely correct. Every professional in this world has some sort of personality that differentiates him/her from the crowd. The reason for this may vary, either they have made themselves to appear so or their profession demands it. In this modern IT market, software QA engineers are the demand of the growth made in this field. They need to possess most or all of the following traits to be highly successful in this field.

“WHY” factor

QA TestingI strongly believe that ‘if you have the strong sense of WHY, you can create a beautiful result. Always possess a mind of valid WHY, you should not merely accept anything served in your plate. Try always to clear your WHY card, if that is done you can come up with productive ideas and solutions. You should not pretend as if you are through to any concepts or knowledge transferred, just to leave an fair impression. You should understand that you are here to add value to the project. Ask yourself until you get familiar with every aspect of the project you are assigned with. Remember this simple WHY as the capability to unearth a whole lot of information.

Assumptions:

QA Testing

A software QA engineer never assumes anything while performing his task. So he never make an ASS out of U and ME because that is how it is spelled. Since childhood we are used to assume some facts in order to proceed with the problems, even the world’s greatest theorems are formulated on assuming some facts. Let me figure out the things a layman assumes while filling up a simple registration page

  • Name text box should contain only alphabets
  • Mail ID should be in a proper format([email protected])
  • Fields marked with asterisk(*) are mandatory to be filled.
  • Address line should be separated by using comma or space.

A layman simply applies the common sense which is still not common to find. But just think if the application accepts invalid email ID, mandatory fields can be left blank or if the date of birth accepts future date and many more. This all can lead to troublesome situations. A product is made for the market and you cant expect that he will have the required common sense to use the product. Thus a big question mark arises for the quality of the product, you need to put yourself into various categories of user’s shoes so that you can test the product in all aspects.

Down to Earth

A software QA Engineer is supposed to be unpretentious, approachable and genuine. S/he understands that s/he is the voice of the end users. S/he is here to make the software better. There are often situations when s/he needs to go against a team of developers. If s/he stops reporting a set of bugs with a assumed notion that development team wont put an eye upon them, then it may lead to troublesome situations in a long run. So in order to deal with such situations he needs to possess strong convincing skills so that he can convince the developers and sometimes clients for the changes to be made in the project.

Eagle’s eye

QA TestingThis analogy works well with software QA engineer,he needs to possess eagle’s eye to become super star in the field of Quality Assurance. Many a times most severe bugs surpass our eyesight if we just have an overlook of a product or application and thus risking the product’s quality. As an QA engineer we need to deeply investigate the project in every aspect. We need to uncover the hidden bugs which can have an severe impact later on if it is not fixed in the initial phase of the development cycle. So he needs to be in proper sync with the development cycle so that bugs cannot be carried forward.

Strong Communication:

A software QA engineer needs to communicate with various individuals involved in software development cycle in day to day agenda. S/he is involved in communicating the bugs discovered, the enhancements required etc not only to the development team but also to the client. In his day to day curriculum he needs to prepare Test Cases, File and report bugs. So he needs to be strong in written communication. If in any situation there is a deviation from this then it may lead to Communication Gap and thus ultimately risking the product’s quality.

These are the traits which I find most important to be there in an QA engineer. S/he is supposed to wear several hats while working. S/he is the Quality manager, customer service, tech savvy user, non tech savvy user, angry user, lazy user and last but not least the quality assurance engineer. Many a times s/he has to change her/his thoughts mid-stream, and adopt a different point of view in order to get the job done properly. To most extent a company’s brand solely lies upon her/him. So, above all s/he has to work keeping in mind the company’s image.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Why Do You Do Things You Do?

Few things to consider before testing any application

I have a wall-pWhy Do You Do Things You Do?aper on my desktop which says: – “Why Do You Do The Things You Do” which forced me to write something like this which i feel should be considered before testing any application: –

1. Learning: – Analyze your test results thoroughly. Do not confuse yourself with ‘pass’ or ‘fail’ but finding the root reason of ‘fail’ or ‘pass’ will give you an idea for the solution of the problem. Testers knowledge increases by sending solutions for the problem

2. 100% of anything is not possible so having 100% test coverage is not possible but we can try to touch 99% of perfection.

Continue reading Few things to consider before testing any application

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

18 things to keep in mind while testing any application

In the world of software QA testing, mastering the best practices is the key to success. This article presents 18 essential tips for QA professionals. From thorough test result analysis to maximum coverage and negative scenario testing, it covers a range of critical aspects. It emphasizes the importance of dividing applications into modules, early test case preparation, and involving testers from the start. The significance of regression testing, performance testing, and thinking beyond requirements is highlighted. Effective communication, prioritization, and continual learning round out the best practices, ensuring QA testers excel in their field and deliver high-quality software products.

1) Thorough Analysis of the Test Results:
As a software QA testing professional, it is crucial to go beyond reporting bugs and provide a comprehensive analysis of the test results. Error logs can reveal valuable insights into the nature and root causes of defects. By including this analysis in the bug report, testers make it easier for developers to understand and address the underlying issues. This not only expedites the bug-fixing process but also fosters effective collaboration between testers and developers, leading to improved software quality. problem.

2) Attain Maximum Coverage:
While achieving 100% test coverage may be impractical, testers should strive to cover as many combinations and scenarios as possible. By employing a systematic and strategic approach, testers can maximize test coverage. This involves identifying key functionalities, critical paths, and representative data sets to ensure that the most critical aspects of the software are thoroughly tested. Additionally, testers can leverage techniques such as equivalence partitioning and boundary value analysis to optimize coverage and prioritize test cases.

3) Divide and Conquer:
To achieve maximum test coverage, it is beneficial to divide the application into smaller modules and write separate test cases for each module. This approach facilitates focused and detailed testing of individual components, ensuring comprehensive coverage across the entire system. By breaking down the testing effort into manageable units, testers can effectively address complexities, identify defects, and maintain a high level of quality throughout the software development lifecycle.

4) Emphasize Negative Scenarios:
In addition to testing positive scenarios, it is crucial to include test cases for negative scenarios or invalid conditions. This ensures that the software behaves correctly when exposed to unexpected inputs or error-prone situations. By deliberately testing edge cases, boundary conditions, and invalid inputs, testers can validate the system’s robustness, error-handling capabilities, and adherence to specifications. Thorough negative testing helps uncover vulnerabilities and ensures that the software remains stable, secure, and user-friendly in all scenarios.

5) The Right Mindset
Approach QA testing with the mindset of discovering defects and identifying areas for improvement. Instead of assuming the software is defect-free, maintain a critical perspective and actively seek out potential bugs. This mindset encourages a thorough examination of the software and motivates testers to conduct comprehensive tests, resulting in higher-quality products. A vigilant and inquisitive approach to testing helps uncover issues that may have otherwise gone unnoticed, promoting a culture of continuous improvement and defect prevention.

6) Early Test Cases preparation :
To optimize the testing process, it is beneficial to start test case preparation during the analysis and design phase. Involving testers early on enables a better understanding of the requirements and facilitates the creation of comprehensive test cases. By actively participating in requirements discussions, testers can gain insights into the system’s intended functionality, identify potential test scenarios, and ensure that test cases align with the expected outcomes. Early test case preparation contributes to improved test coverage and enhances the overall effectiveness of the testing effort.

7) Ready with Test Cases before the completion of development :
Rather than waiting for the completion of development, testers should aim to have test cases ready in advance. Providing developers with test cases during the development process allows them to analyze and validate their work against the expected outcomes. This proactive approach enables early defect detection, smoother collaboration between testers and developers, and reduces rework efforts. It also enhances the overall development process by ensuring that quality considerations are integrated from the outset.

8) Address “Regression” effectively:
Regression testing plays a critical role in ensuring that modifications or enhancements to the software do not introduce new defects or cause regressions in existing functionality. By including regression test steps within test cases, testers can perform quick regression checks during system testing itself. This approach saves time and effort by identifying and addressing regression issues early on, minimizing the risk of functional regression and maintaining the stability of the software.

9) Test the “Performance”:
For applications where response time is crucial, thorough performance testing is essential. Testers should design and execute performance tests to assess the application’s behavior under various load conditions, stress scenarios, and unfavorable environments. By simulating realistic workloads and analyzing performance metrics, such as response times, resource utilization, and scalability, testers can identify performance bottlenecks, optimize system performance, and ensure a seamless user experience.

10) Leave full spectrum Testing to QA:
To maintain objectivity and ensure a fresh perspective, it is generally advisable for testers not to test the code they have developed themselves. When individuals test their own code, there is a higher likelihood of overlooking mistakes or biases due to familiarity. Instead, encourage collaboration among developers and testers, enabling independent verification and validation of the software. This approach promotes rigorous testing and helps identify defects that may have been overlooked by the developer.

11) Think beyond Requirements:
While testing based on specified requirements is essential, testers should also explore scenarios that may not be explicitly mentioned in the documentation. By thinking creatively and applying domain knowledge, testers can identify potential risks, edge cases, and scenarios that may not have been considered during requirements gathering. This broader approach to testing helps uncover hidden defects, enhances software robustness, and contributes to a more comprehensive testing strategy.

12) Leverage Past Experiences and Data:
Learning from past experiences is invaluable in software QA testing. Testers can refer to historical data, statistics, graphs, and previous test results to identify defect-prone areas, determine common patterns, and allocate testing efforts accordingly. By leveraging this knowledge, testers can focus on critical areas, allocate resources effectively, and adapt their testing approach based on past trends and insights. This data-driven approach enhances the efficiency and effectiveness of the testing process.

13) Continuous Learning:
The field of software QA testing is continuously evolving, and testers should actively seek opportunities for learning and skill development. Throughout the testing process, testers encounter new terms, concepts, and technologies. Keeping a record of these learnings and documenting them in a personal knowledge base helps build a repository of valuable insights. These learnings can contribute to the preparation of test closure reports, facilitate knowledge sharing, and ensure continuous improvement in testing practices.

14) Early Involvement of the Testing team:
To achieve optimal results, it is advisable to involve testers from the early stages of the software development lifecycle. Engaging testers during requirements analysis and design phases allows them to gain a deep understanding of the application’s functional and non-functional aspects. This early involvement facilitates proactive test planning, identification of potential testing challenges, and the formulation of effective testing strategies. By participating in requirements discussions and design reviews, testers can contribute their expertise and ensure the development process is aligned with quality goals.

15) Share Best Practices:
To foster a culture of excellence and continuous improvement, testers should share their best practices with other QA testing professionals. By sharing insights, techniques, and lessons learned, testers can contribute to the growth and development of the testing community. This exchange of knowledge promotes collaboration, inspires innovation, and ensures that industry-wide best practices are shared and implemented consistently.

16) Effective Communication and Collaboration:
Testers should actively engage in discussions and maintain effective communication with developers, business analysts, and other stakeholders. Direct interaction helps clarify requirements, resolve conflicts, and ensure that everyone is on the same page regarding the expected behavior of the software. When conflicts or misunderstandings arise, timely face-to-face discussions or written communications (such as emails) should be used to address and resolve them. Effective communication fosters collaboration, reduces misunderstandings, and ensures a shared understanding of quality objectives.

17) Prioritization and Risk Management:
To optimize testing efforts, testers should prioritize their work based on risk analysis and project constraints. By identifying critical functionalities, high-risk areas, and potential showstoppers, testers can allocate their resources effectively. Prioritization ensures that testing efforts are focused on the most critical areas, reduces the risk of major defects slipping through, and facilitates risk-based decision-making throughout the project lifecycle..

18) Effective Bug Reporting:
Writing clear, concise, and detailed bug reports is crucial for effective communication between testers and developers. A well-crafted bug report includes not only the symptoms and steps to reproduce the bug but also provides the impact of the bug on the application. Testers should analyze the bug, include possible causes, and provide any additional information that aids in reproducing and fixing the issue. Well-documented bug reports expedite the debugging process, enable efficient collaboration between testers and developers, and ensure that issues are resolved accurately and promptly.

By implementing these practices, software QA testing professionals can enhance their effectiveness, improve the overall quality of the software, and contribute to the success of projects.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
ISQTB Certification

Tips for ISTQB Certification Exam

ISQTB CertificationWhen we think of certifications, most of us think that “Do I really need a certification?”, “Is it worth putting the labour and money(a good amount most of the times) for just a piece of paper from some XYZ organisation?” , “Will it help me at a later stage of my career?” These thoughts flood sometimes our brains so much and leave us so confused that we take a lot of time only to decide that whether we should go for a certification or not, leave the preparation part aside.

All of us during our careers might have surely felt the need of certification in some way or the other. The need may be as simple as gaining more knowledge or as complecated as the determination to become one of the best certified resources available in the field.

Continue reading Tips for ISTQB Certification Exam

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

I AM A BUG

BugHello folks ! Today I am going to tell you a story of three friends …. Yes you guessed it right, one of them is me . All three of us were a gang of notorious beings – blocking a code here, hiding a window there, disabling a button for the poor user or crashing the application a few times ! But we were living happily in our world until came in the big monster ‘The Tester’. Oh what a sweet fellow to begin with. He entered out territory with a gentle smile, its only later did we realize that he captured every corner of our house. He specially looked for the crevices and deep holes. God ! …. how difficult our survival became. Every morning when he came, we tried to hide ourselves and pray for the evening to come so that he would leave for the day. But how long could we, the tiny creatures survive this big bad monster and one day the inevitable happened and our lives changed forever.

Continue reading I AM A BUG

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Attending Asia’s Biggest Software Testing Conference

Software Testing ConferenceThis was really a nice opportunity for me to attend a ‘International Software Testing Conference’. As a ‘Software Tester’ this is really great forum to meet to all great software testing experts and muster knowledge and expertise from them. This is really a huge canvas to expand our network for knowledge concerns. We came across this international event, & finally two of us were selected for the conference.

We zipped our baggage and flew to Bangalore on 11th May 2011 to attend the conference on 12th and 13th May 2011. On 12th May 2011 we had reached the conference spot with vibrant curiosity which was at ‘Hotel The Chancery Pavilion, Residency Road, Bangalore, INDIA’ for the quest of knowledge.

Attending The Software Testing Conference

We completed the registration process successfully and entered the conference hall. At 9 AM the conference just started with a welcome note. After the welcome note we were given with some highlights of the events for that day.

So this way the conference just started with a huge a surprise. On 12th first event was a KEYNOTE by Rob Lambert, Software Testing Club, UK. “Narrowing the Gap between Requirements and Testing: Feedback Loops, Agile and Communication”. Rob was explaining about the Agile process, and gap between requirements and testing. In normal testing life cycle we follow certain standards about writing testcase and executing the testcases in real time. Which takes a lot of time. But Rob explained that we don’t need
to bother about writing all the test cases where we can make a checklist and only need to check them while testing in agile process. Well some debates were there on this concept but at last we were able to understand to the importance of the process which was explained by Rob. I spoke to Rob about this concept and got some concepts cleared about agile software testing and methodology in real time testing.

The second event was “Define and Build Enterprise Automation Framework”, Speaker(s): JayaKrishnan Sashikumar & Preeth K P, Infosys. In this event they explained their own enterprise automation framework. Which was a requirement in of their projects. They were just explaining the architecture and model of the framework.

“Delivering Business Value through Test Automation” Speaker: Maruthi Sivakumar, AppLabs was the third event. Where MR Marithi Sivakumar was explaining about benefits of Test Automation and how test automation can help manual testers to do their job in better way so that the repetitive task can be done within less human interaction.

After three consecutive events we had a small energy break. And after the energy break the fourth eventjust started.

The fourth event was a KEYNOTE by Julian Harty, eBay, UK. “Pushing the boundaries of User Experience Test Automation”. Julian was explaining about the user experience test automation. Now a days usability is the most important factor for all kinds of application. So Julian was explaining about the ‘User Experience’, and ‘Usability’. How to automate Usability testing while observing the user experience. I had a long discussion with Julian about the ‘User Experience’, ‘Usability’, and ‘User Interface’. In the end I got my doubts clarified by Julian.
The fifth event was “Test Automation Rule Radial Hybrid Framework” Speaker: Velu S. P, IBM. Mr Velu has created his own Framework for test automation for his current project testing. After this there was a lunch break.

The sixth event was “Accelerating Regression Test Automation using Ready-to-use Test Automation Framework” Speaker(s): Chandrashekar S, Pallavi Jain & Vidyadhara C.A, Infosys. In this event the speaker has illustrated how test automation helps in regression testing. The seventh event was “Robust Automation Framework using Database for Test Data” Speaker(s): Sriharirao
Kuchi and Merral Crasto, IBM. In this event the speakers has shown how to use database for data driven testing. Instead of using a flat file or excel sheet for data driven testing they have just explained how database can be used for this purpose and how it is helps as compared to the other file formats which is very very dynamic in nature.

After this we had a small tea break. And after the break we had a Plenary Session by Pradeep Soundararajan, Moolya Software Testing, India “Achieving Personal Excellence as a Tester”. This session was really interesting where Pradeep was explaining what should be the true nature of a software tester. How a ‘Software Tester’ should be in ideal form. How to gain knowledge in Software Testing, and how to communicate with other testers and software testing experts all around the globe. Pradeep has suggested the ideal approach for testing and test management.

“Data Driven Automation Testing of Web Application using Selenium” Speaker(s): Navaraj Javvaji, Anand Sathiyaseelan, UmaMaheswari Selvan, AVA Corp was the eighth session. In this session the speakers were explaining about the selenium tool and how to use it for data driven testing.

So in this way 12th May is over and in the end I had a talk with experts for some real time problems in my early projects.

On 13th May 2011 we have reached the conference spot in the same way. After the registration the conference just started with a welcome note. After the welcome note we are given with some highlights for the events for that day.

The first session was about KEYNOTE by Sai Chintala, Applabs, India “Effective Performance Testing”. In this session Mr Sai from Applabs has explained about the basic concepts of Performance testing and how to do effective performance testing.

“Basics on Security Threats, Challenges and Countermeasures” Speaker: Narsimha Reddy, Infosys was the second session where Mr Narsimha from Infosys has explained core concepts of security threats for any application. Where in this session the discussion was for SQL injection, XSS attacks, Script inject and so on.

In the third session we had “Perform Fuzz on Application’s Web Interface”, Speaker: Aniket Kulkarni, Symantec. Mr Aniket Kulkarni works in Symantec as application security researcher. He was explaining about fuzzing techniques to test any application for security and load testing. How to fuzz any application and crash/break the application and check the logs for the crash. So in this way one can encounter about the security holes in the application. Also Aniket has explained how to capture packets transmitted
and analyze the packets for security threats. Overall this session was really nice and helpful.

“Benefits of Automated Security and Performance Testing of SAP HCM Applications” Speaker(s): Abhinav Gupta, Chandrashekar.S, Shahbaz Ali, Sharita Priya Castelino, Infosys was the fourth session. This session was all about SAP based application.

KEYNOTE by Mahesh Saptarshi, Symantec India, “Software Security – Technical Challenges”. This session was all about software security and negative testing. How can negative testing can lead to software security threat and business risk factors.

The sixth session was on “Performance Testing: A Catalyst for Swift IT” Speaker(s): Ashish Tyagi, Siddharth Joshi, Vivek Bal, Capgemini. Mr Siddharth explained about the performance testing and its implementation in web based application.

“Issues during Performance Testing and Solutions using various Tools and Tricks” Speaker: Amitabh Kaushal, IBM was the seventh session. In this session Mr Amitabh was explaining about the various tools and their usage. Some commercial and open source performance and load testing tools.

All sessions were really informative and useful. However I came across these things which I have learned and which will really add value to my current and future testing work:

• Agile methodology
• Automation testing and creating own automation framework
• User experience Test Automation
• Regression testing using automation testing
• Data driven testing using database, excel sheet, and flat file
• Data Driven Automation Testing of Web Application using Selenium
• Effective performance testing
• Application security threats, challenges, and countermeasures
• Fuzzing technique for web based interface
• Software security testing
• Various tools and tricks for performance testing of application

Likewise attending the sessions I got the prospect to meet, share, and interact with different technology experts from different other companies. We shared our views and work procedure on software testing and methodology we follow. This conference helped me in building my network in the world of Software testing,which will help me getting support and sharing opinions with these experts on different problems from time to time that we face in our day to day work life.

This conference was really a wonderful experience for me. I got to know so many new concepts, tools, techniques, and methodologies which is really going to help me in my work. In fact I have started working in the manner as we have learned from this conference. Well in this international conference I have got the exposure to real time industry experts and their views.

I feel lucky to be a part of Mindfire Solutions, not only for allowing me such a huge opportunity to explore knowledge. This is the beginning of opportunities and there is a long way to go with Mindfire on the path of success. This is really a grand experience for learning matter.

Mindfire is our company which always promotes, enables, and supports in all the initiatives for the career growth of all its employees. I feel good when I get these kind of opportunities. Well this makes me feel special in Mindire. I am also looking forward for the opportunities like this in the future to sharpen my skills and expertise in the Software QA Testing and Quality Assurance.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Software Testers: Who is your boss?

I was spending some time with a software test engineer (Software tester) recently and have a simple realization to share.

“How come this runs so slow?”
“Oh it runs just fine, just some problems only in IE browser”
“Why?”
“Probably IE’s Javascript doesn’t run so well”
“Yes but soooo slow?!?”
“Yes… but my Lead has seen it and knows about it”
“Which means it doesn’t matter?”
“Well not that… client has also agreed to Chrome-only support”
“The site will support only Chrome?”
“Yes, we described the problem and got client to agree to it”
“Do you have it in writing?”
“Yes”
“Very good. But why is this the case in first place?”
Developers told me the 3rd-party component doesn’t run on IE.” (look on face: how does it matter since client has agreed anyway)
“You mean a best-selling web UI component library doesn’t run well on IE???”
“Yes that’s what developers told me”

After some pushing and research, it finally turned out that developers had to use another method of data access and voila! – everything ran smooth on all browsers.

No doubt, the incident above and its subsequent resolution display several best practices. Get acceptance criteria in writing. Make sure client understands limitations. Don’t trust explanations! Be hard-nosed. Use common sense (how can a best-selling web UI library possibly not function well on IE!). Don’t let your personal love override the obvious (Chrome is great but that doesn’t mean you can force users to switch).

An aspect I would like to focus on is: to whom should the software tester be responsible? Project Manager? Team? CEO? Entity/person who is paying for work?

In the course of project teams and organization and “reporting structure” and salary and revenue and a zillion other things, we forget what is obvious. In reality, the Lead/Manager doesn’t matter. The developers do not matter. The CEO doesn’t matter. The client doesn’t matter! They are all illusion, maya.

The only person who matters, the only person who finally decides, is the user. A software tester is responsible towards only the system being tested, and users of that system.

In the short run, you can get away by keeping your Lead/Manager happy. You can get away by accepting superficial wave-of-hand explanations from web application developers. You can get away by getting clients to agree to something illogical. You can get away by using bureaucracy to cover your behind – “I have it in writing”.

You can get away because the short run is imperfect. The short run can hide. But the long run is all about the right thing. The good thing. The correct thing. Quality. Truth. Details. Finesse. Care. The long run exposes everything.

The right thing here is to find and fix the problem, or find a workaround if it cannot be fixed.

If you do not, all might be well at the surface. But when the user rejects it in the marketplace, everyone loses. And why? Because we ignored her when we should have paid attention. We got confused by irrelevant intermediaries (colleagues, lead, client, CEO) and forgot who the software is being built for.

In the example above, the user is taken for granted. The user is actually expected to tolerate slowness, or switch her browser if she wants to enjoy our system. The IE user votes No and many users are IE-only. Yikes, that pinched!

As a software QA tester (whether for a web site or web application or desktop system or mobile app or server software and so on), you are the user’s voice and warrior. Don’t accept reasons. Make your point. File issues where you see issues. Revolt till someone notices. Help in getting the right thing done. Ride alone if you have to, but ride the right path.

Honestly, you are not alone in getting deceived by quick things. It is the same thing in business. Business gets confused by targets and profits and “customer satisfaction metrics”, because those are the quick and measurable things, although they are not what business is about. Business is about doing the right thing for people, not only the legally right thing.

Software testing is about doing the right thing for users, not only the officially right thing.

Thanks!

Author – Chinmoy Panda

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •