I have finished the previous article talking about non-functional testing. Well, let’s continue.
As many of you know, non-functional testing describes tests necessary to determine the non-functional characteristics of the software. Usually, such data include various technical parameters. In other words it doesn’t check the basic functions of your product, but rather its capabilities. For instance: failure resistance, liveness, performance, usability etc.
The main types of non-functional testing include:
- Any type of performance testing
- Installation testing
- Usability testing
- Failover and Recovery testing
- Configuration testing
So let me cover each thing in its turn.
Many developers I’ve talked about web application performance with assume, that the major bottleneck of applications mass is database. Well, in some cases they are right, but who guarantees if it’s true for your particular case. Moreover some websites has no real-time content and most of db queries are cached, but performance still far away from ideal. How to identify the bottleneck in such situation?
A while ago I’ve used various good but not really veracious tools like build-in-framework profilers, wrapping code snippets with micrtotime() snapshots to figure out the slowest part of my application. But finally I came to the conclusion that they don’t provide me what I really want to know.
So, what’s wrong with them…
We all use different version control systems (VCS). Each has its own characteristics, pros and cons but my heart belongs to one – Git. It is enough to know 5 key commands, and presto!, you are a Git user. But at the same time, it is a very powerful and sophisticated tool aimed at resolving situations of any kind.
git commit -am "changes description"
Below I’m talking about my favorite commands (upper intermediate level).
I bet you hear of unit / integration / functionality and many other types of testing, but not sure that all of you clearly understand terminology and feel the difference? This series of blog posts is aimed to dot all the “i”s.
Please note that I’m not going to show you examples of how to write tests here. Instead, the idea is to clarify what each form of testing means, it’s purpose and use in testing software.
Conventionally, all tests can be divided into functional, nonfunctional and change associated tests. In this article we will stop on first type – functional tests.
Functional types of testing cover an external system behavior.
Perhaps many people faced with a situation when potential client is looking for someone to help him in refining existing web site. There are certain pros and cons and in this article I would like to share my personal experience and thoughts on this point.
First of all i’d like to gather critical things both parties should understand:
in the beginning immediate releases are out of the question;
it should be a dedicated person whom you could ask questions as they arise. Trust me, they will occur frequently You can not pass the code and respond to questions once per day. This will take ages
initially it’s better to confirm all your changes as this potentially could affect whole system
it is almost impossible to give an exact budget and timeline; without knowing whole project your figures will be either understated or overstated. Of course the best way to learn the project is to start doing something concrete, but if you claim for final price and timeline in the first day – at least it is not professional
most often maintenance costs more (higher hourly rate) than in case of its development from scratch
OK. You definitely heard of such a concept as Test Driven Development (TDD). When developers first discover all the delights of this approach – this is a transition to a new, better world, where there are less stress and insecurity. But realizing all the advantages of testing is not enough.
Conventional wisdom about unit tests is to ensure that they are intended primarily to improve the quality of your code. Another nice feature is their ability to painless refactoring, because tests will make sure that the original behavior is not changed.
The main argument against automated testing is more time spent on writing them. Indeed, automated testing does not replace other forms of testing.
Moreover some people use the following approach: “Write app and send it to testers (or even to the client directly). When errors are found – fix them and send back the corrected version, and so on. ” This approach may be justified in a situation of “do and forget it” – when you’ll never have to finish or reengineer your code. For some people it works, for other not.
More and more often we have to deny projects where customer asks to do banal HTML/CSS work. Of course the job isn’t all bad, from time to time we get to do real fun stuff too. One of these things is getting a set of brand new wireframes, ready to be converted into html. Starting off with a clean slate, taking with you what you have learned from your previous projects and having no legacy to worry about. Starting of from zero can be really comforting from time to time. But in all other cases, you do not learn anything new doing markup. Perhaps the roots of the problem goes to what type of persona you are: someone can do monotonous work from day to day other is constantly looking for new challenge, wants to set itself ambitious goals and achieve them. This is definitely about us.
Don’t get me wrong. We have a true taste in design and always focus on best user experience possible, but in most cases we rely on professional designer. Moreover we prefer to work with designers who can make all HTML code himself, not just provide a Photoshop file. In such a case, final result has outstanding quality.
Any person do whatever he loves much better. Our passion is in complex and highly loaded projects. Not many people has similar experience and skills (except for start up owners). Try to Google them. Almost 95% of search results are design agencies or so called all-in-one shops. In most cases they are not able to solve non-trivial, complex task.
But that’s just our take on things, I’m pretty interested to hear what part of your job you like best. Don’t hold back.
In one of our recent blog posts we said that are going to gather in one place all links to the best companies / individuals whom we have pleasure to either work with or we simply know or just whose portfolio we really like. All this we have decided to join in one place – Quora Boards. We will continue to expand this list with new “discoveries”. So who feel interest – you are welcome.
Very often while working on large projects it is hardly possible to cope with everything self-sufficiently. Many teams do not keep designer in-house, some are doing web or iPhone development only, but the project for example may need Android or Mac desktop clients, or a very high quality design, which can only be provided by very professional studio. In this case you start looking for references.
It’s like building a grand building. Never happens that from the very beginning to the end it was a single contractor. There are always best people where everyone is doing the work he is GURU in.
Therefore, we decided to have a separate section in our blog called – Regards, where we will list some teams that we had a chance to work with or whose portfolio we really like.
We sincerely hope that this will help you one day!