When an action is atomic it means the entire action happens without interruption. For example, if I have:
driver.get(url); waitForLoadingToFinish(); This code appears to be fine. If we assume the waitForLoadingToFinish() works then this is good. However, what happens if the page loads so fast that the loading icon does not appear. So sometimes I need to wait for the icon to appear then wait for it to disappear. Other times if I wait for it to appear it never appears. The code inside waitForLoadingToFinish() is NOT atomic. It is checking for two or more events but not at once. It will check the first event, then check the second event. If something changes between the first check and the second check it could cause a deadlock or starvation (pre-emptive operating system terms) to occur. There are ways to deal with preventing deadlock or starvation but now you are making your code more difficult to maintain. Usually what happens is you get the test to work with the timing on your development machine. When you push it to the build environment it fails because it has different timing. Or it works for one developer but not another developer. Or it works for months then you get a system update, timing changes and the test starts failing 50% of the time. Additionally, if you don't fully understand the entire technology stack, you might have missed a scenario and the error condition still exists. The error condition might happen less frequently but this is really frustrating. If the test suite fails occasionally and it turns out to be a bad test, the developers will start to mistrust the tests. If the code is always working and the tests are occasionally failing, the developers will start trusting their coding ability and ignoring the test results.
5 Comments
Many tester waste a lot of time over the script by wrong method call. A method call, especially one which goes from the client (Selenium bindings) to the code embedded in the web browser (WebDriver) is expensive (time consuming).
Here I would like to write down a typical example : The executing time of: driver.findElement("parent").findElement("child"); Is a lot slower than: driver.findElement("parent child"); Let's think about CSS. Adding a few milliseconds per web element find doesn't seem like a lot but in an entire test suite it could easily double or triple execution time. Scrum is an iterative and incremental agile software development method for managing software projects and product or application development. In the present time agile software development is a hot cake in the software development companies. A large number of companies in the software industry are implementing the agile software development without any previous experience and without a trainer as well. In many case they become successful but they always lose a handsome number efficiency. While working in the agile software development we closely observed the gap and the miscommunication between the development and quality assurance people. So here we are going to propose a managed approach which will going to improve the communication between the development and the quality people and in a fact in among the whole team members.
The agile methodology is a quite common software development method. Many famous and successful companies got a good rate of success by following the agile software development methodologies. Most folks know that agile was a direct response to the dominant project management paradigm, waterfall, and borrows many principles from lean manufacturing. Now the IT market is very much competitive so that we see most of IT companies compete heavily with the others in the market. This is quite interesting thing is that all the companies claim that they always deliver bug free software, high quality, reliability, scalability, etc. But the reality is that there are no products that are free of bug. So that what we can do is try to eliminate the bugs from the product by following worthwhile processes and methodologies. We ensure that the product is stable enough and sanity checked. This is the key factors that determine the success of a project. Just run to the project deadlines or completing those well ahead of schedule without any proper process in place will definitely result rework that will cost the customers a lot more and finally company will lose that customer. In the traditional way when we are implement the agile software development then, often we are falling down or lagging because lack of a solution. Personally when I was closely working in the Agile software development then I found many stressful gaps between software quality assurance, software quality control and Agile software development methodologies. From my experience I gather the knowledge and finally designed a more efficient process that will reduce the gap between these three terms in to the minimum. The main goal of any business is the customer. So the industry has to produce a product with very low percentage of bugs that can be discovered in unusual environments or impossible scenarios. This is the corner stone of quality, success and repeat business |
AuthorI am Masud Parvez. Working as IT Senior Project Manager for RMIT University. Previously I built and run a distributed Test Center. My success was to turn that in to one of the most successful business units of the company. Categories
All
|